I'm certainly not racist or protectionist. I have no bloody idea why, but the Indians doing the outsourced work cannot do independent thought.
I have some thoughts. I've been an IT professional for about 11 years now, and I've never really written anything on the web about Indians workers, though I've had my fair share of experience with them. I never wanted anything I said to come back and bite me in the arse, but I'm getting out of the game, so I'll share.
For the record every single stupid choice I've seen an Indian programmer make I've also seen a Caucasian born and raised in the midwest make. Their stories are pretty much the same: went to college, got a degree, got a decent job making good money, and they just never see any reason to push themselves beyond that. If they get booted during layoffs they'll just find another job in a large corporation where their less than stellar performance will be masked by others.
Of course, they have no idea their performance is being masked by others, but that's beside the point.
Generally speaking I think most people set out in life to try and earn a living a little better than their parents did. Every generation wants to see a little bit of progress for themselves. As it should be, in my opinion. Tech gets better (on all fronts) worker productivity goes up, costs go down on the basics, and they should have a better life.
It's a whole heck of a lot easier to achieve that goal when your parents are doing blue-collar work in India than it is in America where blue-collar workers can make some pretty good coin. So, in the US, you have to keep advancing up the ladder to make it happen. Well, at least now you do.
I entered IT in 2000 nearly at the end of the dot-com bomb. In 1998-1999 I was getting calls from recruiters halfway across the country promising me $50k/year or more for an entry level job. With no degree. There was a rush in the US where all sorts of idiots enrolled in computer science courses trying to cash in on this. It was absurd. When it all came crashing down nobody wanted every Tom, Dick or Harry with a CS degree -- they wanted people with experience. Some kind of talent, not just a piece of paper.
India's still in that boom period. More and more of this work is going over there and I doubt they've got the qualified people to fill them, so they'll take anybody with the right credentials. Just like US firms in the dot-com era they've got a lot of idiots and (hopefully) a few stellar performers that can clean up the messes and get people on the right track. When it crashes the trash will get weeded out, just as it did in the US.
So, that's my high level politically correct analysis.
On the other hand there are some obvious cultural differences. Any technical discussion with an Indian is going to have the phrase "NO! NO! NO!" spoken in the middle of your sentences more than you'd think possible. It would appear that complete thoughts are not exactly respected. It's extremely annoying when everybody is on a conference call and you have no idea what the three of them are yelling at each other about on the other end.
Their ability to punt the problem down the line is only rivaled by Congress. I've hammered down plenty of times with native US citizens on projects where the screwed the pooch and needed a hand to get out of it. No problem. It's what I do. However, I expect you to HELP me on it if I'm saving your arse.
I got roped into one project, as a sub-contractor, with no influence at all, and upon request from a project manager after I did all my assigned tasks, I introduced one LITTLE change into a giant .ASPX file written by the Indian team. This was not in my original scope. Suddenly every problem was my fault. I stuck 12 lines into a 5,000 line file. Suddenly I owned it because it broke their code.
Yeah, you wrote 3,000 lines of JavaScript that inappropriately referenced (hard coded object IDs) code-behind objects by their automatically generated names. There isn't one single scrap of literature anywhere out there that says you should have done that dumb monkey crap but you did. And now I have to fix it. Yeah, I'm still pissed about that. There were four of them that worked on that code and if it were my team I'd have nailed somebody's balls to the wall for trying that nonsense about 100 lines in.
And that gets me to my basic mantra on Indian programmers: They work harder, not smarter.
Why? I don't know. I see it in US programmers to, but just not as often. They usually get weeded out quick. I guess that goes back to the "boom" thing. They do it because it's all that they know how to, and they're getting paid for it, and they're only going to change when it's no longer financially attractive to behave that way.