For the past few months I've been mentoring kids and presenting to classrooms on how fun it can be to work as an engineer. Earlier this year I took on an apprentice via the Spark program. For 10 weeks, Alex, a 13 year old from East LA, came to our shop and we programmed games together. In no time we had Pong and Breakout clones. We learned the limitations of Scratch (e.g. no programmatic creation of sprites) but it didn't matter, Scratch is an amazing tool for teaching kids how to program. Its all-in-one nature makes it easy for anyone to pickup. Next we started on PacMan. This proved much more difficult given the boundary detection and the logic of the ghosts. Alex did a great job and the whole experience taught me a lot about how to teach programming. I highly recommend this experience to any professional. Spark will hook you up with a kid who wants to go into your field and there is almost no substitute for direct mentorship.
NFTE is another great program that pairs professionals with kids wanting to start their own businesses. They provide opportunities to coach kids on business plans, present to them on steps to launch their project and many more! The time commitment is less than Spark and really great.
Tools to learn how to program
MIT's Scratch: Cross platform tool that makes programming easy
Codecademy: Easy to follow, online lessons
PeepCode: Programming tutorial screencasts
Drawbot: Mac OSX tool to to teach Python
Tools to learn electronics
Modkit: A Scratch-like interface that makes it easy to program microcontrollers (specifically Arduino)
LittleBits: A LEGO-like construction set to make simple electronics interactions
Resources for Robots
FIRST: Middle and high school robot competitions
Thymio: Small robot for teaching
Other interesting resources
Institute of Play: A group dedicated to helping kids learn
GameDesk: An organization using game play and game mechanics to rethink education
Gamestar Mechanic: A tool that simplifies building your own games