Some time ago I compared pros and cons of subcontracting. While I don’t say subcontracting is always a bad thing, it can’t be negated that sometimes it fails. Why is it so? I have several examples to share.
We outsourced development of a piece of our proprietary application framework. Guys who took the project were considered as gurus but there were some problems with meeting deadlines by them earlier. A risk which can be managed. We made a negotiation session, agreed on functionality range, price and deadlines. Then I stated that we want to add statement saying about forfeits, if they don’t meet the deadline. Their answer was that they actually could agree but cutting two third of planned functionality. Their credibility went out and hasn’t ever been seen after that.
Another company developed some software for us. We wanted to add internationalization and the easiest way to do that was to outsource the work to the authors. They should exactly know what had to be done – hey, they were the authors. Our team didn’t really have a time to take over the code then so they had really strong negotiation position, although they didn’t know about that. However, first price they gave was reasonable. When they doubled it I didn’t considered it as fair any more, but still wanted to give them the task. Then they tripled the price and rejected to lower it even for a buck. That was enough for me. They haven’t earned anything.
A guy was doing some small tasks in one of our projects. His only motivation was to get the money. He did know he wouldn’t support his pieces of code in the future. He did know he would be done after implementing his changes and software running several days without any issues. However, he didn’t take the effort to do his job even fairly. He finished when it looked it could work, and cut the contact (excluding reminding us about money we should pay him). It took a week to clear all crap he developed, as he rejected to correct it by himself. It took many hours to achieve agreement how we should account for his job. It would be few times faster and cheaper if we did it by ourselves.
We had a big and important subcontracting company, which was doing a lot of good stuff for us. Whole cooperation was built on some personal contacts and worked rather well. Guys were considered as our mission impossible team. At least that was the opinion when I joined the company. No one asked if they met the deadline – it was agreed by acclamation. However their intrinsic motivation to cooperate with us expired. I can guess the reason, yet I can’t be sure about that. Nevertheless after several months it appeared that their effort is much lower and their will to cooperate in the future disappeared. We were planning another couple of projects to partially outsource to them and we were lucky that we won only one of them. They took it but quality of cooperation was systematically going down and brought some unpleasant situations for both sides.
Another project and another subcontractor. Just a piece of code, rather not repeatable. Small risk. But still, there is some. Subcontractor changed his attitude and stopped any cooperation. Another time, I can guess why he did that and he can hardly be blamed for that. However, when a customer asked us for some changes we had to do a lot of archeology within the code. Nothing pleasant. Especially when you have some important things to do and you’re not willing to reject your customer.
That’s probably not a full range of reasons why sometimes subcontracting fails. As I stated on the beginning, that’s not a list which is intended to convince anybody to reject outsourcing at all. That’s rather a list of risks. You can manage them and it doesn’t have to be resigning from subcontractors in every case. Often it’s enough to remember that subcontracting brings some additional effort, especially for project and program managers and it’s not a panacea for every issue.