I took a programming class in college, but that is the extent of my formal education in /tech/ type subjects.
Later on, I learned Perl because I wanted to solve a math problem I saw in a science magazine. A computer wasn't necessary to solve it, but I didn't have the mathematical maturity to do it "the right way", so I had to brute force it instead. Thus, Perl. I used this tutorial: https://users.cs.cf.ac.uk/Dave.Marshall/PERL/
Most of my learning has been dictated by expediency. I don't think I've ever said to myself "I'm going to learn Python today." Rather, I have something I want to do, or a problem I want to solve, or something I want to automate, so I try to figure out from there how to go about getting it done.
When it involves learning timeless concepts, e.g. different types of algorithms or data structures, I'll often try to find a good book on the subject.
When it involves learning a new programming language, if the language itself is still in development, I shy away from using books, as they rapidly become outdated. In that case, I look for tutorials online that appear to still be maintained, or are part of the official project. But after having learned how to program in general, it's often more efficient to just refer to the documentation for the language (if it's good) and code examples. I never followed a Python tutorial or course, for example. I already knew Perl, so I just read the Python docs to figure out how to do what I wanted to do.
MOOCs and self-paced learning courses (the materials, anyway) of the sort offered by MIT could be a great resource for the right kind of person, but I don't have the discipline to do those.
Lecture-type videos can be good for somethings. I really don't care for screencast-type videos, however. I think those must be hard to do well.
So, for me, I tend to have a goal or task in mind, then I work backwards from that, figuring out what I need to do in order to reach that goal, then depending on what those things are, I look to different types of resources as appropriate. Might not work for everybody. Works okay for me.
Message too long. Click here to view full text.