The aesthetics of code
16/10/2012
Recently I've come increasingly vain over the aesthetics of the code I write - particularly for personal projects. This doesn't just mean formatting style, but includes overarching structure and programmer values such as simplicity, clarity and creativity.
When I first started programming I was primarily a Digital Artist, and I always felt programming would remain a way to 'get things done'; that it would never deliver quite the creative reward in the same way artwork did. But as I branched out in computer science, and worked on many more personal projects, I realized that I do get precisely the same feeling from programming as I get from artwork or writing. It is this exact feeling that keeps me coming back; the sense of fulfillment and pride for something you have created. Put simply - the joy of self-expression.
The idea of programming as self-expression is now one of my strongest held beliefs and is the reason why, for personal projects, coding aesthetics are so important. The key is this: to express yourself within programming all decisions must be personal. They cannot be prescribed from a boss, textbook, or dogma. They must come from the head and heart.
Almost all creative projects give reward in some form, from a large number of different outlets, but those projects which are artistic, in the lonely sense of the word, are the purest when it comes to self expression.
This is a feature of Hacker Culture that is not much talked about, but it is very much what defines us. Self expression is what the quiet hacker longs for most. It is what makes us sit up all night alone, what makes us rebel against the languages of bondage. It is why we love the languages and constitutions of freedom - C, Lisp, Python, Ruby, BSD, GPL ...
At my most cynical Java, and Design Patterned Object Orientation are paint by numbers. No one would dispute that guidelines, techniques and study are important in all craft - but just ensuring not to color outside the lines doesn't give any satisfaction. One could never write poetry in Java. It wouldn't compile.
Sometimes when I'm at work, programming is still just 'getting things done' and that's okay. I'm thankful that programming can sign a pay check. But when I retire I wont be programming on someone else' terms. Obsession over "the right way" (tm) is a fast track to programming becoming an anxious weight. What truely matters in programming is what matters in life. I hope that freedom and self expression will always be celebrated in the programming community. Life is so much more than 'getting things done'.