I Hate Structured Learning
I didn't really realize this myself, but I learn the most out of any given subject without structure. Things like psychology, writing, programming, all of those have been entirely self-learning, and completely unstructured.
I could even say that writing for myself on a daily basis is a lot better than some structured writing classes out there. Confining yourself to a few papers per class cycle really won't improve much; all of the planning is emphasized instead of the actual writing. Not saying that planning is entirely worthless, but it would be much more effective if they had trained the writing aspect over and over instead of constantly theorizing the best method to creating the best possible product. Because let's face it: without practice execution will be the limiting factor, regardless of how good your plan is.
I've learned a ton of subjects without really confining myself to an online class. And more often than not putting myself in an online class setting is going to lead to failure because I have to slog through the things that I'm not interested in before getting into the good stuff.
So instead, how about go about it in a backwards manner, like a branching system? Go to the topic that you are most interested in, and then when understanding needs to be refined, go deeper down the branch, and then deeper, and deeper, until you eventually hit a fundamental principle that you would have learned in the very beginning. But guess what? All of the prior knowledge was primed beforehand, and it spirals back up really really fast. Instead of starting off at the beginning and slogging your way through until you get to the good stuff, the premise is to get to the good stuff at the beginning and then figure out all of the underlying principles behind it.
I don't like it when I have to go through a ridiculous coding course that slogs through variable declaration and syntax in the beginning. We can theoretically learn all of the stuff by starting big, and then honing in on details. As an example, it would be more effective to learn code by aiming to create a small working program and learn as you go rather than learn all the boring garbage and then create the program. By the time you get to developing the program you would have forgotten everything beforehand and you would have to consult the documentation anyway, rendering previous learning sessions useless.
Of course there are things which you can't do this with (mathematics is an example), in which case I'll gladly conform to old methods, but when it comes to learning by myself I am going to take the backwards approach. This way gives you an end goal explicitly. Sometimes we lose the big picture by starting at the very beginning and in the middle of the grind we just think "What is the point of all of this?"
Think of it this way: old learning methods (bottom to top) is like solving a jigsaw puzzle by only looking at the picture once, or even not seeing the picture at all. Half way through you're just like "what in the world am I even solving for?" My preferred learning method (top to bottom) is like solving the jigsaw puzzle by constantly looking at the picture. That way you can see "Oh, that is where that piece goes... and this piece goes there." instead of "What picture is all of these pieces going to make?"