So I have actually been teaching a class to a dozen beginners, taking them from HTML/CSS -> python/javascript and deploying apps on the web.<p>What seems to work best, is to get them building <i>anything</i>, and then critiquing as we go. So, they're all hacking on personal projects, and all kind of making the same mistakes, and we go over what they've written and then move on to the next step.<p>As they run into various hurdles, it opens up lots of discussions on some of the finer parts of things, which would have made no freaking sense to them earlier.<p>I know you're talking about a slightly more advanced level, but I'd say the technique still stands: Keep hacking on your own (as this is kind of the most important), but put your code out where someone can make fun of it, get it reviewed and critiqued, learn to anticipate criticisms, and you'll be a great developer in no time!