I want to create an iPhone app for my web service, but I donât have programmers. Well, I donât have iOS programmers. And I donât have money. Sound familiar? What do I do? Right, I go to Google Upwork and find an awesome company in Bangalore that is excited to work with me for nothing reasonable money. In a few months and after a few thousand dollars, I realize this is not exactly what I expected. After yet another few months, I swear to God Iâll never outsource any software development to anyone. Is it just me? Not really.
This preamble is just a joke, but itâs not so far from the truth. Of course, in bigger companies and bigger projects, the story will be different. But the outcome is almost always the sameâit is a disaster.
Iâm talking about outsourcing, not offshore development. The difference is that in outsourcing, there are two companies involved: you the client and some WeCodeLikeNoOneElse Inc. from Loompaland. In offshore development, you just open an office in that same Loompaland with your own management and employees. Again, Iâm discussing outsourcing here.
Before writing this, I read a few dozen articles about why outsourcing fails, and Iâve found a dozen âreasonsâ why. However, I think they all miss the point, because they are looking at the problem from a paying customerâs point of view. I try to look at it from both sides and tell you the ugly truth. More on that in a few paragraphs. For now, letâs explore what the usual reasons are.
Cheapest Providers. Here is the argument: âSo youâre outsourcing because you want to optimize costs? You will end up with the cheapest software shop and sincerely regret it very soon.â OK, whatâs the solution, then? Just pay more? I donât think thatâs going to solve the problem; Iâll just burn more money. Also, I donât think this reason has anything to do with outsourcing specifically. In any other business transaction, a âwin-loseâ scenario is a straight path to failure.
Cultural Mismatch. âYouâre in California, and they are in Brazil; you wonât understand each other.â Is that why we have cost overruns, schedule slippage, and low quality of code? I donât think so. Moreover, my experience tells me the opposite. Our programmers at Zerocracy are from more than 15 countries, and weâve never had cultural issues get tangled up in any work conflict, which we have a lot of.
Lack of Face-to-Face Talking. âThey are far away somewhere in Poland, so you rarely really talk to them. Thatâs why you misunderstand each other.â Look, have you ever met me and had a face-to-face talk with me? Iâm talking to you, the reader of this post. Thatâs right, you havenât met me, but youâre having no problem understanding my point just by reading this text. Thatâs mostly because Iâve made all possible efforts to ensure my point is clear to you. Iâm interested in delivering my thoughts to you, and it is happening. In outsourcing, the problem is not with the channel but with the motivation. Read on.
No Metrics to Measure Success. âYou simply canât define clear metrics of success for a team overseas. Thatâs why your relationship eventually falls apart.â Or something like that. I didnât quite get whatâs meant by âmetrics of success,â but if itâs what I think it is, they are right: Success for a software outsourcing shop in Kyiv is one thing. Success for you, a client of this shop, is something very different. Read on.
Poor Specs. âItâs just not possible to make good specifications for most projects, and a poorly designed spec is a recipe for failure.â Yes, thatâs very true, but what does this have to do with outsourcing? Ah, right, they are so far away in Argentina and weâre here in New York Cityâhow can we make a good spec? I donât buy it. An inability to clearly and explicitly specify technical requirements is a flaw of the architect. Learning, training, and reading should fix this. Getting everybody together in the office is not a solution.
Leakage of Talent. âDevelopers offshore are not your employees. They will never be loyal to the project, and the best of them will quit once in a while.â Yes, people may leave once in a while. But again, how is that related to their location? If they donât use the same coffee machine as their CEO, will they be less loyal to the project? There are many other more effective instruments to boost motivation in a team than just co-locating everybody.
There could be much more, but this is enough for us. As you see, I donât find these âreasonsâ logical. They merely explain the consequences but never even touch the real problem, which I believe sounds like this:
Youâre just a cash cow for an outsourcing company.
Youâre neither a partner nor a friend, despite all your expectations.
Your goals are opposite of their goals.
All these âreasonsâ for outsourcing failures originate in this fundamental confusion that exists in our heads: We think these 10 programmers sitting in Beijing are part of our business. We believe they are our team. They are with us in the same boat, sharing the same values and looking in the same direction.
Itâs just not true.
It canât be true.
Iâve been in the shoes of an outsourcing company for almost 10 years (and quit in 2010). The ugly truth is that for a CEO of an outsourcing shop, the only problem is how to take care of the next monthâs payroll, and 90 percent of all expenses are salaries for the programmers.
Thatâs why a good customer for them is a paying customer. Not a customer with a successful project. Not a customer with a properly solved problem. Not a customer with optimized costs. Not a customer with the best possible technology utilized. Not at all. The best customer is the one that pays, pays a lot, and pays on time. Period.
Thatâs the root cause of all problems with outsourcing.
The title of this article states that outsourcing doesnât work anymore. Why anymore? Did it work before? Yes, it did, when salaries of programmers were extremely lower in third-world (offshore) countries. For example, in 2001, we had a team of very good senior Java developers in Ukraine. We paid them above the market price, and it was $300 per month. At the same time, we were selling their time to U.S. customers for $15 per hour, which was $2,500 per month. See the margin?
With such a margin, outsourcing works fine. I was a CEO and had almost no worries about payroll. I had enough money to pay my team, even if we lost some customers eventually. Let me put it this way: I had the luxury to be honest with my customers.
Not anymore.
Put yourself in their shoes. Today, a good Java developer in Ukraine earns $4,000 a month. On top of that, this developer expects health insurance, a free gym membership, free lunch, paid vacation, paid sick leave, etc. At the same time, the price of Java time is not much higher on the market than it was years ago. Even if you charge $40 per hour (which is very unlikely), your income would be $6,800. Again, your income is $6.8K and your expenses are close to $5K. See the margin?
And donât forget about office expenses, taxes, computers, administrative staff, team building events, etc. Because of such a small margin, you will literally be broke if you lose a key paying customer. You just canât afford to keep your programmers âon the benchâ for too long.
Thus, your lone motivation is to keep that cash flow coming. No matter what. The longer the project, the better. The lower the quality of code, the betterâmore money for maintenance. The more phone calls, meetings and other time-wasting events, the better. The more mess in specs, the better. Just do whatever it takes to suck money from the customer.
You have to do this, not because youâre evil but because you have to feed your team. Your team. Yes, the team is yours. Youâre responsible for their salaries, not the customer. In order to protect the team, you have to go against the real interests of your customers. You simply canât be in the same boat with them.
The point of all this is that outsourcing simply canât work, because your business interests canât be aligned with the interests of your outsourcing âpartner.â
