The Pitfalls of Outsourcing Programmers – Forio:

But writing innovative software cannot be done on an assembly line. It requires hard-to-find development and design skills. Farming out development to legions of programmers overseas will not create a differentiation advantage. When a technology company outsources software development, that company loses its capacity to innovate and its competitive advantage.

Let's say it even more succinctly: When you hire a firm, you don't hire individuals.

With the amount of time the companies I've worked for spend hiring each individual, even on those occasions when it seems woefully inadequate, it's easy to see why outsourcing to any firm inherently multiplies the chances for cultural fit failure. The more tailor-made your product, the more expert tailors you need sewing it.

I'm not saying you can't find those experts and cultural fits in another country. You can. But then you need to hire on the ground there, and hire individuals. Once hired, you need to be able to ensure your communication with those outsourced folk is rich enough that your culture conveys. That's a heck of a lot of work compared to hiring for fit home. There's a huge hidden cost in outsourcing to a firm.

(This is also why you may see senior programmers get to keep their jobs remotely. You already know you have cultural fit and expertise. They can now work almost anywhere they want and be worth well more than the average contracting firm's placeholder.)

I'm not sure how well the metaphors work in the balance of the post linked, above (the "assembly and manufacturing" of software is usually taken care of by the filesystem. That is, it's not 90% design with software; there's essentially nothing but design), but the main point holds very well. If you want to have the school swimming in the same cultural direction, you've got to select [ever get midway through a metaphor and see it painfully crumble?] the fish.

Edit: It's only fair to add a corollary -- If you find an outsourcing team that does share you values and produces demonstrably high quality code (look, even a murmur of quality issues bears a few looks; rarely will your teams have enough time to do a full code review of one another "for fun"), for heaven's sake, don't let them churn employees, much less get away.

Labels: , , , ,