Attitudes on Programming for Kids: “They Need Blood Exploding Onto Their Faces Just to Keep Them From Yawning”
I wrote a book titled “Invent Your Own Computer Games with Python” (free online under Creative Commons at http://inventwithpython.com) to teach kids (and adult beginners) how to write computer programs by making simple games. The book adopts a different teaching style from most programming books. Rather than tediously list out the programming concepts I instead present the source code to several games and introduce the concepts as I explain the code line by line. The programs themselves start off simple and text-based (“Guess the Number”, Tic Tac Toe, Hangman, etc.) and then progress in complexity.
The decision to use text-based games was done on purpose. Text is easy to present in a book and to be understood by the reader. There are no 3D models, sprites, or textures to download. By typing in the text themselves instead of using pre-made models and artwork, the reader makes the program their own rather than the product of third party content.
But from people on the Internet (who are my main audience) the most common criticism is that a programming book for kids must have fancy graphics and animation or else the kids will get bored. I receive a fair share of emails where readers and parents disagree, but we have the idea, deserved or not, that all kids live in fast-paced, ADD world of blinking lights, fiery explosions, and flashing images that we hypocritically deride and yet cater to. And if you want to teach programming, you’re going to need sophisticated toolkits with animated models, particle effects, and huge sandbox worlds that are creatable at the click of a button. I call this the “blood exploding onto their faces just to keep them from yawning” mentality. Actually typing out code is seen as dull, tedious, and an effort kids are not willing to make.
I suppose people tell me this because it’s hard to explain complex topics in a simple but detailed way. Aim too high, and you provide vapid entertainment with the lessons lost. Aim too low, and you get lost in tedious detail. Creating engaging educational content isn’t even hard, so much as susceptible to “good enough” products that lack a polished effort and drop into one of these extremes.
And most people, kids and adults, perpetuate the image that programming is “too hard” for them. The ocean of computer knowledge is deep, and multibillion dollar tech companies and blockbuster video games brand it as a sea for experienced sailors only. This leaves the novice fearing that it’s better to stay on land than to start exploring the shallows. This intimidation makes them completely miss the joy of programming: creating something that is your own, and knowing exactly how it works.
I remember the “boring” text games with ASCII art that I created in BASIC were unimpressive compared to the games I had on my 16-bit Super Nintendo. But this didn’t matter to me. It was an apples and oranges comparison. I did find the SNES video games to be more fun and graphically impressive, but it didn’t keep me from programming my own games — those games were mine.
This is the prime reason why Lego is one of the greatest toys of all time. For all the specialization of parts that Lego has been doing in the last decade, kids can still use them as the basic building blocks for their own creation. The point of Lego isn’t to be the shiniest toy in the box. It fulfills a constructive niche that other toys don’t.
And this niche is where my book fits. Other books and software teach general concepts and leave the practical application to the reader (“I learned what a for loop is, now what?”) or provide a simplistic interface to drag and drop game components together (leaving out actual programming details).
Perhaps my book isn’t good for the general kid audience. But there are already so many other books that target the “general” audience that fall short in giving detailed information. In his book “Code”, Charles Petzold points out how computer books show abstract full-color graphics or pictures of trains carrying ones and zeros as a metaphor for how computers work.
The problem is that all we have on the shelves of libraries and bookstores for kids are books of metaphors. Computers are complicated machines, and very few people seem up to the task of explaining how they work at any detailed level for this fear of being too boring. Because, as many have told me, kids need fancy graphics of trains or else they’ll get bored.
I can’t disagree more with this sentiment. And from the approving emails that I receive from readers, it’s clear that kids aren’t given nearly enough credit for their intelligence and desire to learn. The problem is not if they will get bored by too-knowledgeable resources, but can we provide resources that are knowledgeable enough.