A little bit before Father’s Day this year, I mentioned to my wife that I’d found an interesting, fun way to help my three daughters learn more about what consumes pretty much all of my waking moments: Programming.
Here’s what I found:
Like many programmers, my love of programming is a joy in life that I get to experience consistently, and I want to share that passion and joy with my kids.
I also feel like it’s just as amazing to find other kids and share the wonder with them, because their enthusiasm is contagious.
This enthusiasm is why it is so important for all of us as programmers to think about our craft as something we can and should teach to children.
Think about it for just a minute — who’s going to inherit what we start now? Without giving children (whether our own or someone else’s) a good foundation for approaching the future, I feel like we’re doing them all a disservice. It’s never too early to inspire kids about the future by showing them the power of programming.
The best thing that’s happened to me as I’ve started teaching my daughter is that I’ve rediscovered the joy and passion that I had when I first learned how to bend a computer to my will.
Sure, I’m biased in my fatherhood. But I think we can all learn some important lessons when we take the time to teach children about the wonders of writing code.
Keep It Simple
Kids don’t need to know they’re learning about algorithms. In fact, they probably don’t even need to know the word algorithm.
But if you can teach them to get a machine to follow directions, whether that machine is a robot (of which there are several varieties) or just using the Scratch or Scratch Jr. program on your tablet, algorithmic building blocks help kids learn how to better appreciate the language computers speak in.
The most important thing we need to realize about kids is that, just like adults, they all have different learning and engagement styles. So, finding a way to get them engaged at their level really helps increase their interest.
Whether it’s through toy robotics, Lego Mindstorms, or a fun tablet app, if we find ways to make programming fun for kids at an early age, we can help them keep wanting to program computers throughout their lives.
Furthermore, the value of teaching this skill to children is reflective. By thinking about how to explain complex situations in the most simple of terms, you’ be helping yourself learn to break down programming problems into simple units.
Ultimately, the simpler the unit of work that a piece of code is doing, the easier it is to debug and maintain. So teaching kids to code is teaching yourself to write more maintainable code!
Terminology — Who Cares?
At 6 years old, my daughter doesn’t need to know that she’s working on an algorithm, doing incremental programming, or debugging. The terminology in this case has very little value to her, because she can’t associate it with the actions she’s taking, yet.
However, I can teach her useful practices and good habits starting even this young, so that she can carry them forward with her into the future, both in a classroom and in life.
It doesn’t matter if she knows that she’s debugging or using good modularity practices right now. What does matter is that she’s working on problem solving strategy and getting excited about seeing how code transforms into action.
If we can start teaching kids at an early age how to respect the code they write, and do it in a way that keeps it fun, then I have a feeling we’ll have more coders who enjoy doing the work and find it fulfilling and rewarding.
The main thing we want to encourage in kids is a passion for problem solving, using blocks of code.
How to Start Teaching Programming at Home
I can’t speak about the other robotic teaching tools out there, but Dot and Dash uses several different tablet/smartphone apps to help kids learn to control the robots.
By using robotic toys to teach children, we’re tapping into something that they already do all the time. Kids love to tinker with and explore objects in physical space through building, imaginative play, and all kinds of other things they can use toys for.
By bringing programming into the physical space through robotics, it makes the programming steps tangible. It’s more interactive than just changing the way a screen lights up or prints words, and allows kids to be more engaged with the software they’re creating.
So, I’d like to highlight a couple of the Dot and Dash apps here.
This introductory one, called Path, is intended for kids as early as kindergarten or first grade (5–7 years old), and I can attest that my 6-year-old really enjoys making the robot zoom around in random circles and play funny noises in the process.
This one is introductory, because all it takes to use it is drawing a picture of the path you want the robot to move in, and then pushing a play button. It teaches very basic problem solving by moving through a small number of steps at a time.
The next step up, called Blockly, is meant for kids 6 and up—though I can say I also really enjoy using it, and I’m [REDACTED] years old. If you’re familiar with Scratch or Scratch Jr., then this app will feel really familiar, because it uses a similar style of block programming to control the robot.
Once you’ve gotten a kid to master the basic process of making a robot follow directions with Path, you can introduce them to Blockly, because they’re going to realize they can get more specific control of the steps being taken by the robot.
Also, learning to use Blockly requires a small amount of reading skill. Path doesn’t really require the ability to read, just to follow pictographic directions.
There are all kinds of ways you can use your creative muscle and kids’ imagination to challenge them with solving puzzles, robotic or otherwise. The main idea is that they get engaged in problem solving and get lost in the process of doing so.
The other night I got my 6-year-old to use Path to navigate the robot through a maze I made out of Lego Duplo blocks. It was a powerful experience to share the problem-solving path with her in a way that we both connected with at a really fundamental level.
Firstly, it taught her about taking incremental steps, because the first time she tried to do the maze, she tried to solve the whole maze at once. The robot smashed its face into the wall repeatedly.
We both got a great laugh out of watching a robot ram into a lego wall hard enough to knock it over. This face-slamming bug taught her a second lesson—problem solving can be tricky, but it’s also a way to get some really good enjoyment out of life.
As she fine-tuned each of the steps the robot was taking, she started learning a little bit about the third idea: debugging. She made small adjustments to the path of the robot as it went along the maze to make sure it wouldn’t run into any walls.
And then, eventually, it reached its goal. The shriek of joy that came out of her mouth made my day so fantastic!
This little moment of family life helped me realize something: that connecting with the playfulness in a child is a great way to get them passionate about learning to code.
Because playful robots are so much fun, kids will want to stay engaged with the robot, learning to program, not even realizing they’re learning a critical life skill.
If you don’t want to shell out over $200 for a toy for your kids (let’s be honest, we got the toy for me, not the kids), there are ways you can inspire kids to enjoy programming with tools you might already have.
As I’ve already mentioned, there’s a smartphone/tablet app called Scratch Jr., which uses block-style programming to animate sprites.
If you don’t have access to a tablet or smartphone for a kid, https://scratch.mit.edu/ teaches programming using blocks on any computer with an internet connection.
Scratch and Scratch Jr. are popular enough you can find several video lessons on using them to teach problem solving. Similar to the Path or Blockly apps, there are problem-solving challenges that teach kids how to use the tool, and then once they have learned the tool well enough, they can start experimenting and exploring on their own, just as me and my daughter did with the robot.
As long as there’s a path with predetermined steps for the kids to take to level up their skills, they’ll eventually get the idea to start experimenting on their own.
Then you’ll find all kinds of fun programs get made—whether it’s the robot running around the room, or watching animated characters on screen following programmed steps.
Talk to Schools Around You
It might surprise you how much school systems are investing in STEM education nowadays. Public schools have finally started realizing that the future of our country and our planet depends on getting kids really involved in learning creative problem solving.
Most public schools have shared resources like tablets on which kids can use to learn technology skills. And in some cases, you’ll likely even find schools willing to purchase a Dot/Dash combo to use the tablet to teach problem solving skills with robots.
Throughout most of this article I’ve been operating on the premise that you, the lovely reader, have kids (or nieces/nephews) of your own that you can use these tools and apps with. But if you don’t, there are organizations you can volunteer with to empower kids who want to learn how to code.
Summer Coding Camps
Though possibly a bit on the pricey side for parents, you can always get involved with kids and code by connecting with them during a summer coding camp. A couple of good options for this are things like Youth Tech and TechSmart Kids.
Other Kinds of Volunteering
Though you may not necessarily be able to find a dedicated tech camp in your local area, one thing you will likely find an abundance of is organizations that need help from adult individuals to work with at-risk kids.
Look around for Big Brothers Big Sisters or Boys and Girls clubs you can volunteer with, or see if there are tutoring opportunities with other local after-school groups. Often, organizations that work with children really need more volunteers. You might have to have a background check before you can, but I promise they'll be really excited to get help from someone who knows programming.
You can also talk with your colleagues that have kids. I bet they'll have one or two good ideas for ways you can bring programming wonderment to the younger audiences.
Programming is Cross-Disciplinary
The main thing that you can gain by exposing kids to programming, whether it's at home or at school, is the realization that it crosses all disciplinary boundaries.
In Scratch Jr., you can use the tools available to make a movie out of programmed characters on the screen. This activity moves programming into the arena of fine art.
You can also do things like tell the application to repeat two shifts three times, for a total of six shifts. So now we’re doing math. Add in a robot like Dash, who can launch a projectile at a stationary target, and now we’re talking about science.
In order to learn how to use the tools that make these applications work, kids have to read the screen to follow the instructions, crossing into the realm of language arts and critical thinking.
The benefits of introducing programming (and robotics) into a household or school certainly can’t be overstated. The discipline itself brings passion and interest to every subject, as long as you (the adult programmer) use your imagination to determine how to make that subject connected with programming.
Programming Means Magic
More important than anything else, the wonder I experience through the eyes of my oldest child reminds me of the number one most important thing about programming:
The ludicrous speed at which we all feel obliged to move ourselves forward makes it easy to lose sight of this simple truth about programming.
I don’t know about you lovely readers, but the first time I got a computer to tell me, “Hello, Jason,” I just about wet my pants with excitement. Who cares what language I did it in, or whether or not I used best practices?
I got a computer to communicate with me. That made me feel like a wizard with superpowers.
Teaching kids to code will make code exciting for you again, too—in ways you probably haven’t felt in a while.
Find a kid that you can teach to code. See the wonder of it through their eyes. I promise, you’ll feel magical.