Imagine this. You are running a company in the travel business. Customers contact you to buy a trip from A to B. Typically this is done using state of the art web technology, a web browser communicating with a server which hosts a ‘travel’ application.
Through your contacts you have heard that almost all your competitors are planning on launching a new feature in a year from now. Customers will be able to buy trips from a mobile device, a cellphone for instance, very easily. Marketing says that your market share will be dwarfed if you don’t follow.
You start to think.
You know your budget for the web is limited, you can’t get any more money. It is in fact very strained. “… But, hey, I can use it better”. You decide to outsource the development of this development effort instead of running it as an in house project, to cut costs. And in the same stroke you can add developers, thus gaining speed. You’re a genius!
Is this really a valid alternative?
All of you who have been in a software project knows that adding people to a project scales poorly. If at all. But for the arguments sake, lets say it’s a linear function. Double the developers, double the speed. In effect, you have just gotten a temporary advantage by outsourcing anyway.
I say temporary because your competitors might do the very same thing. And this is actually what is happening all around us. And outsourcing is so common nowadays it is called ‘best practice’ by many. Or ‘good practice’ by the cautious.
I consider advantages of an absolute nature to be more desirable. So, how do you gain a real advantage then? In this particular case, an improvement of your own organizations performance would be an ‘absolute advantage’. That is, an improvement in your own performance, compared to the performance of your own organization, at a past time. Let us say that you deploy 4-5, running, tested features (RTFs) a week. In order to improve you would have to raise that number. You would have to deploy more RTFs, not lower the costs by, for instance, outsourcing your software development to a cheaper alternative. That I would count as a relative advantage.
What is the problem with outsourcing?
If you where looking at the bigger picture, which you should be doing, you would notice that you are sub-optimizing. You are trying to cut costs and maybe increase your productivity at the same time. You are not managing the flow of new functionality which would be the better approach. As I pointed out earlier, outsourcing might just work. That is, it may be a success in itself. In this example though, what you really did is just plain ‘waste outsourcing’. You found out that development costs could easily be cut in half and moved it to another country.
At best you have just begun draining your organization of domain knowledge. Why? Because once you have started outsourcing something you are not going to be learning a lot more about that.
Oh, one more thing. By outsourcing your waste, you have just made sure that there is no incentive for improvement. That would be suicide for the organization you’ve just started doing business with. In fact it will probably be more wasteful over time.
What will it be?
If you are serious about using IT to do business more effectively you should do all your development in house. You should start looking at the software development process and work out ways to make it less wasteful.
Stop outsourcing your waste and make IT an integrated part, a first class citizen, of your business!