Posted in Software Engineering, Technology
Saturday, March 11, 2006
I was thinking about the whiny outburst of former Winamp programmer Justin Frankel a few years ago. He started Nullsoft, made Winamp and then sold it to America Online (AOL) for $86 million. Then the renegade developer released a piece of file sharing software that was embarassing in light of the proposed AOL and Time Warner merger. When AOL did the corporately responsible thing by blocking the software. Frankel threw a fit. In his blog entry he states: “For me, coding is a form of self-expression” and “The company controls the most effective means of self-expression I have”. Boo hoo, poor millionaire! He did not get much sympathy from us professional developers.
So, I pondered these questions: Is coding really a form of self-expression? Can software engineers express themselves in code? Can programming be considered art?
Let me clear us something. Coding, or programming, is only one-fifth of the complete software engineering process. All of the steps are: design, programming, documenting, testing and maintaining.
I like to compare software engineering to building a car. Is car building art? The process of assembling a car can hardly be considered a form of self-expression.
There are certainly cars that people think are beautiful. But mechanics do not sit around with stacks of auto parts and try to make a Mustang. There usually is a design first. Also, most cars are safety tested. I think it is irresponsible to release software without testing it thoroughly. Why aren’t more software companies held responsible for the financial impacts that their buggy products cause? How is it we have come to expect computer software to fail? That is a discussion for another blog entry.
How does software get written? In the corporate world it starts with a business problem. For example a chain of Mexican restaurants might ask: “How many fajitas did I sell yesterday?” The initial step in software engineering is to identify the business problem and gather requirements. Then a design is developed. If a design is good, then the process of coding is almost mechanical. Of course, there are issues that arise that need creative solutions. I think the structure of software code and creative solutions to issues are the closest a coder really comes to self-expression.
So, can programming be art? No. Coding is best accomplished by a disciplined engineering approach rather as an art project. The resulting software can be admired and maybe even be considered art. But sitting at a computer and writing code is not a form of self-expression. That’s best saved for blog entry comments. Practice self-expression. Please post a comment.
