My life as a software engineer began in the third grade. The first program I ever wrote was in QBasic, which my father introduced me to after I had shown an interest in computers. At the time I was obsessed with old graphical adventure games (specifically King’s Quest and Conquest of Camelot). Given a very introductory understanding of Basic, I set off to write the next great adventure game. It went something like this (a reenactment, if you will):
10 PRINT "You are in a room. You see a computer. Your options are:"
20 PRINT "1. Turn on computer"
30 PRINT "2. Eat cereal"
40 PRINT "3. Go outside"
50 PRINT "4. Die"
60 INPUT "?"; action%
70 IF action% = 1 THEN PRINT "You win!"
80 IF action% = 2 THEN PRINT "You are full!"
90 IF action% = 3 THEN PRINT "You die from skin cancer!"
100 IF action% = 4 THEN PRINT "Your eyes bubble out of their sockets and your face falls off!"
110 END
This was the limit of my third grade understanding of computers, but I was rather pleased with myself.
I eventually forgot about computers and discovered girls. Namely, I discovered that girls didn’t notice me much, especially since I was in middle school taking math classes with people significantly older than me. Instead of paying attention in class, I wrote games in TI-Basic. I couldn’t afford a cable to connect my calculator to the internet to get real games, so while my friends had cool games, I had to write all of mine on my own. The first game I wrote was a simple number guessing game: choose a number between 1 and 100, the program will tell you if you are over or under the proper value. This was amusing for a very short amount of time. The next program I wrote was a simple variant of one player pong that I called “brick” (though no bricks were ever implemented in the game). The pinnacle of my TI-Basic experience was when I wrote a simple little game called “chknhtr” (Chicken Hunter, but names were limited to 8 characters), which was a game where you the player (a +
symbol) chased around a chicken (the symbols *0<
). It had increasing levels of difficulty and tracked your high score. I actually became something of a 7th grade math class celebrity when I started sharing these creations with my friends.
While writing computer programs appeals to me, ever since that moment in middle school where my friends gathered around me to see the latest game I had made, the real fascination with programming is the ability to share what I make with others.
Over the years since then I have written a number of useful programs, and contributed to many more. Of all of them, I believe the program with the most users is MacSweeper, a simple clone of MineSweeper for OS X. I wrote this the summer after my sophomore year of college, right after I realized that my education up until then had taught me enough to actually write a useful application. It has, as of writing this, a grand total of 49 downloads on google code.
Recently I began the task of cleaning up MacSweeper to work with Snow Leopard, and I was forced to relive my code from five years ago. Although I have improved in many ways since then, I found myself very respectful of the fact that with limited knowledge and no sense of coding style I was able to create something that people found desirable. The ability to create a product that people want is far more important than the ability to dream up something that people may want.