Those that know me know I have a soon to be 12 year old son, for the last few years we have put him into various summer programs like this one from Cybercamps (http://www.cybercamps.com/) in these programs he has had chances to learn bits and pieces of Photo Shop Elements, Macromedia Flash, Robotics, rudimentary game design and some very basic programming.
One of the programs he was involved in taught him how to use something called FPS Creator (http://www.fpscreator.com/) this is a development environment where you get to manipulate many pre-rendered objects to create your own games; he really loves the thing but he always wants to share his games with his friends and it produces very resource intensive games that wont work well on most of his friends computers (IF they even have computers).
He has indicated what he really wants to do is get these games to work on the XBOX 360, and he heard about XNA Game Studio Express (http://msdn2.microsoft.com/en-us/xna/default.aspx) and got very excited.
This unfortunately raises a interesting problem, how do you teach a kid how to really program? C# is a relativly simple language if you want to do basic things and from what I can tell XNA Game Studio Express does most of the heavy lifting so I think its plausible a motivated kid with the right resources could do this if properly motivated.
The key issue being motivation, when I was a kid (I learned Pascal and C by the time I was 10, long, long story) the bar to create a application that felt as good as a commercial application was relatively low; most projects were staffed by very few developers and the development cycle for the projects was very short (if they wanted to stay in business in the emerging market).
Today hundreds of people of many different disciplines work on the development of a game, these details are lost on kids who just see something cool and say “I want to do that” this is a real problem; that’s not to say that the development tools are not getting better so that you can create relatively compelling stuff on your own without much background but if nothing else a kid can’t just go and do it on his or her own anymore they need parental support.
Its been a long time since I was a developer, and although from time to time I write stuff its more about a escape from the day-to-day grind than anything else; since he has shown interest how do I go about getting him the skills he needs to progress with this interest?
To this end one thing we have done is we have signed him up for more summer programs focusing on technology, this summer he is taking one on C++ (we couldn’t find a C# one); I also spent some time looking at books and found the material to be very lacking when it comes to fundamentals, in the end we picked up a K&R knock off that had been colorized and started working through it just to make sure he has the basic logical structure of a language down.
From there we will see what we do next, I have run across several books that have lots of sample code in C# for games like Pong, Missile command, etc.; once we get the basics down maybe we will try these.
Here are some links for folks if they want to explore what to do for their kids, let me know if you have any others you think are good.
Logo - http://el.media.mit.edu/logo-foundation/index.html
Scratch - http://scratch.mit.edu
KPL - http://www.kidsprogramminglanguage.com/
Visual Studio Kids Corner - http://msdn.microsoft.com/vstudio/express/beginner/kids/
Hypercard - http://en.wikipedia.org/wiki/HyperCard