At some point in the last few years strange things started happening in life. Like really strange things. Strange along the lines me deciding to get a degree in electrical engineering. And it didn’t just stop there either. Somehow I got talked into applying to some of the top Computer Science graduate programs in the world and for some reason I actually got accepted into one. Even though by day I’m a starving graduate student heading towards some amount of respectability as a computer scientist, the deep, dark truth is that inside I’m just kid who likes slinging code to build cool stuff. And there’s an awful lot of cool stuff waiting to be built.
The greatest thing about working with software is the immense flexibility that it offers. We are quite literally building structures with pure thought. Of course, our thought gets manifested as lines of code, functions, classes, modules, type systems, so and so forth. And all that gets compiled down to ones and zeros which in turn become little groups of electrons flowing (or not flowing) through unimaginably small, real, physical structures made of semiconducting materials. The magic of computer technology is that I can easily ignore all those layers and easily spin my thoughts into increasingly complex and intricate webs. And that is wonderful.
I’m currently listening to “Christofori’s Dream” by David Lanz on Pandora. It’s a quite beautiful piano piece (though I’m no real judge of piano pieces) and I can’t help but think that programming is quite similar to music (and writing and painting, you get the drift). But the one advantage we programmers have is that our instruments are quite literally limitless — if a problem can be solved in a finite, reasonable amount of time we have the tools in our hands to solve it. That’s like having instruments capable of creating all possible musical sounds (given an suitable definition of musical). Now that doesn’t mean that it’s easy (any more than owning a violin means that you can play it) or that all instruments are created equal. Again, one more strength of computing over music performance is that it so much easier to create our own instruments if need be — oftentimes building atop other, less sophisticated instruments. Please keep in mind that I know very little about music (I played classical Indian violin for a while, but that’s about it) so if you know about computers and music (or just music) and think I’m talking crap, please have at it in the comments.
Before getting distracted by Pandora I was going to say that rapid experimentation is one of the really cool things about programming. You can write a line of code and in an instant see the computer carrying out your code. Hell, these days you don’t even need any actual programming tools installed — you just need a browser. I think that as we go from being teenagers making computers do cool stuff to “software engineers” and “computer scientists” we start to think that we are bound to use our powerful machines to solve important, large problems (or at least problems we’ll get paid to solve). At times like this, it’s worth remembering the wise words of Alan J. Perlis, one of the early pioneers of our field –
I hope the field of computer science never loses its sense of fun. Above all, I hope we don’t become missionaries. Don’t feel as if you’re Bible salesmen. The world has too many of those already.
There’s more on the about page. Sure there are important problems that need solving and we need our machines to help otherwise we’ll never get them done in time. However, there’s a lot of fun to be had on the way. We can sequence the human genome and model the birth of the Universe. But we can also create music, art, poetry, games and just general neat hacks that fill people with a sense of wonder.
At the beginning of Star Trek: Insurrection Captain Picard says, “T remember a time when we used to be explorers”. That time is now. Computers are powerful tools and instruments, but they are also amazing vehicles for exploring the spaces of the mind. While we’re off solving important problems and making tons of money let’s take some time off to kick back, pick up a keyboard, write some code and just wait and see where it takes us.