Computer Programming isn’t Art

(Sorry, Mr Knuth)

My uncle’s hobby is building beautiful furniture from wood. I noticed something last time I spoke with him about it: He doesn’t talk about a table, or a book case, or a dresser; at least, that’s not what he talks about with emotion. You only get a sense for what he loves doing when he describes how everything fits together, how he makes it. He cuts and dries trees to make the timber, he cuts it all down to size, and then he never use screws or nails – all the joints fit perfectly.

Similarly, when I talk to my colleagues about software that they’re writing, they might be excited about what the software does, but they’re more interested in discussing how it does it, how they put it together. They’re proud of code which is efficient, clean, inventive, performant. A crafty data structure, a SQL query which performs 10x faster than its predecessor, an intelligent cache that cuts processing requirements by 80%. Those are cool – those get you the street cred 🙂

I see large parallels between the two. They don’t fit my understanding of what “Art” is; they sound alot more like a craft. Art is about evoking and exploring emotion, about connecting with the viewer. When I hear “craft”, I think of a blacksmith, a woodworker, a chef; someone who takes pride not just in the end result, but in the path used to reach it. It’s not just about creating something nice, it’s also about doing it with pride. This seems to fit more closely to the practice of writing software, to the constant need for study and improvement that characterizes it. At least; those are the kinds of engineers I would prefer to work with.




Comments (6)

  1. As a programmer and a trained musician I’d like to share my Music Teacher’s definition of Art vs. Science.

    Art is the field of creation. You “break” rules to create something new. Rules will later be written to describe the “new” Art.

    Science is the field of recreation. The whole point of an experiment is to repeatedly verify the experiment’s outcome. Hence, the exception actually disproves the rule.

    So people that design software are “Artists” – but I’ll agree that many programmers are “craftsman” that simply “cobble together” other people’s code.

    Blake Handler

    Microsoft MVP

    "The Road to Know Where"

  2. George Jetson says:

    I think these types of discussions get us sucked into arguing over an issue the size of, say, an acre, when there’s a whole world out there to be discovered.

    Are there breakthroughs still out there that will come from the creative side of the brain?  Of course.

    Are there efficiencies out there to be harnessed by the logical side of the brain via better engineered systems/practices?  Of course.

    If someone makes better software, whether it comes from creativity or better application of engineering, it’s still better software.  There’s oodles of room for both.

  3. Kevin Daly says:

    I think it’s a problem derived from an arbitrary definition of terms.

    Through much of human history art and craft were not regarded as distinct from one another, because art had not reached the levels of intellectual onanism that it has achieved today.

  4. int19h says:

    I agree, it is a craft more than an art. Though one has to keep in mind that a jeweller is also a craftsman…

  5. Animesh says:

    So this is where the word Hacker comes from…

  6. Mike Lieman says:

    I think the definition varies from programmer to programmer.  

    Some are artists, Some are craftsmen, Some are incompetent fools who blame their tools.