Actually, I think I've already got the learning thing down. I've been a student for far too long to not know how to teach myself something new. (I have two graduate degrees, both in the humanities.)
In general, learning something new requires motivation, determination and confidence. It will take a long time to master a new skill, and improvement will be slow and incremental. It requires devotion to stick with something, when there's no guarantee that it will work out, and when it will consume a large amount of time. So you need to be able to motivate yourself, because you're going to have virtually no supervision from anyone else, and no one else's approval to assure you that you're on the right path. Luckily, it does, in a sense, boil down to this: you just have to put the time and effort in, and commit to something that will happen after months or even years.
Since I've begun learning how to program, I've used a bunch of MOOCs that are available online. With MOOCs, I find it's best to shop around. The best materials will always be whatever materials work best for you. Always remember that the point isn't just to g do something like a Team Treehouse, codeacademy or Code School lesson for its own sake (i.e., to go through the exercises and complete all of the material). The purpose of your learning is to actually master the skill. One of the great things about these resources is if you're going through a certain program, and the teacher gives a poor explanation, you can just go on YouTube and find someone else who can explain it better. The point is just that you are responsible for your own learning: you have to do whatever is necessary in order to develop a mastery or at least competence in the material. That means that you have to be constantly assessing yourself and asking yourself, honestly, "do I understand what I was just told?" If not, you have to rewatch the last 10 or 20 or 30 seconds of the video, until you do understand. You have to develop the ability to be introspective and evaluate yourself, and to give yourself work based on on your self-assessments. To my mind, being honest with yourself and knowing that you don't know certain things, and knowing what those things are, is one of the most -- if not the most -- critical abilities to have for self-study. Otherwise, you'll delude yourself into thinking that you know things you don't know, and then won't bother to study/learn them.
In terms of learning strategies like some of the ones you alluded to, I take notes when I go through MOOCs. I write down almost everything I hear, usually just because it means that I have to pause the video frequently, and each time take a moment to think about what I've just watched, and how it fits into the larger topic I'm working on. Writing also helps me retain better what I come across. And if I don't retain it, I can always go back to my notes, which can sometimes save time (it can be a lot quicker than scanning through a video on a MOOC or on YouTube). It's better, in my opinion to write notes by hand on paper, although it takes more time.
The one thing that I haven't mastered is how to plan a course for the long term (or, in other words, how to create a curriculum for myself). Since I've begun teaching myself JavaScript, I've had stretches of days where I've been full of optimism, because I knew exactly what I needed to work on, so I devoted myself to it fully. But then I'd get through the resource, and I'd begin to feel aimless, because I didn't know what the next thing to do was. One of the most difficult parts of the whole self-study thing, to my mind, is that sometimes you can fall into a rut, where you just don't know what the next thing to study is: when you get to that point, you'll look over unfamiliar topics, and you'll know that some things will be far too difficult, while others will be things that are already easy for you. The best way to solve this problem is to develop an appreciation for the big picture of whatever you're trying to learn. In my own case, it's been helpful to me that I knew I wanted to go a coding bootcamp where they taught the MEAN stack, because, at the most general level, I always knew that the next thing would in some way or another involve JavaScript or a related technology.