I’m not going to dispute the idea that programming can be considered an art form, but there is a consequence of that kind of thinking that has a great effect on software industry these days.

When I try to explain the software development process, I usually use the common analogybuilding software is like building a house.” It’s a good analogy, especially when you try to explain what the different members of a development project do. The analogy fails at one point, though: no one in his right mind would build a house where everything is designed and built from scratch, where every nail and board are constructed specifically for that house only. If you look at most software projects, this is exactly what is going on. You might argue that this is due to the lack of standardized components, and I would agree, but we have been talking about components in one form or the other for decades now, and there are still not many of them around. Why? Because we don’t want them!

When every developer considers himself to be an artist, every program he writes will be an attempt at a masterpiece. He will want to control every detail and even though he can borrow ideas from others, he will try to give it his own personal touch. There are tools and processes around that could turn software development into an industrial process like an assembly line, but can you imagine an artist working like that? No more masterpieces, just functional, boring software.

The software industry today is where the car industry was seventy years or more ago in this respect. Car designers and engineers were visionaries that designed new car models from scratch, building prototypes by hand. Some parts of the cars had to be constructed by “artists” and were, in a way, masterpieces. Now, most cars are built from stock components and designers do all their designing on computers, not even having to make a physical prototype. When the designing is done, they just send down the specs to the assembly line and a new car pops out.

I believe that this is how the software industry will look too. It’s boring and unromantic, but we must accept that we can’t deliver what the market demands, and we have to speed up the process. Unfortunately, this means that we need less artists and more skilled “assembly line workers”.