Offshoring: does it ever work?
Yes it does since many (large) companies recourse to offshoring/nearshoring/outsourcing and many (even large) companies make revenue out of it.
The main two reasons that offshore projects tend to fail more often than in-house ones from my POV are:
- The people from the hiring companies responsible with offshore projects are those who are actually mediocre.
- Brain drain from the offshore countries.
I am going to try to argument this statements bellow.
Are offshore programmers mediocre ones?
The assumption that programmers who are developing/maintaining code in offshore are mediocre programmers while the others are not is generally false. It can be asserted that are (on some degree) more mediocre but not that those in in-house projects are great while those in offshore are mediocre; actually generally speaking most programmers are mediocre no matter how they write the code.
A basic rule of sociology says that people are the same everywhere when observed as large groups; this obviously applies to programmers too. There is no reason to believe that in the US more people are born, with capabilities of being great programmers, than in India for example. The only way to measure a good programmer is the natural wish for learning new things in the domain and how these things work and brain capabilities. With a connection to Internet anyone with help from brain and eagerness of learning can know anything.
US programmers have advantage over Indian ones by being better educated (better universities) and invested more on; on the other hand many say that university does not really matter in the long term. Also they are better experienced since the software tradition is older in US and they worked on more interesting projects with larger budgets. But all of these do not really matter if the programmer does not like what s/he is doing or if the brain does not help, even if s/he graduated some Top 10 University or has worked on some kick-ass project; s/he will not be a great programmer but a mediocre one.
Brain drain from the offshore countries.
The main problem in the offshore place is offshore brain drain; many good programmers (not all) tend to leave the country and thus an offshore job for a better job (better salary, better working condition, more interesting project) working probably in an in-house project in a developed country. Probably a myth, but may be half true that the second most spoken language at Microsoft is Romanian. Speaking of language, offshore programmers speak at least two languages English, the native one and possibly the clients' if they are not from US/UK (German, French, Italian); this may say that they are not so mediocre, at least as people (not necessarily as programmers).
The people from the hiring companies responsible with offshore projects are those who are actually mediocre.
The great programmers that remain doing offshore programming may be arranged in a Surgical Team (somehow the way Fred Brooks says) and still do great jobs, but the problem comes from the other side. Suppose I am a higher manager and I have 11M $ to build to projects: one in house with a budget of 10M $ and one offshore with a budget of 1M $; I also have 2 lower-management/designers teams who are going to be responsible for each: one team is a great with lots of experience but the other not so great. How am I going to appoint them? Should I put the less experienced/mediocre project manager(s) and architect(s) to the in-house project which costs 10M $ or in the offshore one which costs 1M $ ? The answer is pretty simple: since offshore projects are not so expensive and thus not so risky as in-house ones they are going to be designed/managed/watched-over by more mediocre programmers/managers from the in-house company. The great programmers which remain in the developing countries for offshore programming often complain to their (offshore) managers that the clients are mediocre, they do not understand what are demanding, are having overrated estimates etc.