I recently read an article called Bad Indian Programmers. This article is written by an Indian programmer, so of course it’s not about how bad they would be but rather about why the perception is wrong. I’d tend to agree with some of the comments on this article that as a customer it doesn’t really matter why the supplier delivers good or bad quality but whether the quality you get is what has been agreed upon.
And I think this is the main issue. I’ve been contacted by multiple Indian software companies over the past few months telling that they have great web developers and asking whether I would be interesting in contracting them. Once you look at their web page, you first notice that it’s very often not complete and that their homepage is actually pretty bad. Does it mean that Indian programmers are just as bad as their reputation ? Well, not necessarily. I think you first have to understand that IT is still a booming industry in India (remember the late 90s in the US or in Europe). On the one hand this means that always more students study computer science and that the ratio of truly gifted individuals goes down. And as it is a booming industry, the number of companies and individuals who actually do not have a clue about what they are doing increases. It’s not a specific Indian phenomenon but it’s what also happens in countries with a real estate boom where many of the building companies actually do provide bad quality work.
When you consider this, you also have to know that although programming might be considered by some people as just typing code in an IDE, it is in fact something requiring highly qualified people. Thus, there is a huge difference between a good programmer and a poor programmer. It’s of course difficult to quantify this. My experience is that there is a ratio of about 20:1 between top and worst programmers. This is a phenomenon you can observe in any industry producing any kind of goods. You can buy a pair of shoes which will go in your trash can within a few months or buy one you will be able to wear for many years.
What you have to keep in mind is that you only get what you pay for. So if you get a dirt cheap guy to write code for you, you’ll just get dirt cheap looking code. You can get a new car for a few thousand dollars but you can’t expect to get a Ferrari, a Porsche or even a BMW. So of course to some extend the difference in cost of life in different countries can allow companies acting globally to get about the same quality for less money by outsourcing to a different country. But you have to understand that the job market has also gone global. So if you are a very gifted programmer and can get $80 or $100 an hour in a different country or stay where you are and get less than half, you’ll end up moving to a different country or staying where you are but charging more.
Whenever you buy something much cheaper, you have to ask yourself why it is so cheap. Many may think that they are very smart and just managed to find that one great offer. But very often is that what you save on the one side introduces some hidden costs or trade offs on the other side.
Another factor influencing the quality of the code produced by programmers is that all educational systems or IT ecosystems have different strengths. For example, Indian programmers tend to be good at math and logic. On the other side, American or European programmers are (still) better at Web programming than many Indian web programmers. It’s of course a general statement that doesn’t mean that you cannot find a very gifted web programmer in India. So you need to learn what the strength of your different suppliers are and where to outsource which part of your projects. If I had to design some complex piece of engineering, I’d probably go to a German company. If I wanted to go to mass production, I’d probably rather go to China rather than Germany.
This difference in countries and educational system is something I noticed when I was at the university myself. I studied in France but did my last semester in a German university. What I noticed was that the programming exercises I got at the German university were so easy for me that I could finish most of them in less than an hour and could see most people spending the whole night trying to figure it out while I was surfing the web. On the other hand, I never had any kind of exposure to the design or architecture of complex software systems while at a French university and it was kind of a major focus point at the German university.
So the question is not only whether people are good or bad but it’s the matter of knowing what people are good at and not hiring them to work on things they are not so good at. And never forget that something being expensive doesn’t mean it’s good but on the other side something being very cheap most probably means it’s not so good (although there are always exceptions confirming the rule).
So who’s responsible for this not so good reputation of Indian programmers in the US or in Europe ? Partly Indian companies hiring people who don’t really know to code well and selling them as software experts. Partly American or European managers mostly interested in lowering IT budgets and not caring enough about quality. Imagine you buy a pair of Adidas shoes (which in this case might be spelled Addidas) for $10 while on vacation in Turkey and you have to trash them after 2 months of wearing them. Who’s at fault ? The guy who sold them promising it’s great original quality ? Or the guy blind enough to think he could get great original quality for that price ?
So outsourcing to India to lower IT costs can make sense. But you need to understand that even in India it’s very difficult (if not impossible) to get great programmers for less than $20 an hour. So first focus on finding a great Indian programmer. He will definitely be cheaper than an equally qualified programmer in Europe or in the US but be prepared to pay a decent amount of money for decent quality.
Also note that it’s very easy to find absolutely bad programmers both in the US and in Europe which will still cost you quite some money…