Categories
Archives
The Devil's in Both (the details and the big picture) | Home | Introducing : ShuffleStack
Filed under Thoughts on March 2, 2007 by Chris LoSaccoSoftware as Art
Why is building software often compared to bridge building?
In college, I took an advanced Comp. Sci. elective called Software Engineering where the analogies to construction were many and, seemingly, widely accepted. And I agree, in large part, with these parallels. There's a lot of overlap between the two realms.
But I am increasingly finding that really successful, groundbreaking, go-where-no-software-has-gone-before kinds of products are sprouting up around the philosophy that software is more an art than a science.
What evidence is there to back this claim? I would suggest that there are a few items about software which separate it from its more physical constructed counterparts; this is not a new idea. But in my mind, there's one reason paramount to the others.
Software can change. When I build a bridge, I know I'm done when there are cars driving over it every day. Users interacting with an application does not imply any sort of finality about completion. It's an inherently "scoped" process - the bounds around a project are decided up front (or sometimes not) and arbitrarily enforced - because the end result can change relatively easily on a whim. Tweaking a line of code is quite different from, say, moving a staircase two feet to the left.
And so I find it intriguing that the art of building software isn't about realizing a blueprint, about finding that endpoint where the cars are driving over the bridge. It's about embracing change, writing magnificent code that feels right, creating an application that appeals to us on a deeper level.
A great example of this kind of development is the new wave of chess-playing programs that discover incredibly insightful techniques which have eluded generations of grand masters. Our first crack at intelligent chess was brute force - just figure out all of the moves, already! - but the sophisticated programs that have evolved use subtle logic and best-guess approaches to produce playing styles that even their creators didn't (couldn't) imagine.
This sort of thought process makes sense to me on an intuitive level. Writing code isn't an act completely free of constraint, of course, but some of the best artistic expressions have come under heavy constraints (perhaps Shakespeare's use of iambic pentameter, or Picasso's blue period, are good examples). Elegant, artful solutions to complex problems have a sort of intrinsic appeal.
I think that the future of software is in these strategies and methodologies, the ones which cast software development as an artful process rather than an engineering one. Clever and creative products, both in interface and in code, are attractive! And popular. And successful. There's little doubt that we, as creators and software professionals, should be doing all we can to
So let's starting thinking about software as art, and not as bridges. I'm willing to bet some great stuff will happen as a result.
Trackback Pings (TrackBack URL for this entry)
http://www.arc90.com/cgi-bin/mt4/mt-tb.cgi/61.
Comments
Absolutely.
The vehicle analogy is right on; one of the great, unprecedented things about the art of software is its delicate interplay with, and reliance on, science. When you are building tools, there's always that bottom line of functionality (does this thing do what it was built to do?).
I firmly believe that it's an artistic approach to software design and construction that allows good product to become great ones. It's the extra something that can push software to the next level. And that's exciting.
Posted on April 15, 2007 10:32 PM by Chris LoSacco
Programming is all about following an idea, but the idea can be followed in many ways. You do not have to follow such strict rules as architects do, but it is not as loose as art. It is that fine layer in the middle.
Posted on August 29, 2007 8:01 PM by Greg
The Devil's in Both (the details and the big picture) | Main | Introducing : ShuffleStack

I know I'm a little late on this, but I'm going to comment anyhow.
First - I completely agree with you, software designed as art does seem to produce more revolutionary results.
Interesting, though, is that all software is (necessarily) based on a science - lines of code can be pretty, but that means nothing when it comes to the machine. Clean, concise, artful code is a result of not only inspiration, but years of scientific research into successful design patterns and structure.
To throw another analogy into the mix - it's like designing a vehicle. Clean body lines and a smooth ride all add to the experience - but they're a result of working with science, not without it.
It's almost another genre of art, really. Thinking outside the box - all the while using tools you pulled from within it. Good stuff.
Posted on April 15, 2007 2:42 PM by Chris Dary