This is a read-only archive!

Programming: art?

numerodix wrote an entry about programmers expeding lots of effort for seemingly odd reasons, and mentioned me as an example. So I'm kind of proud. It's a good post and I think the quotation he posted from The Mythical Man Month is largely accurate.

But I disagree that programming isn't art. Of course not all code is art. Probably most isn't. Sloppy get-the-job-done code written by someone who's doing it for a paycheck, without passion, is probably not art. Any more than a mass-produced badly-rendered copy of the Last Supper is art. But I think good code can be art.

Of course it's hard to define "art". One definition (yes I looked up "art" in the dictionary; yes I'm a nerd) is something "beautiful, appealing, or of more than ordinary significance". That's as good a definition as any, so let's run with it.

Code can be beautiful. There is a regularity and symmetry about good code that can invoke an emotional response in people who really understand it. Code is often talked about in aesthetic terms, and I don't think that's an accident. What word do people often use to describe good code? "Elegant". Bad code? "Ugly".

We often talk of a programmer's coding "style", as though we're reading poetry. Some people take this idea literally.

I think code can easily be something "of more than ordinary significance". Sure, a program is in the end something that's designed to be used as a tool. But the same can be said for example about buildings, and architecture is considered art by many. Something can be functional and still be art.

On those rare occassions when I produce good code, I do feel like I'm doing more than pushing buttons on a keyboard. I'm creating something unique. There is an element of emotional fulfillment when I happen upon a simple, elegant solution to a complex problem. There is the joy of having created something, something which is wholy mine, a product of my mind, and having that in front of me in a form in which it can be shared with other people.

January 12, 2008 @ 3:22 PM PST
Cateogory: Art
Tags: Art, Rant

1 Comment

Quoth numerodix on January 13, 2008 @ 12:33 AM PST

When I say that code is not art, I think of it in a specific way. When a musician plays music, the audience has an experience. It is very much perceived as art. Same with writing a book, or architecting a building. The user of said artifact will have an experience. This is not so with software. There is nothing artistic (at least so far I have not heard of any artistic movement born out of software) about using software, there is no experience to be had. (Perhaps you would qualify compiz/beryl stuff or something, but by and large I think you'll agree.)

Now, a painter who had painted a very mediocre picture could just as well come up to you as the viewer and explain how many layers of paint he used, in what order, by what technique, how it was important for the different layers to mix and react with each other and so forth to eventually produce the end result. However, after all those chemical reactions have found place we are left with the end product, which is the picture. I give you the binary executable.

The only thing I could argue for code is some sort of internalized form of art, that only fellow craftsmen do see, not the public. In the sense that you could build the Eiffel Tower and steep the whole thing in concrete, hiding the steel structure, and it would look very ordinary indeed.

Anyway, I wanted to take that view on art, because I think it's a reasonable view in the sense that we understand art most of the time. But I'm not opposed to the "code is art" perspective.