Monday, September 30, 2013

Another programming myth: if you don't code when you're a kid, you'll never be a pro

For some reason, this Wired story really got me into a tizzy: Forget Foreign Languages and Music. Teach Our Kids to Code. The thesis of the article is that you really can't start teaching kids to code young enough. And heck, rather than teaching them to say, Mandarin, in kindergarten, why not teach them how to program? Both are languages, right?

My first thought was back to my senior year of high school. I took my one and only AP course: AP Computer Science. In it, I learned Pascal (on a Mac no less, had I taken the class a year or two earlier, I would have been learning on a mainframe!). I hardly mastered the world of programming (scoring a whopping 2 out of 5 on the AP, the score you get for basically signing your name to the test), but it was enough to teach me I had a genuine interest in the subject, and to give me the skills to do well enough in CS 113, my first CS course at University at Buffalo. And from there, as they say, the rest was history.

At the same time I was learning For loops in Pascal, I was in my 5th (!) year of German class. As far as I can recall, despite years of instruction, I still had a sub-kindergarten level of German at this point. If I think back, I can still remember the teacher imploring us to learn the Die Der Das Chart, whatever the heck that was.

All this is a fancy way of saying, a programming language and a foreign language are not related in the least. The former, even for all it's initial confusing nomenclature (classes, instances, recursion, etc.) is amazingly tidy compared to the exception and massive-amounts-to-memorize nature of the latter. In other words, it's smart to teach Mandarin to kids when they can just absorb it. That's simply not necessary for learning to program.

I'm absolutely a big believer that programming is really problem solving, and that these skills should be learned by all. But the thought of having a 7 year old program Frogger seems silly; better he should be outside *playing* frogger, than inside coding it. Yes, young kids should experience age-appropriate versions of programming concepts like debugging, building abstractions and modularization. But most importantly, they should be working on that often neglected programming skill: using your imagination.

Now, by the time a kid a teenager, there's no excuse for them not to be coding. The recipe seems simple: for every N hours of game playing time, you should have M hours of coding time. Within a summer, any teenager can master all the skills he or she will need to know if this is a field they want to pursue.

Perhaps what annoys me most about this article is the potential formulation of another programming myth: like violin or Mandarin, if you don't start when you're 5, forget about it. You'll never be a pro. Like the persistent myth that programming requires math (What math? Most programs contain no more math than adding or subtracting 1 to a number), this isn't helping anyone.


  1. So I went to school recently for web design. Try as I might, I can't regard HTML and CSS as anything but a poop sandwich. Then when I see that those are only the basics of what is required....that a whole host of other programming languages are required for web design, it is enough to make me turn my back on it completely.

    Sorry, coding and programming is not for me, and I think that there are people who are not cut out for it. Myself included. I think some people have brains not suited to coding.

  2. > Sorry, coding and programming is not for me, and I think that there are people who are not cut out for it. Myself included. I think some people have brains not suited to coding.

    I wholeheartedly agree: some folks are going to love to program, and others won't. This notion that it should be a universal skill learned from birth is something I'm not buying.

    With that said, I still think there's value in having teens create on the computer at some ratio to the amount that they consume.

    The example I mentioned above uses Scratch, which isn't what most folks think of when they think of programming. Scratch can be used to create games, but it can be just as useful for creating multimedia projects, music and other "stuff."

    But forget programming altogether - maybe it's design, maybe it's writing for your blog, maybe it's hosting a podcast, maybe it's creating YouTube videos. I don't think it matters. What I do think matters is that kids learn to create and contribute; if only so that they appreciate that it's not magic.