(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.