tl;dr: It is just a population of homo sapiens. You will have good and bad people.
E.g. not every guy of an Indian ethnicity is a yes man to use ideas from malux85's anecdote. Neither are women inherently bad at math or computer science to use Larry Summers's stupid-ass argument.
With those out of the way, there is one thing I've noticed:
There tends to be a culture that they always immediately say "Yes" to any request, even if they have absolutely no idea where to begin.
This is not the "I haven't built this exact thing before, but I have built two things that are similar and should be able to hook them together and change behaviour" <-- that thing is part of normal programming life.
No, this is more like "I have absolutely no idea if the technology stack can even DO what you're asking, if it's the correct choice, or if I am even remotely skilled enough to implement this" ... just immediately say "YES" and head over to stack overflow to ask questions.
I have a good friend who is a developer from India, and I asked him why this is, he told me that "There's a culture in India that you just say YES to your boss and never ever question him or his methods, the employee just says YES and then does their best to figure it out"
With this in mind, I always make sure that when dealing with Indian contractors, at the point of where I would normally go over the high level implementations with contractors I make an effort to dig a bit deeper, just to make sure there's good understanding and no miscommunication.
Overall experience has been good now that I know the cultural gotchas.
EDIT: One other bit of advice my father gave me "Pay peanuts, get monkeys" .. this sums up most of the problems with code I see :)
I will say that I've noticed a distributing trend which points to a lack of integrity among some of the Indian programmers coming straight from India. Two things in particular were astonishing to me:
1) Many of the Indian programmers routinely lie on their resumes about their experience. If they took a 6 month training course on a technology, they will say they have 3 years of experience.
2) In some of the larger consultancies, a skilled developer will sit for all the phone screens. Then they will send over who ever is available on the bench for the projects that the skilled person interviewed for, whether they sat for the interview with the client or not.
If you know what to look for, these types of individuals are really easy to spot. The unfortunate problem is that many big company hiring departments don't know how to spot them and they impact the reputation of anyone of Indian origin.
Other than that, I work with a couple of extremely talented Indian devs that are full time employees of the company. I think the issue is that people jump to India for dirt cheap work, and they get it, but it starts to develop a pattern in your mind. I think if they local hired high school kids for the same pay rates, they'd have the same quality of work.
The misunderstanding lead to software that had good quality but often didn't do what we wanted :\
This.
If you want me to cook a new dish, you should give me in writing exactly what you want or at least make sure that you carefully read (in full) and sign off the requirements/specs document(s) produced after our discussion. Clients 100 percent (yes I mean it) of the time aren't even sure about the full requirements, let alone clearly conveying them during initial stages. This always ends with this word "misunderstanding".
I'm saying this from my experience working with both small and large fortune 500 clients.
I guess that happens when you are cheap and not only limited to Indians, but to be honest, every time I have to "fix" outsourced code, it's from India.