It was the snow that brought my kids to coding.
The tension between their need to do something so they wouldn’t drive me crazy and my need to not have a day wasted doing something as passive as just playing video games led us to code.org, a page that promises to begin to teach children to code with a single one-hour lesson.
My son spent the hour learning the basics of if-then statements by dragging simple boxes of instructions around the screen, snapping them together to create simple programs. You tell the character move forward, and then tell it what it do based on what it encounters next.
The exercise is branded to look like Plants vs. Zombies, and the basic idea is interesting: The child has to figure out what needs to be done, and then execute it using the tools available to them.The blocks of code have to be snapped together in a way that tells the cartoon zombie to get to the smiling flower.
This is done using Blockly, a visual programming editor, and you can click on a button at any time to see the colorful blocks of code turn into the basic Javascript that is driving the program. The first hour is very basic, but my son began to flip between the Blockly images and the "real" code, trying to work out what each character did in the greater program. The next few days of lessons proved just how much they were learning, and the lessons went well beyond games and code.
Why this is important
The hook is, of course, both my oldest son and daughter want to learn how to make video games. My desires for these programs run much deeper, although the idea that they’d want to jump into game creation is appealing to me as well. Everyone has ideas about what games they’d like to make, but the trick is to learn the skills needed to actually execute on those ideas.
"In my nine years in the industry, I've yet to meet someone in an ‘ideas guy’ role. At every level of game development from indie teams to big studios, the expectation is generally that you'll bring some identifiable skills to the table — everyone is an idea guy," Aaron San Fillipo of Flippfly Games told a fan who wanted to make games without learning to code. "Game directors exist, but it's like being a movie director: You need to earn that role through years of experience. Often a game director makes use of of many practical gamedev skills, in addition to management and planning."
This isn’t meant to discourage anyone. If anything, the message should be empowering. "If you want to work in games - learn to make games!" San Fillipo wrote. "There are lots of tools and resources out there for creating games and learning the craft."
So there we were, with both of my kids on laptops, learning to code. They ran through the first hour with only a few hitches, so I created accounts for them in order to get started with the deeper lessons. The first series of tests and instructions was estimated to take around 15 to 25 hours. Afterwards there are links to programs that allow you to test your skills or expand on them. Khan Academy has free classes that teach the basics of Javascript. Code Academy promises to teach the basics of CS. There is a link to free basic classes in Python.
They may want to learn how to create games, but I want them to learn how hard it can be to create things, and to respect that process. This is something that I see often in my work as a reporter with a focus on games and technology; people who wonder why a company or a developers doesn't "just" do this or that to make the game better. Few people understand the mammoth undertaking of creating a game, adding a feature, or changing some aspect of its design.
I’ve had the privilege of talking to id’s John Carmack a number of times about games he’s worked on or technology he’s trying to create, and he’s often open about his frustration with the tools he’s using and the challenge of bringing something from idea to reality. When you can only paint a flower, knowing that Picasso sometimes shakes his brushes in frustration makes you feel better about yourself.
The respect for an idea property executed, and the work it took to get it there, is complex. My children were learning how damned hard it can be to get that zombie to touch the flower. They’re moving their logic blocks and figuring what why the zombie stops at some points and not others, and they’re trying to hit the minimum amount of blocks needed to fulfill each goal.
Some of the puzzles are easy to solve with a large number of these code blocks, but then the challenge becomes figuring out how to do the same thing with the target amount of code.
The children and I have a conversation about elegance in code that night. We talk about the important of efficiency and cleanliness in programs and logic. Mostly they just want to earn the trophies, so they remove block by block to try to figure out how to get there in as few moves as possible.
They may not understand the importance of elegance, but they’re learning how to get there.
Bigger lessons
The smiling millionaires on the video for code.org feel misleading to me, there is little evidence that they spend any amount of their day coding, and learning Python isn’t exactly a straight line to riches and fame, which seems to be a subtext to some of the points being made.
I don’t think my daughter is going to learn the basics of Javascript in a few afternoons and code the next Facebook, but I do know that she’s experimenting with a different way to learn, and that could offer advantages throughout her life that go far beyond "just" the mechanical, creative and still useful act of coding.
What’s striking about these lessons to me is how they diverge from the children’s normal schooling. They are told something in school, they are asked to practice it and then they are given a test. Each answer is marked right or wrong, and that is used to determine how well they’ve internalized the lesson.
The courses they’re going through in these free coding introductions are much different.
There are no multiple choice tests, nothing is ever directly marked "wrong" in a way that impacts their final score. They construct the program, see if it works, and then they try to fix things when it doesn’t. They have time to sit back, chew on their fingernails, and think about what to do next.
Every missed step gets them slightly closer to the goal. It allows them to learn by doing, and to iterate on their ideas safely and without judgment. There is no discouragement of a failing score, just the idea that they need to learn from their errors and move ahead.
My daughter can become frustrated and withdrawn when she’s frustrated by a series of math questions or concepts that she can’t grasp, but the structure of the coding lessons somehow keep her from becoming frustrated. When they get stuck they come get me and we try to work through it together.
Few people understand the mammoth undertaking of creating a game, adding a feature, or changing some aspect of its design
I know very little about coding, and am going through the courses at the same pace, so the first thing I have to do in these situations is to take a step back and make sure I understand the question and the lessons leading up to it. If you want to keep your children from giving up, show them that they’re learning something as well, if not better, than you are. An hour of coding took me, to their surprise, an hour.
Showing your children that you’re often just as lost as they are is a powerful thing, and the sense of achievement we share when we sit down and work through a problem is amazing.
What other school lessons teach children that the answers are there for the taking if you’re willing to experiment, that slow and logical thinking is a skill to be learned and collaboration is just another tool when you’re trying to get to the right answer?
I’m not sure how long the promise of making games will keep them interested in these lessons, although my son began a before-school activity that teaches game design, and part of his homework involves playing games to understand how many different ways the characters have to interact. He talked to me about the difference in Nathan Drake’s body when he climbs, and when he shoots.
The game no longer exists in a vacuum for him, he now sees it at least partially as a series of systems; something that was created by human hands. He’s started to become attracted to the tools that will allow him to do the same thing.
That’s all for later. For now, I just like watching him lean back when presented with a new challenge, or trace the path a character needs to take on the screen while puzzling over how to get him to do it. He’s gotten to the lessons that teach more advanced movement and angles. He’s editing the numbers inside the blocks of code to see what they do; the young boy who stomps his feet at math is nowhere to be seen.
One of the lessons asked him to draw an envelope shape on the screen. His first attempt doesn’t work, and the game lets him know that the real answer is still out there. There is no buzzer, and no points are removed. I know how he can get with wrong answers, so I ask if he’s okay.
"I’m fine," he told me, distracted. The fact the answer was wrong barely registered. "I just learned how to draw a triangle."