In India, we have thousands (literally) of kids graduating with computer engineering degrees every year. Now, the thing is, a lot of these degrees are pretty useless since the college/university that issued them is basically a money making machine, and nothing else.
However, there are a bunch of good places that produce very good engineers. The Indian Institutes of Technology are the most well known, but there are some others that are equally good (some of the top Regional Enginnering Colleges, and so on)
I think it boils down to numbers. Say we have 30,000 comp sci grads every year. Now say 60 percent of them are hacks who know nothing much and are only good for repetitive code work and stuff like that. 20 percent will be quite good, easily as competent as a good programmer in the US or wherever. 10 percent will be skilled at code and other stuff like management, the types who end up heading into upper management, 8 percent will be very good, and 2 percent will be fantastic.
The 2 percent mostly heads off to MIT, or CMU, or $TOPSCHOOL to do an MS or a Phd, but that still leaves a pretty substantial number of good people.
Now, when you realize that 30,000 is a low estimate, since the acutal figure is 175,000 (source: http://www.timesascent.co.in/index.aspx?Page=article§id=2&contentid=20080930200809301249051997b5b53a, and http://www.rediff.com/money/2006/jun/09bspec.htm ) you begin to see that while we do have a huge number of terrible programmers, we have a pretty good talent pool too. It's all about the numbers!
1 + 1 = 3, for large values of 1.