Famed Studio Ghibli head animator and director Hayao Miyazaki has often said that he dislikes modern technology, including gadgets like the iPad. He may seem stiff and old fashioned, but I think we need to put these statements in proper context. To quote him from an interview three years ago:
Young people are surrounded by virtual things. They lack real experience of life and lose their imaginations. source
To a certain degree, I think Miyazaki has a point. If your kids borrow and use your gadgets, it's probably to play games or watch their favorite music videos. A lot of those activities do not amount to anything more than consumption.
But, I disagree with Miyazaki in assuming that all they can do is make children 'lose their imaginations.' On the contrary, gadgets can be great creative outlets. Taking photos, making music, and making doodles are some of the great things kids can make that can spark their creativity. However, if you want to jump start that creativity into developing high level skills they can use later in life, your techie kid should learn programming.
Do not fret about a steep learning curve or boring knowledge base, programming doesn't have to be all that. Here are a few suggested applications (actually, programming environments) that will help your child get started in the world of programming.
Developed by the MIT and boasting a predominantly below eighteen-year-old user base, Scratch is a programming language that caters to children. Instead of having to learn jargon from the ground up, users form logical sentences to input commands on a cheery and colorful GUI. Aside from it's easy to learn but highly flexible interface, Scratch credits much of its success to allowing users to personalize their work, as well as to remix and reuse other people's Scratch projects into new ones. As such, Scratch creations are all made under Creative Commons licenses.
A Carnegie Mellon University project, Alice is a 3D programming environment, much like Scratch, designed to interest children with its ease of use based on forming logical sentences. A variant called Storytelling Alice, created by Caitlin Kelleher for her doctoral degree, is even better at doing this than the original. Storytelling Alice focuses on a particular application - telling stories using Alice's ability to create 3D animation. You might think this is a minor change, but it's been proven to engage more children - particularly young women - into the world of programming. Therefore, for those parents blessed to be raising techie girls, Storytelling Alice is an ideal starting point.
KidsRuby uses a different approach from Scratch! and Storytelling Alice in teaching children how to program. KidsRuby actually runs the programming language Ruby in the process of teaching you how to use it. What makes KidsRuby child-friendly is that it provides dual screens for you to see what you wrote in and what that code would output. KidsRuby also allows you to play with Turtle graphics, and will work with Hackety Hack and Gosu, other tools that will help your child learn Ruby.
Truth be told, Ruby (as well as its most common application framework, Ruby on Rails) is hard to master. If your child ever was going to become a programmer later in life, learning the basics of Ruby early on will give them the edge they need.
Initiated by Google and now maintained by MIT, App Inventor will allow you to make Android Apps without any knowledge of programming. Using either an Android emulator or device, you will be able to test your app real time even while you are developing it, and you can produce an installable standalone application once it's completed.
App Inventor was not designed with children in mind, so it might not be as kid-friendly as others in this list. However, it still uses an easy to understand GUI, and you will be able to make real apps that will run on Android devices. This might be the ultimate programming app your techie kid has been looking for.
All these programming environments are open source and will work on Windows, Mac or Linux.
Are your techie kids learning to program now? What else would you recommend? If you are using one of the above mentioned applications now, feel free to share your experiences here as well.