Tuesday, October 26, 2010

Art and Programming

This has been a subject I have thought about for a very long time. Actually it is much more than thinking. It is also doing. In the past fifteen years I suspect I have written at least 1/2 million lines of code across a number of different languages. Everything from simple toycode to gnarley programs that do cross tabulation, or programs that convert and flatten proprietary hierarchical dictionary data [convert and flatten proprietary hierarchical dictionary]


There is a definite element of art to programming. If you do not wish to call it art, then one needs to accept that it as at least craftsmanship. Writing a quality program, or abstracting and developing a killer library takes a great deal of intellectual capital. There is enormous amounts of creativity involved in looking at and solving problems in code. For me not to consider this discipline as art is up there with stating that accounting and taxes are nothing more than problems we solve with math.

Ha! Have you ever known math that mostly boils down to simple arithmetic to be so mind bending?

Our buds at Wikipedia say that "Art is the product or process of deliberately arranging symbolic elements in a way that influences and affects the senses, emotions, and/or intellect."

They go on to describe traditional things like music, painting, photography as art. I own a bunch of different types of cameras and dabble as a rank amateur in photography.  I see many parallels between the two disciplines. The process involved in setting up a shot. Is it a worthy subject? Is the light right? How do you set everything up so the film records the same thing, the same experience you are witnessing? So many elements of design to consider.


If you are developing an application, and you are working with more than a narrow set of design inputs you are dealing with a similar canvas. There are numerous ways in which to can go about solving the problem. The technologies (the medium) you have to work with dictate how you will work. As you explore the possibilities and endless alternatives you begin to see patterns emerge. Will you, or how will you deconstruct and reuse these patterns? Again, so many elements of design to consider.

So we don't have galleries for our work. So much of the thought and design is only seen and appreciated by our peers and contemporaries. So what?

Art does not always have to be overt. Art does not always need to be for the masses. Art does not always have to be 100% pure. We call music art. Yet there are styles and genres (Jazz, Reggae, Rock, Country, Hip-Hop) that are nothing more than patterns we arrange. These higher order patterns are based upon a finite set of chords and notes and tones and symbols that we arrange and rearrange. Is programming that much different?

Okay, our net result is not something we can construe as art. But the process we go through to design and create can be. Meaning, it not always is.

I know many programmers that would not consider what they do to be art. And, I would concur that most coding is not art, and most people that code are not artists. This is reasonable. Not everyone that owns a camera and takes pictures is an artist either.

In the end I am not sure it really matters whether what we do is considered art or not. What matters most is that it is something we enjoy doing.