I've just finished taking the tutorials in the
Hackety Hack program. This application makes beginning programming accessible to teens and beginner adults. The basic idea is to serve for today's learners what BASIC served for decades ago. It currently teaches Ruby because that's the language used by the people who created it, but they hope that others will adapt it to teach other languages such as Python.
Hackety Hack interactively explains what's going on. It automatically completes sets of characters such as brackets or quotes so that the beginner doesn't forget to do so. It uses the familiar structure of a web interface. It even takes the first comment as metadata to display in your directory of saved programs.
Video games have mastered the art of walking a new player through the interface, letting them accomplish more and more of what their controller can do with that interface. They don't overwhelm a new player with all the options or expect them to figure out every combo for themselves-- they know that's just the way to lose players. Games often have an advisor character that explains things in a way that fits the context of their gradual accomplishments. The tutorial is often disguised as a set of meaningful achievements in the story. Hackety Hack does that for programming. Hackety Hack is still in "version one-half", so its tutorial content has just begun; but when it comes to bugs, I've only found one small glitch in it related to video.
(Speaking of the tutorials, don't spend too much futile time on the extra-credit challenges if you're a beginner. They are there for students with advanced training who already know how to think like a programmer. Deducing how to solve them requires mental structures with which a beginner has not yet been equipped. No matter how much time you spend on it, you're not going to figure it out without more preparation unless you're a genius savant.)
Now that I've finished what little tutorial it provides, I'm going to see if I can figure out for myself how to make a little program I've devised which would be extremely useful to me, called HerdCat. This program will keep track of how often I'm spoken to by volunteers whose work is my responsibility, and reminds me to talk to ones that don't keep in touch.