Recently I had several interesting conversations each touching upon the interests of the outsourced parties and whether it is at all makes sense to perform (long-term) outsourcing.
So the basic idea is that unless you buy a ready-to-use product or a product that can be customized to your needs you end up with a piece of software that you need to improve by a party that in fact does not have any incentive to improve it! Actually the opposite is true – the more ‘work’ the outsourcer gets in a form of bugs, fixes, ‘redesigns’, etc the better is it to him, but not at all for the client. In this ‘vicious loop’ if the outsourcing party is doing their job ‘too good’ they run out of work. Oops, that’s not good. And of course not completely true, as there is always a lot of work and you don’t actually run out of it, you may only run out of money to do it all. And of course you run slower out of money when you get somewhat cheaper workforce… but do you?
Few days I was also triggered by a rather lengthy article in The Atlantic (not that I am a regular reader, but was tipped by a friend of mine). One interesting point which is actually a continuation of the basic idea above is that if you outsource not only that you forget how to make it (which may be not that bad thing actually), but you stop improving/innovating, while when you have to do it yourself under budget constraints you have to come up with innovative ideas in order to survive. The party that is making things for you is happy to make them, but they more often than not behave like ‘you say we do’ rather then ‘let me see how I can it better’. For them the ‘we are cheaper’ argument is often the only selling point (next to ‘quick’ scalability, which may be not that quick after all), but that is completely not the case and in the recent years apparently becomes less true.
So let’s have a look at what we get when we outsource a (part of) software product:
- Price. (Hopefully) a significantly lower hourly rate;
- Scalability. Access to extra resources which may be not available locally;
- Knowledge. Specific expertise (again, which may be not available locally);
What is normally not on the list, but is a part of the total package are:
- Overhead. Communication is just not the same as it happens in the same room or even building; often it is easy to talk to a guy next door/desk, grab a romo with a whiteboard or next to the coffee machine and you’re done. Well, that does not work overseas. Technology gives you a jumpstart, but things like time, cultural and other differences will show up pretty soon. You just cannot talk in the same way to somebody in front of you and over the phone/Skype/whatever-you-like. And whenever you decide to meet each other you face additional overhead time just to get there and back. While the travel itself may be not that bad (it is nice to see other places), but form the business perspective it is really questionable.
- Extra ‘hidden costs’. Well, the overhead costs much, but there are also indirect costs. Travel, hotels, extra hours,
- Lack of improvements/innovation. This may be a surprise. But think of it. Why should they? Of course, your outsourcing partner has to prove they are better, and they may even be, but it is just not in their incentive to innovate, cut your costs in making software better. That would decrease the hours they can bill, which is not good for their business. Let me put this straight – they are NOT bad guys. They just seem to have different incentive.
Are we doomed then? I don’t think so. It is just that the outsourcing strategy has to include creating the correct incentive at the outsourcer side. So you give a product to develop. What can make the outsourcer start taking care of quality, time to market, etc? There may be differens strategies, but there is what I have seen or think may work.
- Spin off a product. OK, you are going to outsource something. If this is something that can be used outside of your company? If not – do you really need it? And if this is crucial to your business was it worth outsourcing it at the first place? So if it is a rather common product consider making it a real product, let the outsourcing party polish it and license it to … you. Among others. Just make sure you don’t pay for the complete development with your license, but only for a part of it. Immediately you create incentive for improvement, further development and perhaps marketing. You shift your product from the category of ‘totally custom’ to a ‘customizable’ or even ‘ready-to-use/off-the-shelf’ products. And the product will have to have other users as well, which may be beneficial for all users as you may get features ‘paid’ (requested) by others. For the same license fee. Of course ‘others’ may be just another department in your company (if you work for a big one), but it is still different from giving a piece of work away just to get another unfinished piece back.
- Parallel outsourcing. This one is somewhat harder to manage, but giving parts of product to different parties and have some healthy competition may give good results (just don’t throw away ‘healthy’ from the previous sentence!). In this case you have an option to select a better partner and if you allow building up knowledge on the whole product at both outsourcing partners you also get ‘insurance’ if one party drops for one or another reason.
After all it has to be put in a right perspective. When you give away something to an outsourcing party, you have to make sure they will WANT improvement. How? Let them own the product, but not just formally own, let them sell it. Whaaaat? Sell my stuff? Yes, let them make business out of it, but not just by making hours, but having interest in the product, in innovation and improvement.