Indian programming shops suffer from the same issue that our own ones do: lack of quality control. The difference between a good and a bad programmer is a factor that runs into double digits, but that doesn't do you any good if you're unable to recognize, attract, nurture and reward talented people. Most firms in the western world fail miserably at this. Why should India be any different?
Another complication is introduced with outsourcing. Before, the manager was responsible for hiring and staffing teams, and appraising their employees. That was too troublesome, so development got outsourced. Now they complain that the Indian programmers don't understand their business. Well, sitting half a world away working for a different firm tends to do that. They also express disappointment in the fact that the Indian team is about as dysfunctional als their own old team, despite assurances from Indian management that they are a highly professional shop, CMM level 5 hundred, ITIL-trained, ISO over 9000, with all the right certificates. Must be that the Indians suck at programming, right? Or maybe it's due to the fact that you thought you hired 3 FTE worth of average programmers, but you didn't get 3 FTE, you got Gupta, Lakhsmi and Pradeep. Gupta was struggling a bit, but Lakshmi did well, however she quit and joined a firm that paid better money. Pradeep is brilliant but he got moved to a different team doing a difficult project for a high level client.
There are good Indian programmers out there, and I've worked with them plenty, but through the layers between myself and the remote teams I found it hard to find the good ones and even harder to retain them. That is another hard lesson about outsourcing: if you do it, you may think you're outsourcing responsiblity and buy with it the right to scream obscenities at lying vendors who underperform, but you have also largely lost the ability to control your team, who is in it, and who gets rewarded for good work. You now rely on the vendor to do that for you, but guess what: he may have different interests at heart.