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.

“Invent Your Own Computer Games with Python” is available for free online under a Creative Commons license at http://inventwithpython.com, or can be purchased on Amazon.com.

18 Responses to “Attitudes on Programming for Kids: “They Need Blood Exploding Onto Their Faces Just to Keep Them From Yawning””

  1. Alex Kilpatrick Says:

    I remember the book that got me into programming — it was “Basic Computer Games” by Creative Computing, way back in 1983 or so.

    It was just a bunch of text games — some simple, and some quite complex. But the key thing was that you could see the immediate connection between the code and the output. You can see that you can tweak the program to make it behave differently, or even make a program from scratch yourself.

    I think that is the magic. If there is too much abstraction/graphics/libraries, then you can’t really understand the program works, and you can’t ever own it.

  2. Ruben Berenguel Says:

    For me, the book that got me into programming was “Basic for kids”, which I guess does not have an English version (you can find at least a cover image by googling for “Basic para niños”).

    It’s not how impressive the results are, but that they are yours. A kid who does not like creating text games these days is the same kid who would not play with Lego, Meccano, today, and back then, would not program or play with these toys and instead do other things. It’s the interest in creating first, then the tools.

    Ruben

  3. nano-tim Says:

    My first programming book pick up at a Radio Shack was “Computer Programming in BASIC for Everyone” published in 1973!. This was a clear, fun intro to programming full of little games and more serious programs (I lobved the airline reservations system, “TACI”, Take-A-Chance-Internation).

  4. Serge Says:

    While I agree with you that focusing on graphics doesn’t respect children’s abilities to think, I also think that for small children (<10), Python isn't a great first language.

    If I were to teach little ones how to program, I'd look into something like Scratch (from MIT), where you have graphics and sprites, but it's abstracted away, and in its place are simple conceptual abstractions such as loops and conditionals.

    For my generation, BASIC wasn't our first language, LOGO was.

  5. frank stallone Says:

    There are a lot of spoiled kids who need shiny things but fortunately not all kids are like that.

    I really appreciate the book and will definitely be passing the link onto others. More people need to do stuff like this.

  6. Andrew M Says:

    Part of it is presentation.

    If you present the material as exciting it will go over a lot better than if you try to sound smart.

    I get thank you notes from 14 yr olds regularly on try ruby. Granted, most of these thanks are from outside the United State (save New York).

    Again, it is about presentation.

  7. IHATEPROGRAMMERS Says:

    you book is teaching the kids to THINK … and for that all you need is the DESIRE TO LEARN. Forget about the people who are complaining about what your book doesn’t do. At least YOU got off the couch and did something!

    Congrats

  8. Maintenance Man Says:

    Learning to program with just text games might be instructional. But can’t we have a little 2D graphics. Does not have to be anything special. Maybe some boxes that are filled in or such. Would make me more interested.

  9. Kjartan Says:

    I am younger than some of the people responding in the comments here.. Never had a chance to see basic.. :)

    It just depends on who the kid is and what he wants… I was (and am) a computer nerd I would have loved do get my hands on a book like this when I was young… I didn’t have any access to books like that, but I remember that someone gave me a book called “The secrets of Delphi 2″ It was actually a terrible book, but I read every word of it and was able to write some stuff in Delphi at the time, that was mine. Nothing fancy like 3D graphics but I was thrilled with my creations! If anyone is not happy about your book, it’s not that the book is wrong, it’s that the wrong person is reading it… It’s like playing classical music at a rock consert. It’s like giving a chinese book to an english speaking student. Or… Some kids are spoiled and think that game programming is like just: imagination=game created..

    Today I write multiplayer game servers in Python and Clients in Flash/Actionscript. I still haven’t gone through university, never had time to do it, always busy programming :) But I make alot of money, so I guess it’s ok. I will buy your book and read it and then give it to someone who really wants to learn this for real.

  10. Kjartan Says:

    Ps… When reading over my post… I remember when I was 10 years old struggling with Delphi 2.. There was this function to show another form, called Show() and ShowModal()… I remember that I struggled 2 months to get this function working, because I didn’t know how that I had to include the new unit in the same document to be able to show it later… But I remember that one day I actually figured that out and it was like a big victory for me… Nothing fancy about displaying another form, but at the time, it was a big thing for me.

  11. StoneCrow Says:

    (got here through stumbleupon btw)
    i think a good language to learn with is .lua and since the release of the LOVE engine/library its become easier that ever.

    but there are too few resources for help. Im currently learning the harder parts of the language and considering making a number of tutorials myself once im done.

  12. Michael Bartnett Says:

    Al,

    Thank you for writing this book, and even moreso, releasing it for free online. I’m a college student getting a music composition degree, but I’m also big into computer science. I’m getting a minor in computer science and currently am working a software engineering internship.

    Lately I’ve been writing a lot of C#, with occasional Java and C, so I’m fairly experienced with programming, but I’m using your book to learn Python because it reminds me of the material I first used to learn programming, and I’m very comfortable with the way you present the information. Keep going, it’s great!

    I got into programming first by my father, who showed me how to make hyperlink macros in Excel. Then, my mom went out and found the first edition of Beginning Programming for Dummies which taught you programming with qbasic (I actually had to ask my father to dig up our old Windows 98 disc since my computer ran XP and thus didn’t include it). The style and tone of the book was upbeat and explained concepts just well enough that I could start thinking of how to apply them to what I wanted to do (which was, of course, make computer games!)

    Not being able to use graphics outside of the basic line/circle/dot commands led me and the friend I learned coding with to get creative with how we handled the game presentation. Once we even found sample code in which someone had written a routine to load and playback GIF animations, so we used that as a foundation for building an Eye of the Beholder style maze game.

    Later we found out about BlitzBasic and DarkBasic and started learning those and how to work with more advanced game assets like spritesheets and 3d models and textures.

    My point reflects those of the above posters–if kids have the desire, they will learn, they will explore, and when they do reach the point of being able to draw graphics they will have a far more in depth understanding of how to use these libraries and tools that much more effectively.

  13. Carlos Says:

    Amen, you just beautifully articulated what I’ve been feeling for quite some time now. Kids, teenagers, and anyone wanting to learn to program really need to appreciate the simplicity of programming basics in a solid, foundational language like Python, which I completely agree is the new BASIC. Thank you for such a wonderful book, I will definitely be picking up a copy.

  14. Hayden Says:

    I completely agree. I read “Invent Your Own Computer Games in Python” and I learned lot.
    Before, I read books with lots of fancy pictures, and they were interesting, but I learned just as much, (maybe more so) from your book. Programming is as fun as you make it, and you made it fun without trains.

  15. Rodney Reid Says:

    Gahhh!!!!

    An old friend of mine said a couple years back “all the kids these days are dreaming of becoming video game designers or porn stars”

    As to the cries of “not flashy enough! I’m bored!”:

    “Was I bored? No, I wasn’t fucking bored. I’m never bored. That’s the trouble with everybody; you’re all so bored. You’ve had nature explained to you and you’re bored it, you’ve had the living body explained to you and you’re bored with it, you’ve had the universe explained to you, and you’re bored with it. So now you just want cheap thrills and like plenty of them and it doesn’t matter how tawdry or how vacuous as long as its new, as long as its new, as long as it flashes and fucking bleeps in forty fucking different colours. Well whatever else you can say about me… I’m not fucking bored.”
    David Thewlis, Naked (1993).

    …Rodney

  16. Hugo Estrada Says:

    Text games are appealing for children. At least to my kids.

    I actually have kids, and I have been teaching my 8-year-old daughter how to program starting when she was about 7.

    I started teaching her with Scratch, and that has become the hook for programming. To be honest, she mainly uses it as a paint program where she adds some minor animation, but it has created a good enough association that when I say, “Do you want to learn this new programming language?” she runs over.

    Yesterday I started working with your book to teach her python. The first two chapters were slow for her, and I was about to lose her interest. (Thinking about it, the problem was her inability to type fast enough) I moved to the third chapter and ran the guessing number game. She and her 5 year-old brother really enjoyed it, playing them over and over. And she modifying the code for the guessing game several times, to adapt the game to her liking.

    Remember that her main programming experience is Scratch, which is visually interesting, yet she was interested in these text games.

    We sometimes think that kids will reject games without giving them a chance to try them for themselves.

    So I like your approach, and I believe that you are on the right track with this.

  17. Simes Says:

    I got hooked into programming as a teenager typing BASIC code listing from magazines into a TRS-80. Since then I have used half a dozen programming languages in work, and have recently been trying to teach myself Python in my own time. I slogged through the language reference and the tutorials and have been bored senseless.

    But when I found “Invent Your Own Computer Games with Python” I was well chuffed since it make the learning interesting.

    Just as 30 years ago, the fun and excitement comes from getting the computer to interact at all. Yes,
    I also want blood and gore sometimes in games, but when learning I just want ANYTHING to happen.

    For example, while going through the evolutions of the Reversi game I was thinking about logic, how to write the code differently and so on. I had completely forgotten I was trying to learn Python!

    However, there is a degree of wanting to learn. If the child is not interested in the subject then yeah, lots of blood and gore make a good entertaining alternative to learning.

  18. Eddy Says:

    Incredibly informative book. Thanks, man!

Leave a Reply

free blog themes