There's been plenty of kafuffle lately over how development jobs are getting outsourced to other countries... but I see no downside to this, no matter which way it goes.
The reality of development, even now, is that the majority of software development projects fail. Back in 1994, the Standish Group wrote The Chaos Report, which was an evaluation of 365 groups of people covering 8,380 applications. Of those projects, 31.3% of them were cancelled before completion. 52.7% of the projects went more than 189% of their original cost estimates. Only 16.2% of projects were completed on-time and on-budget. So depending on how you measure failure, you can choose between 30% and 80% of software projects being considered a failure.
Now that was ten years ago, and the Standish Group continues to publish the Chaos Report, they just charge a bundle for it. But some folks that have paid the money say that in ten years, things have improved. Outright failures (project cancellations) have dropped to 15%. Still, its not a trivial failure rate. And there are plenty of other reports to reflect the on-going problems with building software.
These reports all say the same thing. Project don't fail because of inadequate technology, or even inadequate programmers - they fail from bad planning. Lousy requirements, poor tracking methods, weak quality assurance, and so on... in the end, its all bad project management problems. Computers can do the work, and programmers can (usually) write half decent code, but getting them to write the right things is problematic.
This issue only gets amplified when you go to offshore development. If you don't have a plan to handle the logistics of the project, you're going to have just as a big failure offshore as you did on. Maybe it'll cost you less, but its still a failure.
Some folks talk about the need for architects, but I think the local role in an offshore project is bigger than that - the requirements gathering, project progress tracking and quality assurance evaluation represent a ton of work. And, as with all projects, as soon as something is built, it needs to be changed, so there's more work in dealing with the changes. And if these things aren't being handled well, you're going to fail.
But suppose (and this is a big supposition) that you do get your application successfully built using outsourced developers. In fact, suppose (and this is REALLY a big supposition) that all these applications get built perfectly. What then? Well, there's still plenty of work building better apps. Its not like there's any shortage of software to be built. Most companies I know are only willing to talk about the one application they need right now because its so hard to get anything finished. But when you drill deep into their plans, you see dozens of prospective applications.
Reducing the cost and increasing the speed in which applications can be built can only be good for our industry - it means MORE work, not less.
So, regardless of how the outsourcing movement works out, it can only be good - if it fails, we're back where we started, still trying to build applications because its hard. And if it succeeds, we're going to build more, better applications.
Of course, this is all roses and sunshine as long as you aren't the programmer getting laid off because your company is outsourcing development. There aren't any easy answers for you... including blaming the loss of your job on outsourcing. This isn't the first time jobs have been shuffled, and its not the last. And as for that “of course its easy for you, you're not the one being laid off” argument... grow up. I'm not being laid off because I work for myself, and I stay focused on having an effective return on investment for my customers. If you did the same, you'd be fine too - self-employed or working for someone else. Valuable people stay busy - there's always more work than time.