,

Software development is art and artists are hard to handle

590365_street_painter Yesterday I was talking to a researcher of the Amsterdam University. As Goyello we take part in the Symbiosis program and from time to time they measure the progress of all the participants. During the interview we concluded that in many outsourcing projects in general the demand management is the weakest part and the main cause of failure. Nothing new, I stressed the importance before. The main question is probably why this keeps going wrong. I think the answer is simple: Software development is Art! And artists are hard to handle.

You might think the above is rather a bold conclusion. Yep, it might be. But let’s dig into the subject a bit deeper.

You cannot completely manage the output of an artist

Let’s assume you are walking along a nice boulevard. The weather is beautiful, you are in a good mood.

At the side of the road several artists offer their services. You think it’s a good idea to let one of them make a portrait of yourself which you can give away as a present.

  1. You agree about the subject that needs to be painted: YOU.
  2. You agree about the context: WHAT will be around YOU.
  3. And you agree about the PRICE.

All in all it’s a fair deal. You sit down, relax and wait.

I guess you will have to wait till the artist is finished. You won’t be able to request for changes. The artist is going to paint YOU like HE sees you. Quite for sure the end result will surprise you. It will be the agreed portrait of YOU for the agreed price. And it’s almost 100% sure that it doesn’t look like you imagined it to be.

The painter did what you hired him for. He prepared HIS artist impression of YOU. You won’t be able to fully manage the output of an artist. The maximum you can do is agree about the boundaries, the scope.

Software development is art as well

Many people think it is possible to fully define a software development project from A to Z. Honestly, some years ago I used to be among them.

My opinion has changed. Too many software projects which are very well specified fail. Clients complain that they don’t get what they requested for. It seems that, although they tried to completely specify their needs, there is still too much room for interpretation.

Software development is a creative process. Before you can convert a feature into code interpretation will be needed. As I wrote before “Software is art, code is poetry”.

Let’s take translating a book from one into another language as an example. For both languages there are strict rules how to use that language. Still you will get different translations if you give the book to different translators.

In software development it’s even harder. In general there is no defined set of rules how to understand the client request. Multiple software developers will explain the same request in a different way. The good ones will ask questions to try to understand the request better, but still there will be room for own interpretation. If not, we could just enter our requests into a computer and a code generator would build the application.

Better be involved and enjoy the creation process

As a client you should realize software development is a creative process. Make that you will be involved during the process from definition, design up to implementation. This enables you to give additional input, add knowledge and assure the developers follow the right (YOUR) direction. Have fun together with the development team. Consider an Agile, on short iterations based, approach.

By doing this the portrait will probably look a lot more like YOU!

[Picturs source: stock.xchng]

VP Software Development Europe for Aspire Systems. Sociologist and electrotechnical engineer, a great combination that stimulates him to look for the best working software solutions for clients. Passionate about converting great ideas into new solutions. Married and a proud father of 3 great sons. Training for and participating in triathlons/runs to stay fit.