It’s becoming clear that we, as a society, are placing a larger and larger emphasis on innovation and creativity while at the same time bemoaning the lack thereof. There are some activities that we instantly recognize as creative pursuits: painting, music, writing, theatre. And also more modern ones: graphics, web design, info graphics and industrial design, font design and lettering. But when it comes to modern acitivities and professions one of the elephants in the room is programming. The question that’s been on my mind: is programming a creative pursuit?
Programming is problem-solving. It’s about coming up with ways to do things that couldn’t be done before (or at least doing them better). But that’s just the beginning. Once you figure out a way to solve the problem you then create something – a program – that embodies your solution. The program is what goes ahead and solves the problem, hopefully correctly and repeatedly. A program that only works once isn’t very useful. If you’re not creating anything, then you’re not a programmer.
That being said, I think there are some significant differences with typical creative work that needs to be made clear. For one thing, there’s lot less waiting around for inspiration to hit. There isn’t anything really analogous to writer’s block – once you have a problem to chew on you can get going. That’s not to say that you can’t get stuck or that it’s smooth sailing. Far from it, your typical programmer is pretty experienced in applying head to desk. When you don’t have a definite problem to solve it’s a different matter. Luckily there’s lots of interesting software that needs building and problems that need solving. To get out of the rut you just need to do a little Googling (or keep a little stash of side projects to hack on).
Perhaps one criticism of programming as a creative endeavor is that the products aren’t instantly identifiable as creative works. Perhaps if you spent a lot of time crafting GUIs you can make some comparison to the visual arts. If you’re writing server software or building programming languages the end results are far more abstract and invisible. But I’d make the argument that a programmer produces a work of art in the same way that a novelist or a poet does. Understanding that art requires the use of some more mental faculties — understanding symbols, structures, mathematics, semantics and their inter-relation. The process is perhaps harder than looking at a painting. But the payoff to the observer is no less than listening to, and appreciating a piece of music.
All that being said, one of the coolest things about programming is that you can use your programs to produce obvious art work, or write programs that will create art for you. As I’ve been exploring programming and computer science I’ve been thinking of programming as a medium for expression in the same way that music or art is a medium for expression. But more on that later.
Programming has some of the other hallmarks of other creative pursuits. You need lots of practice to get any good. When it’s time to actually create you need to isolate and separate yourself from the rest of the world or you just keep getting distracted. I think there’s an image of programming being dry and interesting only if you’re already into it while the classic creative arts are supposedly fun and energizing. I would argue that’s an unfortunate by-product of our social evolution. If you consider a creative person (or want to become one) I would say give programming a try. There are lots of ways to get started. Though the learning curve is certainly steep (and probably steeper than it needs to be) it’s probably not that much harder than learning to draw or play the violin.
UPDATE: Thanks to Jason Yosinski for pointing me to Hackers and Painters – a far more detailed essay on similar considerations by a far wiser person. Learn from the masters.