| People learn differently so I won’t pretend my method of learning is the Best Way but for me I learn best “on the fly”. I learn best when I have a task I want to accomplish and I learn enough to take the next step, then the next step, then the next. I’m fine taking “breaks” to learn new concepts as they are needed but I need to see incremental progress to keep up my “steam”. At least when I’m doing something completely new. If I’m doing something I’ve done many times I can write the entire front and backend and not see real results until the very end but if any part is new then it’s imperative that I get something basic working and iterate on that. When I’ve been asked “how did you learn programming”/“how should I learn programming” all I can give is what worked for me. My first foray into programming was my TI-84 SE calculator, mostly so I could make “games”. Then a Java course in HS and then my real explosion in programming: learning PHP on my own. You have to have a goal/desire to propel you forward. With my calculator it was making games, with the Java course the addition of so many control structures (vs TI BASIC) was mind blowing, then with PHP it was the ability to create something that anyone could see anywhere in the world (with an internet connection). But with PHP (and later JS) my learning was in fits and starts as I needed to learn more to accomplish bigger/better things. So my advice on learning a language is simple. Have a goal of some piece of software you want to make and take baby steps towards that learning what you need in the moment to get a tiny step closer. Yes, you will write shit code. Yes, you will probably rewrite or want to rewrite code as you learn more. Yes, your early attempts will seem childish in retrospect. None of that actually matters though, this is about learning, not creating something with 10 9’s of uptime that runs flawlessly. The method of teaching all the concepts up front has never worked well for me. A short explanation and examples of how something can be used is powerful since even if I don’t need or understand it today I will remember that it’s possible and come back to it later when it solves a problem I actually have. Nowadays I do at least scan through docs on languages/frameworks/libraries. Not to absorb every bit but to “prime my index” for later. However none of that would have interesting or compelling to me when I first started programming, I had to see something come alive and iterate on that instead. I still remember the first time I got PHP to spit out “Hello, Josh” and “Josh” was nowhere in the code, instead it came from a GET param. Pure magic. Yes it was stupid simple but that drove me to learn more, to learn about POST, to learn about cookies (you can store stuff!?), to learn about databases (holy shit you can store more stuff! And it can be private!), to sessions, and more. It all started with a GET param and that sense of wonder/magic/excitement. |