What is the next step in programming software for kids?
I've written often about experimenting with programming tools for kids. Ben loves to play with software, especially game making programs. Scoble's link blog (a great resource) brought an interesting application to our attention - Scratch from MIT. It's another visual programming tool and Ben has already had fun creating things using it.
I think what's missing from all of these block-based, visual applications (like Lego Mindstorms, Alice, Squeak, Processing, Power Game Factory, Microsoft's now defunct experiment - Bitman's Place, etc...) is something to help kids transition from blocks to code. Many of these tools are free, open source, labors of love, so the fact they exist at all is a testament to the incredible effort and sacrifice of many people.
The limitations of the existing options is they are essentially sandboxes - places to play and experiment (again, good things), but they don't help you get from one level to the next. I think there's potential, though, for something truly special to be created that could really teach, encourage, and entertain students to dive deeper into development. What exists now exposes kids to concepts and promotes experimentation (both important things), but if you want to move beyond this, the next step is a blank page in a text editor (or an alternative such as Dreamweaver or Visual Studio Express) and a book on HTML/CSS, PHP, Python, Ruby or C#. Tutorials are available for all of these, but all of these tools and resources exist in a vacuum. And who likes to vacuum?
What I envision is software that is more all-encompassing and presents the entire process as a journey and incorporates some of what makes games so successful. The current environments lack steps, goals, and guidance. A ninja theme (or black belts, Hogwarts, or the Star Wars world of padawans and Jedis) would be perfect for this - an interactive training environment where kids learn, are tested, and slowly work there way to higher levels, eventually reaching ninja or Jedi status. There should even be cool things (even full games) that are unlocked as they go, a huge motivator in most games.
The industry regularly bemoans the lack of developers and engineers. Can you imagine the result if a core group of talented people created something like this with the cooperation and financial support of the largest software and game development companies? What if Halo 3 was only available for the first month as part of a programming universe where the only way to unlock it was reach ninja developer status?
It looks like Electronic Arts has already taken a step in this direction by underwriting and helping develop Alice 3.0, including incorporating a lot of the art and objects of The Sims. The goal is for the "new programming environment to become the national standard for teaching software programming." Look for it next year.
In the meantime, Ben and I are going to brainstorm this a little more and imagine the possibilities. I think there's something here.




Have you come across http://www.kidsprogramminglanguage.com/?
Posted by: Andrew Norton | June 04, 2007 at 08:25 AM
That is a interesting site, I hadn't thought too much about kids fiddling around with programing game software-- http://www.Phogram.com
Posted by: Kyle Minckler | June 04, 2007 at 11:07 AM
The transition from tools like Scratch (I'm a fan) and Alice to "real" programming is something I've been thinking a lot about. What do you see that transition looking like? A conversion of the, for example, Scratch program to a real language or something else completely?
Posted by: Alfred Thompson | June 06, 2007 at 09:34 PM
Andrew and Kyle: Thanks for reminding about the Kid's Programming Language. I had forgotten about it, but now remember why we hadn't made much progress with it - it's PC only and we're a Mac family. Hopefully we'll have a Parallels soon so we can give it a try - looks promising!
Alfred: That's exactly what I'm trying to figure out as well. I do think it's important for a production language to be used as early as possible - Ruby, of course, would be a good candidate (which the "Learn to Program" book uses). Shoot me an email and maybe we can continue this conversation. Thanks!
Posted by: Brian Bailey | June 07, 2007 at 09:31 AM
Hi Brian. Scott Hanselman posted on this topic last week. Thought you might be interested:
Teaching Children and Kids to Program the Old School Way
http://www.hanselman.com/blog/TeachingChildrenAndKidsToProgramTheOldSchoolWay.aspx
Posted by: Jim Minatel | June 18, 2007 at 07:02 PM
I saw Hacketyhack (http://hacketyhack.net/) today, and thought of this post.
It looks very cool, I wish it had been around when I was a kid (which is impossible on so many levels it's hard to contemplate it)...
Posted by: Phil Crissman | June 21, 2007 at 01:08 PM