Ted Neward argues that "programmers shouldn't fear offshoring."
He has two theses:
- Unlike previous industrial revolutions, the demands in the software industry are such that there'll be plenty of work for all; and
- Best practices seem to indicate that physical proximity is important to software success
I'd like to agree, but I can't. Neward's first point is argued in terms of productivity, and he says "Because what's expected of software is constantly on the same meteoric rise as what productivity gains provide us, the need for programmer time remains pretty close to constant." Putting aside the premise that there has been a "meteoric rise" in productivity, the argument only speaks to the total size of the market; there's no reason to think that the domestic market will stabilize relative to the international market.
His second point is definitely more substantive. We absolutely know the importance of communication in evolving requirements. We absolutely know that the waterfall model of a document of perfectly accurate and unambiguous requirements that can be handed to a development team to implement is not just mythical, but a harmful myth. Quality issues are definitely an Achilles' Heel of outsourcing projects (if this were an article, I'd dig up supporting citations from CACM, ACM Queue, and Software Development).
However, the large majority of U.S. domestic software teams do not exploit their advantages of proximity and communication. Sure, team leaders and analysts work with stakeholders and, in a domestic team, then work directly with programmers and there's definitely some advantage there. But how many coders see communication as their competitive edge? How many programmers say "Well, yeah, I could spend the morning learning this API that will be used, but it's more important that I spend the morning in a meeting with users"?
A lot of programmers feel more comfortable ? more productive, more fulfilled -- working with code than with people. That's not a value judgment, it's an observation (including, yeah, the way I sometimes feel myself). My point is that physical proximity is not a substitute for communication.
Look, I'm offshore, but I stay busier than I can handle because I can talk very clearly about software, not just when I'm writing articles, but when I'm developing software for clients. It's no substitute for face-to-face communication and whiteboards, but I do have an advantage in that I can discuss my code (over the phone or in writing or if I travel) in terms of higher-level things, like design patterns and OO design and systems analysis and risk analysis, etc. That knowledge and clarity about non-coding issues is the advantage that allows me to be an offshore coder. And, when I look at newsgroups and forums and other resources, it looks to me that interest in these type of issues is, if anything, more common among non-US programmers than among US programmers.