OutSourcing can go horribly wrong. Sometimes the communication is ineffective or more expensive than you imagine. If so, this is an example of a ModularityMistake, where you've incorrectly identified the modules and their boundaries. (Compare TheCityAsInformationSystem for a discussion of comparable mistakes in urbanism.)

This seems very clear when people talk about off-shoring and out-sourcing software development. A discussion on JoelSpolsky's site : (suggests http://discuss.fogcreek.com/newyork/default.asp?cmd=show&ixPost=2160&ixReplies=17) suggests) that most off-shored out-sourcing is based on the separation between design and code that was the big error of the modernism of software engineering. ( WhatIsToBeWritten)

Here, there are many problems due to failed communication. But it seems to me that there's no reason that off-shoring needs to incur those communication costs. It's the bad module drawing which is responsible.

For example, I recently met a woman who runs a software company here in Brasilia. Her company produce a piece of enterprise software (I forget what) and the company and software have now been bought by an international group and integrated into a larger supply-chain management suite. She was completely in love with ExtremeProgramming having just had a team from Germany come over to demonstrate it on a short project which they brought down from an expected 6 months to 1.

Now she's planning to start using XP throughout her company. And I expect their module will benefit from the result.

I can't point to results here, but my hunch that this is the way off-shoring will work :

  • Find groups in cheaper countries who are already producing embrionic versions of what you want.
  • Teach them the best (agile) methods for working.
  • You need to specify what you want, but not design the system. No one needs to do BigUpFrontDesign.

Update : for various reasons I can't go into in much detail, I just realized that the above anecdote is hilariously wrong. This particular company certainly didn't successfully learn and apply ExtremeProgramming or any other Agile technique.

Nevertheless, I still believe that the bullet list is right in principle. Compare that last item to some of JohnHagel's stuff on loose specification in the Chinese motorbike industry.

RobertXCringely : Somewhere in the mid-1980s, just as PCs and networks were beginning to have their way with corporate America, the definition of outsourcing changed from buying outside services that you couldn't afford to do inside to buying outside services that you ALREADY WERE doing inside only outsourcing would save money. Maybe it was Gartner, maybe Andersen Consulting, certainly some outfit was the first to add this slide to their presentation deck, and while it makes some sense in theory IT IS VERY DIFFICULT TO MAKE WORK IN PRACTICE.

http://www.pbs.org/cringely/pulpit/pulpit20040325.htm

Best comment on the Spolsky thread points out that if you out-source software production, you're only making a saving on a one-time cost, not a cost-per-unit. Is it really worth it compared to say CheapChineseCars?

Update 2012 : There's a growing recognition of the problem. And attempts to reshore : http://www.nytimes.com/2012/12/14/business/companies-see-high-tech-factories-as-fonts-of-ideas.html