# Why Software Outsourcing Doesn't Work ... Anymore

Source: https://www.yegor256.com/2015/10/27/outsourcing-doesnt-work.html

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](https://www.upwork.com) 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.


{% jb_picture_body %}

This preamble is just a joke, but it's not so far from
[the truth]({% pst 2015/may/2015-05-21-avoid-software-outsourcing-disaster %}). 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]({% pst 2015/jun/2015-06-15-software-outsourcing-survival-guide %}).

{% quote All these reasons merely explain the consequences but never even touch the real problem %}

I'm talking about outsourcing, not offshore development. The difference is
that in outsourcing, there are two companies involved: you the
[client]({% pst 2015/jan/2015-01-26-happy-boss-false-objective %})
and some WeCodeLikeNoOneElse Inc. from Loompaland.  In offshore
development, you just open an
[office]({% pst 2015/oct/2015-10-06-how-to-be-good-office-slave %}) 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](https://www.google.com/search?q=why+outsourcing+fails)
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.

{% youtube 9j5pq71BS5U %}

**Cheapest Providers**.
Here is the argument: "So you're outsourcing because you want to optimize
[costs]({% pst 2015/jun/2015-06-02-how-to-estimate-software-cost %})?
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]({% pst 2015/jun/2015-06-02-how-to-estimate-software-cost %}).
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](https://en.wikipedia.org/wiki/Cost_overrun),
[schedule slippage](https://en.wikipedia.org/wiki/Project_slippage),
and low quality of code? I don't think so. Moreover, my experience
tells me the opposite. Our programmers at [Zerocracy](https://www.zerocracy.com)
are from more than 15 countries, and we've never had cultural issues get
tangled up in any
[work conflict]({% pst 2017/jan/2017-01-03-how-much-you-love-conflicts %}), 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]({% pst 2015/nov/2015-11-10-ten-mistakes-in-specs %}) 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]({% pst 2014/oct/2014-10-20-how-we-write-product-vision %})?
I don't buy it. An inability to clearly and explicitly
specify technical requirements is a flaw of the
[architect]({% pst 2014/oct/2014-10-12-who-is-software-architect %}). Learning, training,
and reading should fix this. Getting everybody together in the
[office]({% pst 2015/oct/2015-10-06-how-to-be-good-office-slave %})
is [not a solution]({% pst 2014/oct/2014-10-07-stop-chatting-start-coding %}).

**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]({% pst 2015/mar/2015-03-02-team-morale-myths-and-reality %}) 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.

{% quote Your business interests can't be aligned with the interests of your outsourcing partner %}

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]({% pst 2014/oct/2014-10-21-incremental-billing %}).
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]({% pst 2015/jan/2015-01-05-how-to-be-honest-and-keep-customer %})
with my customers.

Not anymore.

Put yourself in their shoes. Today, a good Java developer in Ukraine
[earns](https://www.payscale.com/research/UA/Job=Senior_Java_Developer/Salary)
_$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?

{% quote Your lone motivation is to keep that cash flow coming. No matter what %}

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."
