Teaching kids to code offers a lot of challenges that you don’t run into when instructing adults. Kids don’t have a ton of real world experience, so a lot of analogies fly over their heads. Abstract thinking can take a lot more effort, so you need to keep things more concrete. Many kids have extremely short attention spans, especially in groups. And if there isn’t a cool payoff almost immediately, they are going to get bored and zone out. All the lecturing in the world won’t get the lesson into their heads at that point.

When teaching children programming, the goal is to empower them to understand the everyday systems they already use, and to know they have the skill to pick this kind of stuff up, both now and later in life. Not everyone wants to do software development for a living, no matter how smart of a career choice it is, but programming is creeping more and more into other fields every day.

Find your resources

When I was looking for a text to teach coding, I wanted something that spoke to children at their level without coming off as boring or condescending, and that also had projects available almost immediately even at the rudimentary learning level. I chose Python for Kids (in its first iteration, an e-book titled Snake Wrangling for Kids) by Jason Briggs. Later when some of my new-to-programing friends talked about their frustrations with the online learn-to-code resources aimed at adults, I started giving copies of this book to them too. To this day I still recommend it.

The following websites are valuable to new learners as well:

1. code.org
2. Khan Academy
3. codecademy
4. O’Reilly

Pick a project

Programming involves a lot of choices that can become overwhelming to those who don’t yet have experience to make informed decisions. Making sure kids have a project in mind will help narrow options, which in turn will help prevent them from quitting in frustration.

Selecting a platform, such as using a Raspberry Pi, will help with questions like what operating system distribution to use or programming languages to learn, as there are recommendations available, and a large community for advice. Some boards have their own operating system designed specifically for use with that board, which usually means better documentation regarding the way they work together, and better support when a programmer runs into problems. And if kids know or are more comfortable with so-called front-end languages, there are boards that use those as well.

NodeBots is an ongoing meetup specifically to build JavaScript robots, and incidentally, a perfect place to find a project if you don’t already have one in mind.

Code on

Once a programming language is learned, others become much easier to pick up — kids could add iOS or Android programming to their initial language and actually make their own apps. Whatever you do, make sure they keep programming past their first project, so that they gain even more experience, and build on the skills they already learned. It may not end up giving them a new career, but it will change the way they look at the world and the things they use every day.