Look, Indians suck at actual computer design work. They are good coders but stink at being able to solve solutions long-term. For example, if the spec calls for an account code to be an "asset" then they will ask "how can I tell what is an asset?" The client says "it is account codes between 10000-11000" and the Indian codes "IF ACCOUNT BETWEEN 10000-11000 then..."
Americans, OTOH, ask "will this be true forever? What if "11001" is used by some future CIO? Then we follow with "let's tag the account as a type, then check for the type." This solution does not occur to the Indians (or Chinese)
I am already seeing clients who have been burned by this mentality and who won't even let us put a coder in project who has an Indian accent. Mark my words, in 5 years or less, Indian Offshoring will be considered the worst thing that ever happened to software design and coding. The smarter companies are seeing this right now.
Overall, that's true. They can bang out "pieces" of things but they don't usually have a talent for design. They can build you a specific part of a puzzle (if you spec. it out in great detail) but they can't see the completed puzzle at all. And they'd never dream it up in the first place. "Idiot savants" if you will.
As far as coding many of us outsource "piece work" to coders in various countries. Under short contract. It's grunt work more than anything else. I don't have to have a domestic coder do it and we get the source. It takes one of my guys to "oversee" the work and vet the code. That gives my "smart" guys time to do important things and I use the difference to pay them more money or hire more domestic contract guys for implementation work.
As far as software development goes there is an international sweat shop available. India is part of it. As far as I'm concerned from my personal experience the jokes on them.