I installed scratch for my daughter, when she was 5. She did a lot of simple things that were like Flash animations. Now that she is 7, she is creating some more complex games, and tons of ideas for games. We've been messing around with Google App Inventor for Android as well, which uses the same framework. She does a lot of MS Office work in school, including Excel formulas, but they don't seem to tackle actual coding early enough.<p>Our next projects will probably involve doing some web development and then perhaps Mindstorms.<p>My first experience in programming was reverse engineering the programs that ran on the TRS-80 we had at school to change the names of the characters in the exercises to be other kids and teachers and allow me to get the high scores on the games. It's a little harder to imagine people starting that way with the complexity of a lot of the software that we interact with, but I tried to give her a flavor for that by modifying some of the image files that came with the games she has installed.
My first (real) programming experience was with PHP when I was 14. Before that, I fiddled around with a bit of flash and ActionScript. I found it so much easier to learn by actually having a project and working out how to make it a reality as opposed to just reading about it in a book.
A long time ago, I also made these kinds of programs. That was on a PET 2001, and I didn't have the luxury of bitmaps back then. I would use the PET's graphic characters as 'actors', and POKE them to the video memory. It started with simple balls, but soon my 'actors' grew into sprites made up from multiple characters (with a square, a few line graphics and a ball you could make a little fellow). POKEing all these characters from BASIC became a bit slow, and that was the moment I started learning machine language (<i>necessity is the mother of invention</i>), and from then on I wrote my PET games in 6502 assembly. That made them blindingly fast! (And very prone to crashing, too ;-)
Reminds me of Turtle Graphics from Logo ( <a href="http://el.media.mit.edu/logo-foundation/logo/turtle.html" rel="nofollow">http://el.media.mit.edu/logo-foundation/logo/turtle.html</a> ). Interesting that programming at this basic level has been unchanged for so long...I guess that means we got it right at the beginning!
This reminds me the story that my deceased father told me. Once upon a time when the c64's reigned in Turkey, He asks me to write down some of the programs distributed with Commodore magazines. Yes, these magazines consisting of 5-6 pages full of GW-Basic code and which are mostly incorrect or incomplete :) And he adds, "Than you who never stands up from the desk did not touched the computer at least a month" :)
This is cool. My son is 8 and I'm trying to get him interested in learning code, but right now he can't draw the line between code and the games he plays.
I was learning C when I was six years old. Definitely helped that my older brother (then 11) was the one teaching me— I wonder if having young children learn from older children might be good advice in general?