Outsourcing is hot! Every major corporation around the globe is outsourcing all or part of their software development. Examples come from all industries: banking, insurance, utilities and government. They outsource to the large software houses in for instance India or in the US and UK which of course have offshore development in India. And unfortunately the result is lots of unsuccessful projects. However, the failures are often never talked about because the vendor has got a fantastic contract and the customer won’t speak up about poor contracts that they reviewed and approved. This is wonderful business for the software houses. This reminds me of the saying: “My grandfather was a horse trader, my father was a used car salesman, I am myself in the software business.”
Why do these types of projects fail? There are many reasons, but they can all be summarized by saying that they were not smart. The buyer doesn’t know what he is buying and the vendor doesn’t know how to make it work. If you were as cautious when buying an enterprise system as you were when buying your own house, you would be much better off. Would you buy a house from someone by just saying “give me what I need”, and then pay them a fixed price? No, of course not, but this or similar is what many outsourcing deals are about. After the agreement the buyer just waits to see what he will get say three years down the road. On that path he will have to sign off on requirements that look good and complete, but which due to the ever-changing nature of software requirements are only correct to say 60%. Following that path you will get drawings that you don’t know if they ever can be built. At the end of that path you will have to take over the software without knowing for sure that it works for the people who are supposed to live with it. This is what people do. The vendors are protected because you agreed originally to sign off after each phase and you did so because you believed it would work. It doesn’t work for software. For enterprise systems it is a proven path to failure.
The vendor wants happy customers, but s/he just don’t know how to do these kinds of huge projects successfully. Or maybe the deal on the table is irresistible, and since, most often the vendor is more competent than the buyer and they won’t put themselves in a position to lose anything.
What I say here is controversial. However, someone has to say it. Now, it should also be noted that there are companies that are very successful in outsourcing. Their approach to outsourcing is very different based on an understanding on the nature of software, on the importance of starting small but scaling up as quickly as possible (but not quicker <grin>). I will in another column talk about succeeding with outsourcing. Some of the things I will talk about are:
Quickly build an architectural roadmap.
Separate work that can be given a fixed price from work that cannot reasonable be calculated upfront.
Split the big contract into many smaller contracts.
Make room for competition by specifying standards and tools.
Deliver early, get feedback early.
Simply you will have to be very smart.