There's something I've rarely seen pointed out about the kind of online educational experiences we provide at Code School, it's how easy we make it for people to screw up.
That seems rather contrived but screwing up is not a small matter when it comes to learning. Our inhibitions as human beings make us go to great length to avoid failure. Few people associate it with a positive experience. And if you think back to your experiences at school (good luck if you're still going through it), try to picture the number of times you had an answer to a question posed by one of your teachers but sat in silence for fear of getting it wrong.
You didn't learn that day. You wasted that opportunity because the fear of embarassment was greater than your self-confidence.
Now what if your initial exposure to new information was made in a context in which social pressures were taken out of the equation? What if you were shown concepts and asked questions about them in a shame vacuum?
That's precisely what can make practicing through interactive challenges such a fertile ground for growth-inducing failure. For instance, most of our students at Code School put in dozens of attempts before they even consider asking for a hint.
They're far more active towards their learning experience than I would wager the majority of High School and College students are towards the lectures and labs their participate in.
As shown by this excellent Wired article and the studies it presents, a student's mindset towards failure can have a dramatic influence on how well they learn. If we can foster an environment where students only care about disappointing themselves when they screw up, I think we're on the right track. And it may even catch on in the classroom.