I would agree to Ian, on a lot of what he has said:
But what I don't agree on is that Indian programmer is not more economical (I would not say cheap) than his American counterpart. A programmer of same competency would cost 3-4 times more in America than in India. India is just too good a place when consider cost against productivity for a programmer and this is what is driving outsourcing.
It is simple economics, globalizations and free markets (Isnt’t these American values). I don’t know why there is a big hue and cry now, and not when manufacturing moved from America to South East Asian countries.