I'm planning on teaching my little brother how to program and would love to get ideas of what to show him first to really pique his interest and make him excited to learn more.
Have you looked on the Internet?<p>There is a great amount of things out there for doing this:<p>-) Arduino (arduino.cc): produce open source electronic gadgets, often DIY and customizable (might spark his interest, as many gadgets are also fun to use: e.g. tv-b-gone (only building, but fun to use)<p>-) Lego (<a href="http://mindstorms.lego.com" rel="nofollow">http://mindstorms.lego.com</a>)<p>Very easy approach to programming especially designed for children<p>-) Scratch programming Language (<a href="http://scratch.mit.edu/" rel="nofollow">http://scratch.mit.edu/</a>)<p>Easy to learn programming language especially designed for children (Age 6 and upwards)<p>and btw: don't forget your own motivation<p>If you are willing to teach him in an interesting manner (and in my experience kids can be motivated to take a shine toward anything if it's done with a great approach), then i can even imagine that he might have fun playing around with html, setting up just4fun websites (just don't allow him to do so on the web ;).
The first time I programmed anything I was like 8 or 9, on a 486. It was QBasic. The thing I really loved was visual stuff and audio stuff. Text to the screen, feh, I wans randomly placing circles, with random sizes and colors, and using that same stuff to also make my computer beep accordingly.<p>I loved that. I honestly didn't get much beyond that, but it was pretty cool to make the screen change.<p>Scratch is probably good for that. That said, I'd probably start with a language like ruby or python if I was going to teach somebody 12 or up, simply because he can continue to learn it.
I would build a long term project together. Maybe a website. Buy him a domain with his name in it (he'll get a big kick out of showing it off to his friends). Start with just static html and build it about something which interests him. Over time you can build little js calculators or what have you. In a year or two introduce a back end language like python/ruby. Teach how to handle data submissions, handle users/members, etc... Something like this can start simple and get as complex as you wish over time.