So, if you want good freelance developers it might be difficult to find good one in India. But, if you are a startup that gained some traction in the US or elsewhere and want to start an office in India, you'll find good developers if you pay well.
I've dealt with outsourcing to India before and share many of the same headaches mentioned in these comments.
I know it's a generalization, but I believe it's fairer to generalize about Indian outsourcing businesses than about Indian individuals: these businesses are doing their best to maximize profits, like any business does. They hire very low, mark up quite a bit and (in my experience) misrepresent their talent pool.
Conversely, I've worked with a number of brilliant Indians at a large corp here in North America.
The good individuals leave after a couple of years or less. The turnover is really high. They leave for the same reasons anyone would: better opportunities, mentorship, culture, money, etc.
In reality, it's a smoke and mirrors game where the outsourcers mostly win. Indian individuals get a bad rap.
It's increasingly obvious there are no gains from offshoring unless you have other more compelling reasons (e.g. 24 hour/global support, shortage of local talent pool, global availability, etc...)
Anyone who is good and asks for a higher salary is quietly moved out.
In an IT services company it's all about the billing rate. A manager can always be billed at a higher rate than a lowly developer. So say you've been a developer for five years. Now the company can no longer "afford" to bill you as a developer.
So they'll force you into management so that they can bill you as a manager. I've seen brilliant developers , who're still interested in writing code , but now all they do is fill excel sheets and status reports. And you'll be forced to manage multiple projects so that they can make even more money off of you.
Otherwise you'll forever be stuck at a lower pay grade as a "mere" developer.
IT services companies have a super low cost business model and they aren't interested in moving to the premium end of the market.
The attrition in this sector is enormous. Just look into the figures for Infosys , TCS etc. It's reached upto 30% ! If 30 % leave in a year , it doesn't take long for all your experienced people to move out.
But they've perfected this continuous conveyor of clueless graduates being cycled into the software meat grinder. They don't even hire CS grads. They'll hire almost anyone put them through their cookie cutter "training" and now you're ready to work on projects for the Fortune 500.
Then there is the pervasive cheating and deception. Resumes are faked , they hire clueless developers straight out of college and make them work night and day to deliver their first project all the while assuring the client that they've put their best devs , with 3+ years of experience on the project.
You're endlessly in maintenance projects which means you don't have much of a chance to learn and grow.
So a lot of the "bad Indian coder" meme is due to the way that low cost IT services firms are structured and the people they hire.
So very few people who take pride in coding can survive for very long in such an environment. If they're really good , they've already jumped ship to some top 10 product firm or startup.
So you're very unlikely to find any good coders there , and the ones left will be doing management.
Most Western engineers I have worked with don't think much of their Indian counterparts. While no single assessment will ever properly fit everyone in such a large group of people, the quip goes "the Chinese will do exactly what you tell them to do, but nothing else; the Indians will do exactly nothing you tell them to do but a whole lot besides." This seems about right to me, so I don't think anyone is being over- (or under-) rated. If you hand a project to India you will get something that mostly works, is three times as complex as it needs to be, took five times too long to produce, and is completely unmaintainable. Despite some very impressive individual results, the education system in India is atrocious, on the job education nonexistent, and technical leadership and independence completely lacking, so this result isn't surprising. Americans or Brits sent through the same system and given the same management would produce similar results.
By the people who decide that work should be done by Indian engineers instead of those in the company's home country? The answer is more complicated. Most corporate management is extremely short-sighted; the incentives of the role demand it. Their primary incentive (handed down by their superiors) is typically lowering home-country head count, average salary (and in the US, especially those oh-so-costly medical and insurance plans), and other coarse personnel cost metrics. By these metrics, Indian engineers are not overrated. By the metrics the company will actually be judged by the competitive marketplace, which include time to market, total development cost, and product quality, they are overrated. Managers who think about these things will conclude that the cost of Indian engineers relative to what they produce has been bid up beyond fair value; i.e., they're overrated. But few do.
I made an interview with Jack Ganssle[0], which is one of the most known embedded engineers in the world, and I made a question to him about devs skill around the globe:
I have spent my life traveling all over the world and am finding great developers in all sorts of places.
-- [0] http://www.embarcados.com.br/embarcados-interview-jack-ganss...
From a coworker, he says what you save in money up front you will lose in time trying to communicate what you want with them, getting the result, smacking yourself in the head while finding it makes zero logical sense, having to send it back, get the results, find more problems, etc, all with massive delays due to time zones.
His company laid off a lot of good staff and outsourced with him as the manager. He said it has not been worth it and makes his life dealing very unhappy. Like herding cats.
I don't deal with Indian programmers but I deal with DBAs and others that look after data centre infrastructure. They are more than worthless - they are dangerously incompetent. The massive company I work for has spent a lot of money insourcing to get away from these idiots after years of letting all their infrastructure decay and rolling outages. When you scale up all those incidental costs add up (but the contractual SLAs are rarely enforced because you're afraid to anger the people who are running your whole business).
That's not to say Indians as people are stupid. Far from it. Actually our company has a lot of Indian staff who are integrated locally and are excellent and intelligent, I consider them good friends. And some of them plain suck.
Most also recognise these outsourced people as scum. Though I feel that's a little unfair except for how they make dealing with them a living hell. Every part of the model is broken from their parent company contracts, managers, processes on both sides, communication and cultural differences (Indians as a rule always say yes whether they will do it or not because it's considered polite; they also won't action anything or even respond unless a higher manager is included in the mail). Technical work becomes impossible when you can't clearly get an answer about what is going on.
We don't outsourced to China but have a very multicultural staff. I would hesitate to say any race was "better" than the others. I only know outsourcing to India will eventually kill your business.
So that's our experience.
The culture we were met with was tragic to say the least. The only thing that mattered to the Indian managers were error reports and statistics, to the point where I was confronted for reporting an error without consulting with them directly first, so they could spoof the numbers...
And some of the developers I had to interface with literally needed to be told, character by character, what to do to fix even the most basic stuff.
And yes, on the other hand, we had Indian colleagues integrated locally which were some of the best people around.
Outsourcing is hard. You will likely not get any top talent unless you really know how to work the market, and then it will likely not be particularly cheap.
They know that Indian developers are mediocre but management believes that mediocre is "good enough" at half the price , and guess what , it might hurt your ego , but in many cases mediocre developers + long working hours can solve most problems that typical devs encounter. You just need a good dev overseeing the efforts if the project is complex.
If you do that you'll find that outsourcing to India is actually not such a bad idea and guess what , we're cheap :D.
Overall it has been my experience that you pay multiple offshore resources to get the output of 1 onshore resource. If you bring them from offshore to onshore their productivity does go up some. The caveat to that is they do have really good QA teams and I wouldn't hesitate to leverage them in that role.
The only way I can see is to thinly slice the system enough and to require business peer review and daily demos on all slices to correct bad systems earlier. This also means you need a top engineer devoted to babysitting on behalf of the organization, and a good enough engineer to handle the code reviews can probably do the job better than a team of remote mediocre engineers.
My impression was that if they knew more high level theory, and did things in a more organized way, that they could be even more lazy and make even more money.
(Skill/Pay) of Indian >= (Skill/Pay) of most top hackers.
It's all about optimization! :P
But that's changing rapidly. Indian startups have finally begun pushing back many of the SV startups which have operations in India.
I think the most important thing to consider here is communication. Often it can be difficult to speak with foreigners in common terms.
I think that different culture might self-select US developers the same way top schools produce highly motivated, successful people because they recruit highly motivated, successful kids. Not to say every US developer wants to climb to the top of some technical or economic mountain, but it seems like maybe there's a smudge more passion among US developers. Also, intelligent, math oriented individuals have other avenues in the US, like finance, (and unlike the rest of the world) dentistry and medicine are lucrative careers. Meaning you choose programming more because you want to program, but in other countries it's because it's a better paying job.
I've also noticed that in some countries, once you've done a few years writing code, you quickly want to join management ranks and develop a coding allergy. More so than in the US, where it seems like 50 year old developers still want to write code. I get the sense that, in some countries, if you don't get into management then you are a failure at some level. So in the US you can find someone with 10+ years experience developing software, but in other countries you just have people who've stagnated and never moved up.
I dunno.
For eg: An executive an HCL , a leading Indian outsourcing firm called American developers "unemployable" :
>> He says students from countries like India, China, and Brazil are more willing to put the effort into "boring" details of tech process and methodology, such as ITIL, Six Sigma, etc.
http://www.dailytech.com/CEO+of+Microsofts+Indian+Partner+Co...
So basically , American devs want challenging work and technical growth , while Indian devs are happy to even have a job.
Dentistry and medicine are very lucrative careers in India.
Sometimes it's just plainly obvious a guy has been hired because he's cheap. And since it's a money-saving exercise, the employer will also skimp on such things as documentation, communication, availability, etc. This only makes the guy's life harder, and makes him look worse than he really is.
The thing I've noticed about hiring in India is that due to the economic circumstances a lot more people go into software development who have no business being there. You can find good developers, but you have to weed out many more bad candidates to get to them.
So there are good and great programmers but you also have a lot of mediocre ones. The other problem is a lot of what is taught at these schools is dated.
I know a few US based developers who I feel went into computer science because they saw dollar signs.
But there are a ton of unscrupulous individuals that represent inadequate developers (maybe in general, maybe only for a specific project) and flat out lie about their skill sets and experience. People thinking of outsourcing in this manner should interview those doing the work, and follow up later to make sure those are the actual people doing the work a few weeks down the road.
I clicked the link a couple of times before i released what you have done.
There are good devs and bad devs everywhere. The problem in India is that the average software developer is one not because they wanted to code, but because the family pushed them to do it since it pays well. As a result, you get a bunch of devs who don't really care about what they do, and are incompetent.
The kicker is that these devs are the ones the rest of the outside world works with since they come to India for cheap labour, and hence, you get the impression than coders in India are mediocre.