4 ms·
I would invert your process. The idea that the best way to learn is by doing is correct; however, if you just decide on "I want to make my own Facebook" when yo
by ChicagoBoy11 10y ago
I would invert your process. The idea that the best way to learn is by doing is correct; however, if you just decide on "I want to make my own Facebook" when your level of knowledge is at "Hello World," you are going to have a bad time.
As a learner/worker/human being, the ideal place to be is what is called a state of "flow", where the challenges you have in front of you are neither too trivial but also not too insurmountable. You want something to challenge you but also not something that will leave you completely lost.
So, my advice is to just flip your process. Take whatever you are learning -- be it through a book, a tutorial you are following, etc. -- and then once you feel confident you've learned some discrete new chunk of skill, try making something on your own that leverages it. But just something that you feel could be accomplished with roughly the skillset which you now believe you have. The best projects follow the mold of "I'm pretty sure I could do [x] now, but I'm not sure."
For instance, if you are learning some framework like Angular, a bad place to start would be "I want to make a real-time chat app". But as you are working through a tutorial, once you learn how to just literally put a stateless component on the screen, you might get to a stage where you feel comfortable just putting another one on the screen that does something slightly differently. Sweet, you got that down. Then, later on, you'll be introduced to managing routes; so if the tutorial you are following is a simple app that shows phones and details of the phones, make one that can show books and a collection of reviews of the books and maybe a link to where you could buy it on Amazon. And on and on and on...
In this way, you are always checking for understanding by doing and can figure out where your knowledge is poor, but never dabbling into things that you have no proper mental scaffolding for which just turns into copying and pasting code you don't understand.
- afarrell 10y agoThis is spot on. One thing to add to it is to hang around people who are working through similar problems to you. The reason is that occasionally one of you will have found a tool or approach that you otherwise won't think to look for but which makes problems significantly easier to tackle. Examples from my path include strace, ag, TDD, DigitalOcean and immutable data structures.
- sitkack 10y agoCame to say the same thing. Flow [1] Proper task breakdown, constant self reflection on what you know and what you don't know. This is harder at the beginning that it is after you have some context. Design the smallest possible experiment to understand a concept, even simpler than that. The goal is understanding, not the complexity of the task. These can take from 5 minute to 4 hours or longer. Integration and unit tests are excellent (or an analog in the non-computer domain you are trying to master). You need to prove to yourself that the knowledge is correct. Seek peers and exposure to new ideas, techniques, context. You need to be continually building context, otherwise you won't know how to process or anchor new information. Also take a look at some books on learning theory by Piaget [2] [3], Papert [4] [1] https://en.wikipedia.org/wiki/Flow_(psychology) https://en.wikipedia.org/wiki/Flow_(psychology) [2] http://viking.coe.uh.edu/~ichen/ebook/et-it/cognitiv.htm http://viking.coe.uh.edu/~ichen/ebook/et-it/cognitiv.htm [3] https://en.wikipedia.org/wiki/Constructivism_(philosophy_of_education) https://en.wikipedia.org/wiki/Constructivism_(philosophy_of_... [4] https://tltl.stanford.edu/content/seymour-papert-s-legacy-thinking-about-learning-and-learning-about-thinking https://tltl.stanford.edu/content/seymour-papert-s-legacy-th...