Scratch.mit.edu Scratch isn't bad for learning all of the "primitives" necessary for anyone to learn programming. Like 90% of anything involving learning, it's mostly up to individuals--their motivations and their goals. And if you would like your kids to learn programming remove any/all computer games from the house except for "Scratch" and see what happens. From my experience Scratch can teach: Encapsulation, variable scoping, event-handling, boolean logic, and almost any concept someone would like to pursue ( science, math, physics, chemistry, and the basics of computer science too) if they're really interested in doing so. Scratch can also use real-world inputs via a Pico board (which contains a variety of analog-to-digital inputs) and that presents an incredible opportunity for a student to connect programming to physical inputs. For most programmers our interaction with A2D is keyboards, joysticks and mice. Scratch opens that up constructively by supporting something like the PICO boards. Most of the time it's not the unsuitability of programs we want people to learn with--we have amazing operating systems and computer hardware to support anything. There are things out there like Scratch, (ALICE for example) which offer different things. I would say the real barrier to people learning programming (or anything) is people-based. Whether that is a lack of inspiring teachers, or students distracted by very polished software or overly complex "learning environments", or someone realizing that they will never, ever be able to remake their favorite video game so they don't bother learning how to program; ultimately it's up to people to learn how to learn and to motivate themselves. I say this as a parent who provided their kids with video games along with every possible opportunity to learn anything (programming/administration/development with any and all available programming languages and environments). If you want someone to learn programming you will need to sabotage every other digital joymaker and provide them with an opportunity to entertain themselves by making things digitally. It's no different than leaving a crying baby in the crib with a bunch of toys instead of rushing in to pick them up--they will either learn to entertain themselves or cry themselves to sleep until they learn.