Monday December 04, 2017
On the StackOverflow Podcast, they always ask their guests on the show how they got introduced to programming. Whenever I listen to that segment of the podcast, I always think back to my first experiences with programming, and how I built on those to get where I am today. I like the podcast segment a lot, and I think it’s fun to share these stories. So, in honor of Computer Science Education Week, I’m going to write a blog post about some of my first programming experiences.
I always wanted to learn to program. From a pretty young age, I grasped the idea that there were people out there who could make computers do whatever they wanted them to. To me, this idea was enchanting. But I also realized that I had no idea how to do this, and didn’t really know anyone who did. I wanted to learn to program, but didn’t know how to get started.
I think I noticed Learn to Program BASIC in the back of a Scholastic book order. I convinced my mom to buy it for me. (After all, it was educational software.) Learn to Program BASIC was essentially a series of video lessons for the BASIC programming language. The software also came with its own BASIC compiler and execution environment, so it was relatively easy to write and run simple code. The first real program I ever wrote would have been some kind of “Hello World” program in BASIC, following one of the first lessons. (A video like this one. Wow, that’s so horrible. But still, nostalgia…) Incredibly, Learn to Program BASIC still has a product page on Amazon (although it appears to be sold out).
I worked through many of the lessons, but ultimately became frustrated. I could write a lot of simple text-based programs (add two numbers, ask a user’s name, etc), but never learned enough to create any kind of program on my own that wasn’t text-based. Perhaps I was still too young to completely grasp some of the more advanced concepts, but I don’t think I ever programmed anything really interesting in BASIC. I wanted to learn how to write computer games with real graphics, and my understanding of BASIC and the programming environment I was working in wasn’t enough to let me do anything exciting. Learn to Program BASIC got me off to a great start, but also left me thirsty for more knowledge.
As I grew a little older, one of my primary motivations for wanting to learn to program was to make computer games. Video games get expensive quickly, and my childhood brain thought that if I simply wrote the game myself, I could play whatever I wanted, essentially for free. My desire to write video games led me to an application called Game Maker.
Game Maker was great software (for my 13 year old self), and I used it to make a couple of games. Back in 2003, it was free. I remember that one of the games I wrote was a type of “laser tag” game, where multiple players could play on the same keyboard. One used WASD while the other used the arrow keys. Eventually, I think I added a 3rd and 4th player using other keyboard keys, to get even more friends in at once. Game maker produced a Windows executable (.exe) that I could put on a floppy disk and share with friends. I was really proud of the game I made, and learned a ton about programming in the process. It worked well, and the games I made were actually fun to play for a while.
Game Maker is still available, although it’s changed a lot. It’s now sold as GameMaker Studio by YoYo Games.
Looking back on what I did with Game Maker, it’s really similar to what many kids are introduced to today with Scratch. Game Maker used it’s own programming language called GML (Game Maker Language). Using GML, you could essentially program sprites to respond to events. The language had simple commands (like move 10 left). Scratch is really the same thing, but it runs in a web browser and you program with blocks. I like to think that if I was a 10 year old today, I’d be learning to program by writing games in Scratch. So it’s great to see it gaining popularity in elementary and middle schools as an introduction to computer science.
Computer Science Education Week is December 4-10, 2017. What are you doing this week to support computer science education? I’ll be doing an Hour of Code later this week at an elementary school, where I’ll be teaching one of my own lessons in Scratch. I’ve written several different games in Scratch over the last couple of years, primarily to use as teaching material. These days, when I write a game in Scratch, I try to keep the code (and the game) as simple as possible. My goal is to show the kids I’m teaching that you can make something fun with code that’s simple and easy to understand. I hope to write more about some of the Scratch lessons I’ve developed in the near future.