Software and Spellbooks

Software is magical. I’ve felt this way about it for as long as I’ve known what software was.

As a kid, playing video games with my older brother was my favorite thing to do. I remember sneaking out of our bedroom and staying up late at night to play games together. We had our first gaming system when I was 5 years old and I just loved it. I didn’t understand it, but I loved it. I didn’t even know that I didn’t understand it, I just played with it like I played with any of my other toys — trucks, squirt guns, whatever.

When I got a little bit older all of that changed. I was maybe 8 or 9 years old and my brother found a book on BASIC from the public library. It described a language that you could use to talk to a computer — to tell it to do things, to give it orders. For me this was the missing link. It was in that moment that I realized that this is how our video games were created. So naturally, we set out to build our own game. There was one problem though. We didn’t have a computer. Fueled with the power of youthful passion, that didn’t stop us from trying. I remember filling pages and pages with GOTOs, PRINTs and INPUTs. Unfortunately we never shipped that first game, but we did learn the ins and outs of that language pretty well.

Our industry is unlike most others in that the fruit of our labor is ethereal. You can’t reach out and touch software. Sure you can copy it to disk, transfer it over wires or print it out on paper, but the software isn’t the magnetic disk or the dead tree. As the soul is to the body, software is to hardware. This is why I think software is magical.

In the MIT Computer Science program first year freshman are introduced to programming through a language called LISP with a course called the Structure and Interpretation of Computer Programs. In this clip, Hal Abelson is giving the first lecture in this course where he says “Computer science is a terrible name for this business. First of all it’s not a science. It might be engineering or it might be art. We’ll actually see that so-called computer science also has a lot in common with magic.”

“Magic? Real magic? I thought we all stopped believe in magic in grade school.” I hear some of you say.

Some of us never stopped believing. They call us programmers. The reason we believe in magic is that we live it every day. It is a profession where our creations are only limited by our imagination (well, ok, that and the Halting Problem). We have tools but no raw materials. It is a purely intellectual pursuit with measurable results.

If you’re good at it you create something beautiful and make billions of dollars. If you suck but you’re lucky then your software doesn’t run at all. If you’re terribly unlucky your code runs as expected long enough to lull you into a false sense of security and then it suddenly fails or behaves in some manner you didn’t expect. Sometimes with drastic results. I remember working at my first startup in 1999. I was writing some code to send mass amounts of emails to customers that had opted-in to our mailing list. The program was run from the command line and took two files as input — the customer email list and the message to be sent out. Obviously I hadn’t tested it thoroughly enough before running it, because one small bug later and we’re sending out our entire email list to everyone on that list. This is what can happen when you don’t take great care when casting your spells.

Tags:

Leave a comment


Design a site like this with WordPress.com
Get started