Thursday, October 18, 2007

From the Mailbox: Software Development: Art or Science?

Here’s a question that I didn’t realize I had much to say about until I read my own response.
The Question:
Software Development: Is it an art or a science? An age old question I know, but what do you think and why?
My Response:
I refer to new software development as a scientific art. I've seen some maintenance work, platform porting, etc. that has been almost entirely mechanical -- I'm not sure what that counts as, but I certainly didn't witness anything "artistic".
I came to this distinction watching my brother's career. He is a scientific-glass-blower to earn a living. He has a degree, he makes high precision, custom order, scientific instruments out of glass. It's amazing to watch. It's hands on. Most people would call it a trade, but the degree to which he has to understand composition of materials, thermodynamics, stress points, and on, and on, and on, is nothing short of scientific. During the day, there isn't much art there, but the items he creates are absolutely artistic to my eye.
In the evenings, he does artistic glass blowing in the glass lab he (with the help of my father, the retired shop teacher) built in the garage. There the art comes first, but to make the art, again, he has to use scientific knowledge, such as exploiting 10 degree differences in melting points between colors of glass to create his art (or something to that effect, I admit that I don't have all the details and that I may be messing that up, but I think the point is clear though).
I think the closed commonly used term for something like that is a "craft", but (my best guess anyway) is that software folks reject the idea of being labeled "craftsmen" because software folks want to be seen as "white collar" and most folks seem to associate "craftsmen" with "blue collar".
I'm sure there are plenty of other careers/industries that have the same trouble classifying what they do. The challenge with software development is that because it is (relatively speaking) so young and poorly understood that the titles and classifications that get stapled to it impact the practices that are expected.
Purely artistic practices are not useful for commercially driven software. Purely scientific/engineering practices are not useful for software containing virtually any degree of innovation. I believe that most (and if not most, certainly a *whole lot* of) software is both commercially driven AND innovative.
Thus, until someone comes up with something better, I'm gonna stick with "Scientific Art".
Scott Barber
Chief Technologist, PerfTestPlus, Inc.

Co-Author, Performance Testing Guidance for Web Applications
Author, Web Load Testing for Dummies
Contributing Author, Beautiful Testing, and How To Reduce the Cost of Testing

"If you can see it in your mind...
     you will find it in your life."

No comments: