July 06, 2005

Programming — Art or Science

ONLamp has an essay by John Littler discussing the relationship between computer programming and art. Included in the essay are quotes on that topic from various luminaries. My favorite quotes are from Fred Brooks:

The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.

and Bjarne Stroustrup:

When done right, art and craft blends seamlessly. That's the view of several schools of design, though of course not the view of people into "art as provocation".
Define "craft"; define "art". The crafts and arts that I appreciate blend seamlessly into each other so that there is no dilemma.

Also, Paul Graham has lots to say about that topic.

Paul's words make me remember the time when I went to college, in the late 1980's. In the introductory courses on computer programming, I was taught the concept of "desktop testing". You would first write your program on a piece of paper. Then, using pencil, eraser and another piece of paper, you would run through the program line by line and write down the value of each variable as it changed. All to verify that the program did what it was intended to do, before coming even near a computer. Well, that were the old days when computer time was far more valuable than programmer time. But I digress.

In my opinion, programming is definitely a craft, but an excellently crafted piece of software, same as an exceptional piece of architecture or industrial design, qualifies as art. On the other hand, a lot of software is so badly designed and implemented that it certainly falls under "art as provocation" ;-)

Posted by guenter at July 6, 2005 09:56 AM
Comments

When I was in school (early 80s) they've taught us to first draw a diagram describing the logic of the program. To cut a long story short, I'd write code first and then make the diagram from code (why throw away free points ;-). It worked, but it made me feel bad. Now I know there was no reason for bad feeling ;-).

Posted by: Alex at July 7, 2005 09:30 PM