Yesterday I was talking to a researcher at 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, 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.
- You agree about the subject that needs to be painted: YOU.
- You agree about the context: WHAT will be around YOU.
- 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 until the artist is finished. You won’t be able to request 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 an 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 on 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 on 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 the implementation. This enables you to give additional input, add knowledge and assure the developers follow the right (YOURS) 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!