Each year, I make one programming related resolution. It’s that time of year again to look back and evaluate what I’ve done well, what I haven’t, and what I might change to make next year even better than this one. In the past, I’ve chosen to learn this or that and improve my skills in some way. This year, I’m doing something a little different.

My resolution for 2008 is to get more involved with kids and computers. I’ve been programming since I was 11. I took a course in 5th grade on how to use BASIC. I have no idea how that course was offered or what sparked me to take it, but I went one night a week for a few months and learned to write some simple stuff. I was lucky to have had that course and I wish I could thank that teacher for teaching what was probably considered a novelty subject on her free time. I was also lucky for the fact that my parents were willing to invest what was then an enormous amount of money into my first few computers. I’m sure that at the time they wondered why they were investing so heavily in “toys”, which back then, didn’t manage their money, do their taxes, or calculate my Dad’s golf handicap. Yet, that investment was the start of a love of programming that’s gone on now for over 25 years.

I’ve read a lot of stories lately about how computer science students are on the decline, despite hiring and salary increases in programming. Redmond Developer reports, “[…] survey data showed that since 2000, interest in CS as a potential major had dropped almost 70 percent.” Many other sources report the same trend [1], [2], [3]. As a software developer, that trend bothers me.

My kids are in K and 6th grade, so I see what they’re learning on computers these days. Many kids have access to computers and know how to use them to access the internet, to write and print a report with a word processor, and so on and so forth. These are great life skills which, you could argue, are as important these days as reading and writing. However, there’s very little transition to computer science there, and that’s where most of the computer teaching seems to end.

It’s a shame too, because computers are doing such cool things these days. The games, the web sites, the music applications… there’s so much there that a grade school kid can connect with and see as being essential to their day to day activities. With all of that coolness, you’d think that kids would be knocking down the doors to learn how to make that kind of stuff.

The problem is that you can’t learn to make cool stuff like that the first time you sit down to program. Not the tenth and probably not the hundredth time either. In order for kids to get from the point of being users to being developers, there has to be some motivation to keep them interested. Rob Walling wrote a great article about how to make programming seem cool again to young kids. He’s got the right concept for the hook and I tried to memorize the “Show the Steak” section like it was a script.

But a hook is not sustainable. What kids really need to keep their interest are small, recurring successes. For me, Compute! magazine provided those little successes in the form of one page programs I could type verbatim to get a working game. After a few straight copies, I started tweaking their games, then I added new abilities to those games and then I was writing games from scratch. Once my momentum had reached that point, I really wanted to learn more.

So what are those little successes these days? There’s no more Compute! magazine or anything like it. Even writing a simple program these days can seem impossible because of IDEs, compilers and all sorts of things that precede writing a single line of code. There are some great projects out there like Phrogram, Scratch, Basic for kids and LOGO. Amazingly, despite the unlimited access to this stuff, most of it seems to go relatively unnoticed.

So now that I’ve made my resolution, how do I actually make it happen? Well, the other day I was talking to my son’s Kindergarten teacher before class. She was telling me about a new web site she had set up for the class… a blog where she could post information about what they were up to in class. She’d taken a class about it and was learning HTML. We talked some more and she mentioned her interest in the Give One, Get One program. I’d never heard of it. It turns out that it’s part of the One Laptop Per Child (OLPC) program, an initiative to get affordable laptops to underprivileged children of third world countries. I had definitely heard of that. Originally, this laptop was not planned to be sold commercially, but you can get one by donating one through the Give One, Get One program. This teacher was interested in getting one to use in the class, but didn’t know much about it.

So there I was with my kid’s teacher willing to learn how to use this new device to teach. We put together a small plan, and I bought one a few days ago. She’s buying one also, so there will be two in my son’s class. I’m going to help her learn what it can do and show her things the kids can do with it beyond web surfing and game playing. In particular, I’m interested in the LOGO program it comes with and how that can be introduced to Kindergarteners in the form of repeating patterns (a heavily stressed concept in the lower grades). My highest expectation is that they think it’s fun to tell a pen-dragging turtle where to go.

I don’t exactly know where this is all going, but it feels good to be doing something. I’m excited about getting involved in helping kids learn computers, a subject I’ve spent lots of time thinking about and very little time doing anything about.