Programming as craft

Paul Graham famously compared programming to painting, claiming that programming in its highest form (i.e. what he calls "hacking") is equivalent to art.

This seems to resonate with a lot of programmers, and not just because it makes us feel better about ourselves to believe that we're really creating art when we code our 83rd login page. I think it resonates because we get an intense feeling of creative accomplishment when we send our programs out into the world.

My mother works at an art institute in San Francisco. Once in a while the students there will sell some art at a gallery, or to my mom; when they make a sale, they look a lot like how I feel when someone buys my software or says nice things about it.

But my software isn't art:

Art refers to a diverse range of human activities, creations, and expressions that are appealing or attractive to the senses or have some significance to the mind of an individual.

Wikipedia

And that's not the purpose of my software. Just about all the software I write is intended to make things easier for translators and other people who work with text. So while I still think that what I do is creative, its main purpose is practical.

Some software is art, like games and such. Making those kinds of programs is making art. But that business data entry form you're coding isn't art, sorry (unless of course you're really into Kafka).

Indeed, most programming is less an artistic effort and more one of craftsmanship. I think that more programmers don't make this connection between programming and craftsmanship because in the developed world, the "crafts" have become so industrialized that they don't resemble what we do at all. While programming is a high-tech industry, it's definitely preindustrial. Programming isn't like 20 tables rolling off the assembly line every hour; it's more like you go into the cobbler's, and you can either get a pair of shoes that's a bit too small, or one that's a bit too large, or pay an exorbitant amount and wait a week for a custom pair to be made, which probably won't fit perfectly anyway. Heck, we programmers still have to make many of our own tools! Not very industrialized.

I once lived in central Ohio. In the next town over from us, there was an Amish furniture shop, where they made most of their furniture on the premises. I loved looking at and trying out the hand-made rocking chairs they had. I try to emulate those furniture makers in my programming: paying great attention to function, but making my programs pleasing to use as well. I think it's a more useful target to shoot for than Picasso.

After all, what would be the point of a cubist word processor?

Comments

  1. megp
    July 3rd, 2008| 2:30 pm

    I think craftsmanship can be looked as an art too… sometimes i read someone’s code (even yours) and it moves me, the code itself has a deeper message.

    Humberto Eco said:

    “… a message can be considered as artistic when the message itselfs overcomes the bearer code …”

    that phenomenon is very common in programming.

  2. July 3rd, 2008| 6:01 pm

    That’s a good point. I think that craftsmanship can approach art. And sometimes craftsmen (artisans) produce art. As do programmers.

    The question of whether the medium can be art when the product isn’t is pretty subtle: can the drawings for a bridge be art when the bridge isn’t, or the judoka’s throw be art when the match isn’t? I’ll have to leave that to an art philosopher :)

    (And thanks for the compliment!)

Leave a reply