And here is the problem - articles like his one, saying how outsourcing doesn't work, are actually why outsourcing doesn't work. For example, consider someone who reads one article daily which says outsourcing doesn't work or that the resources are not very good. In last 10 years I have yet to meet a single client that gave the kind of independence you get as a developer in US. Yet every time all I read in a client's bad experience is that he/she had given too much independence.
I am in Bangalore and I work for a British Client. I WILL take the name, it is 3ds (French one). And here the only thing that matters is that client remains happy. Here is what happens here in Bangalore:
1. Client doesn't give any work which requires cognitive skills, since he is sure the return will be bad and he doesn't have time to take chances.
2. This in turn discourages good developers and forces them to:
a) Suck it up, forget about any career achievements and keep doing the maintenance job as mortgage payments are a bigger threat. Slowly the quality of output decreases.
b) Switch clients/jobs, which means sudden requirement of a resource and investing even more time in training him/her.
3. A lot of companies hear only bad stories about China stealing tech and making knock-offs, never mind that most of these knock-offs don't have any effect outside China and China is a closed market in the first place, that they have trouble handing over critical software/hardware for development. Half of my friends I know work via VPN even in office. In my office it is not possible to work on a laptop. I need to come to office and then work remotely. This is shit. Even with internet speeds in India being faster and cheaper than UK/US, when 2k people suddenly connect to VPN from a single point cursor stops responding immediately. This means slower work.
4. All meeting times are decided by client according to his/her convenience. Almost all of clients from UK that I have worked so far had literally 0 idea what its like to attend a scrum after lunch. Too early to start asking questions, too late to completely absorb the answers. US is even worse - most American clients set up a meeting at around 10:00pm (9:30am PST). Then they complain that people from India don't talk a lot.
5. Worst is pacifying a client's ego. It is not possible to tell him that he has done something wrong. It is not possible to squarely go over his authority and fix it. So Indian managers let the failures lurk for longer than necessary, and at the last moment find some scapegoat and hope the client doesn't fire him.
Mediocre developers are who make it big at the end. They stick around until H1B and then earn hefty amounts abroad.