The Art of Programming

It’s been awhile since my last blog post. How long? Well, let’s just say that people still used Blackberry phones the last time I had a blog. So to start with, I thought I’d begin at the beginning. This is part one of a 32,976 part series of rants on anything and everything I know about life, liberty, and the pursuit of better programming.

The Ghost in the Machine

Anyone can learn to program. Not everyone can be a programmer. I’m not suggesting that people shouldn’t try and learn how to program. In fact, I feel the exact opposite. Learning to “code” seems to be all the rage these days. “Code Academies” are popping up on the internet like YouTube cat videos and even the mayor of NYC has said that he would learn how to program this year. And in the same way that I think people should listen to jazz, read poetry, or learn how to cook — I think learning how to write “code” will open your mind and ultimately make you a better person. However, as Jeff Atwood (author of Coding Horror) points out in his blog post, the goal of a programmer is not to write code. Rather, the the goal of a programmer is to develop solutions to problems using as little code as possible.

To be (or to become) a proficient programmer requires a different way of thinking. One that is not obvious or intuitive to most people. Because “code” in and of itself has no literal meaning in the real world. Code is abstract. Code is an amorphous blob of 1’s and 0’s. True and False. Yes and No. It exists only in your mind until you put hand to keyboard. But through some combination of energy drinks, espresso, and Chinese takeout we are able to create something from nothing. By combining bits and bytes and lines of code into variables, classes, and objects we create manifestations of real-life solutions to really important problems…like sharing a picture of your dinner with 648 of your closest “friends” on Facebook. It’s ok, I do it too.

I’m not suggesting that it’s hard for someone to become a programmer. But what I am suggesting is that it’s not easy. It takes more than just downloading a book from Amazon and reading the first five chapters on [insert a programming language here]. Ironically it is a discipline that is more art than science despite the fact that it requires scientific reasoning. And just like learning how to cook or play an instrument it takes a LOT practice along with countless hours searching for ghosts that never really existed in the first place. And if that weren’t enough, your code will never be good enough, or fast enough, and it will always have missing a feature or requirement that your users may, or may not have asked for.

So why do it?

Because code is the stored honey of the human soul, gathered on the wings of misery and null pointer exceptions…or something like that.