Hacker News new | past | comments | ask | show | jobs | submit login
Bad Indian Programmers (srirangan.net)
162 points by factorialboy on Oct 7, 2013 | hide | past | favorite | 144 comments



So...Indian programmer here. Well. I was just about writing some similar anecdotes for an article and I came across this. So, let me share what I have seen related to this.

Firstly, right now in India, programming(Computer engineering) is one of the most widely adopted courses. This obviously means a lot of programmers and a lot of web shops, IT services and whatever. More the companies, more chances of you ending up finding a mediocre one.

Most of these companies and their employees consider it as a 9-5 regular job. It is a chore. They do not care about you or your product. As long as project managers meet the deadline and programmers get their salaries, no one cares. Not everyone can be a "hacker".

You outsource to India to save money. You wont outsource to India if a developer/company charges the same as its US counterpart. So you end up outsourcing to mediocre companies eventually.

I have interviewed at a really big Indian IT company and their interview process made me realize that they weren't serious about hiring talent. They just wanted more people, whom they'd eventually train to 'get shit done'. For more clarity, I was asked about movies and stuff in my technical interview which lasted 15 minutes and then I was offered a job. No kidding.

There are some brilliant Indian programmers too. You probably wont ever outsource to them because they are expensive.

In a country of a billion people, where computer engineering is one of the most dominant fields and education levels are mediocre, even if 20%(at most 50%? lets not get our hopes high) of each class produces absolutely brilliant engineers, that still means a huge number of crappy engineers.

So while there are brilliant, good, bad and horrendous programmers in India, the math totally inclines towards you finding bad programmers more often.


This reminds me of a quote in Machiavelli's The Prince about Mercenaries:

> I say, therefore, that the arms with which a prince defends his state are either his own, or they are mercenaries, auxiliaries, or mixed. Mercenaries and auxiliaries are useless and dangerous; and if one holds his state based on these arms, he will stand neither firm nor safe; for they are disunited, ambitious and without discipline, unfaithful, valiant before friends, cowardly before enemies; they have neither the fear of God nor fidelity to men, and destruction is deferred only so long as the attack is; for in peace one is robbed by them, and in war by the enemy. The fact is, they have no other attraction or reason for keeping the field than a trifle of stipend, which is not sufficient to make them willing to die for you. They are ready enough to be your soldiers whilst you do not make war, but if war comes they take themselves off or run from the foe; which I should have little trouble to prove, for the ruin of Italy has been caused by nothing else than by resting all her hopes for many years on mercenaries, and although they formerly made some display and appeared valiant amongst themselves, yet when the foreigners came they showed what they were. Thus it was that Charles, King of France, was allowed to seize Italy with chalk in hand; 1 and he who told us that our sins were the cause of it told the truth, but they were not the sins he imagined, but those which I have related. And as they were the sins of princes, it is the princes who have also suffered the penalty.

> I wish to demonstrate further the infelicity of these arms. The mercenary captains are either capable men or they are not; if they are, you cannot trust them, because they always aspire to their own greatness, either by oppressing you, who are their master, or others contrary to your intentions; but if the captain is not skilful, you are ruined in the usual way.

Source: http://www.constitution.org/mac/prince12.htm


As interesting as Machiavelli's thoughts are read as a blog entry about tech consultants, don't you think it's a stretch?


As a tradition, no. Old books like this are often read in a management context. For example, at my local book shop, The Book of Five Rings is in the Business section[1]. The Art of War by Sun Tzu[2] can be applied to any context you want and it's usually still good advice. Re: The Art of War[3], wikipedia says:

> There are business books applying its lessons to office politics and corporate strategy. Many Japanese companies make the book required reading for their key executives. The book is also popular among Western business management, who have turned to it for inspiration and advice on how to succeed in competitive business situations. It has also been applied to the field of education.

Here's where I start talking out of my ass: If you think about it, aren't generals the original managers? They had to coordinate the actions of thousands of people. Sometimes hundreds of thousands. They have to delegate to their subordinates because it'd be impossible to micromanage everything. Also, I think it's more than a coincidence that the quote seemed to fit so well. Outsourcing is hiring mercenaries.

[1]: http://www.amazon.com/Book-Five-Rings-Miyamoto-Musashi/dp/15... [2]: http://www.amazon.com/The-Art-War-Liddell-Hart/dp/0195014766... [3]: http://en.wikipedia.org/wiki/The_Art_of_War#Application_outs...


For more "generalship as management," you can read another classic, Caesar's Gallic War. One caveat: a lot of modern Classics scholarship would rather take this less as an example of great generalship and more as an example of great propaganda. But either way it's a treatise on how to command, containing if not quite the unvarnished truth, at least Caesar's opinions of what good management/generalship ought to look like, as well as several anti-models.


The core concept in this paragraph is really a basic concept in outsourcing - don't outsource your business's core product, or you will be at a disadvantage when competition comes.

Notice, he doesn't say that you cannot use these extra forces in attacks. All he is saying is that if they are guarding your sleep, you are probably screwed. Similarly, if your core business is being a technology organization, if you chose to outsource that core tech, you are likely screwing yourself. Now, should outsource as much as possible the non-core aspects, either by buying software/services or by hiring consultants, while you let your core team focus on what they do best.

Of course, it's all easier said than done, and the line between core and non-core is often blurred.


You outsource to India to save money. You wont outsource to India if a developer/company charges the same as its US counterpart. So you end up outsourcing to mediocre companies eventually

Let me say that I've worked with some amazing Indian programmers, but this comment aligns with a realization that I came to a while ago. Some organizations see software development as a competitive advantage and while others see software development as a necessary evil. The "necessary evil" shops are the ones most likely to outsource based solely on cost.


It's said that more than half of all software projects fail, in that they're canceled, fail hard, or severely under-preform/under-deliver but victory must be declared. Many organizations can get by for years mostly failing in software development.

For a while I've wondered if the true attraction of this sort of outsourcing is that it's a cheaper way to fail.


Absolutely. If you're convinced that software development is going to be expensive, painful, and probably-doomed, you might as well pay as little as possible for it.


Long back, my very first project in a big Indian IT firm involved an Australian client. He was here, and we went for lunch together.

In a casual chat we asked him how difficult it was to hire in Australia. He didn't even hesitate for a second to reply, they had done everything thing they wanted to in Australia, and the projects failed. They are doing the same in India with nearly the same failure rates- at the end he said, he rather preferred doing that at a lower price.


>"Firstly, right now in India, programming(Computer engineering) is one of the most widely adopted courses. This obviously means a lot of programmers and a lot of web shops, IT services and whatever. More the companies, more chances of you ending up finding a mediocre one."

I am agreed with this. I have seen a similar pattern in Venezuela where the IT/Programming area is perceived as a high remunerated job (Not always true actually) hence a lot of young student take that path without actually being their passion. In the end, there are more people in the area that not necessarily fit in the career and that is reflected in the quality of their work.


Yes, in a developing country, there is a tendency for people to drift more towards the fields that are considered stable and secure at that point in time. This is nothing new at all.


>"Yes, in a developing country, there is a tendency for people to drift more towards the fields that are considered stable and secure at that point in time. This is nothing new at all."

That's not the interesting thing to notice, is the fact that economics incentives alone have a negative impact in the quality of the professionals.

It is in particular very interesting given the fact that there is a group of successful personalities pushing to people to go to the computer path. Given the examples that might actually hurt the industry.


I'd love working with programmers from anywhere in the world that are talented. The problem is that the there is a wide talent pool willing to work for bottom dollar which middle management teams can blame later for their failures.

It's a signal-to-noise issue that I hope fleshes itself out because stereotyping of this sort is bad for the industry as a whole. You _CAN_ hire a fantastic team in India to write your software and help you build a great product. Will you? The numbers say 'no', at least right now.


Indeed. There probably are great teams doing great things in India. But getting everything together in a way you want it might not be that easy.

But of course, merely stating that Indian programmers should not be hired or anything as such is simply wrong.


> There are some brilliant Indian programmers too.

I think that's clear. There are certainly brilliant Indian programmers who have lived in the US for a while. I assume they were also talented before they came to the US.

When people complain about poor talent in country X or country Y, one has to take it with a grain of salt. Some of it is backed up by previous experience (perhaps the team to which the work was outsourced was really bad; perhaps the communication was bad). Some of it is carping on what is perceived as an economic threat by someone who is in an insecure position. It's hard to ignore overbroad generalizations, but those who throw them around only discredit their own objectivity in the long run.


Also, for the western programmers losing their jobs from outsourcing, it's in their survival interests to broadcast and exaggerate ineptitude whenever possible. So don't take it personally.


IME, that's not driving this at all this at all.


there is a grudge in the UK at least...

http://www.theregister.co.uk/2011/08/03/pcs_offshoring_warni...

(see the comments too)


I'm sure it's a commonly held version of sour grapes, but IME, the vehemence here in silicon valley against indian offshoring (and indian onshoring - shipping engineers state side on loophole visas, paying them indian salaries and warehousing them 8 to a suite in extended stay hotels by the likes of Tata and Wipro) all come from people who have had to work with them.

Myself included.


Well put. Companies looking to save money - never outsource your core development work. Only outsource rote work like manual testing or if you're a service, live-site incident monitoring/troubleshooting and support. People working at these companies don't care about how boring the work is. Like OP says it is a 9-5 job.


I'm thinking of moving to India to do IT development for my company [1]

> There are some brilliant Indian programmers too. You probably wont ever outsource to them because they are expensive.

I would love to know: What is approximate salary of a brilliant programmer in India with, say, 10 years experience? What about the cost of hiring a brilliant graduate? What would these salaries be as a percentage of the corresponding United States programmer?

> Working at a small firm is very low prestige, unlike here. You want to have a big name you can tell to your prospective father-in-law.

How much extra would a small startup have to pay to attract brilliant programmers, compared to a Google or Microsoft?

[1] More info here: https://news.ycombinator.com/item?id=6308482)


>>What is approximate salary of a brilliant programmer in India with, say, 10 years experience?

That's pretty much a range. Anything that starts around 15 Lacs PA to 20 Lacs PA. But don't give into demands so easily. I would suggest you never even bother to hire job hoppers, which are super common here.

Look for- strong inclination for curiosity, past projects, and their interest in picking up good technical projects.

By and large the prices are a little lesser than that you would be pay to a 'Good' US programmer(I'm assuming bad programmers are everywhere).

Though being an Indian and staying in Bangalore. I would suggest you better try to get people from UK first and start up there. Regarding India operations, well these days you can't really be out of India and China(at least if you want a long term successful business). But that is for later. Start up in your own country first. You don't want to be dealing with other surprises when your company is so young.


15 Lacs PA to 20 Lacs PA = $24k - $32k per year


Interesting, is that before or after taxes?

That's quite a lot than the range you would have to pay for a Software Engineer in Mexico, which goes between $18K and $27K (gross).

I guess that's why more and more USA companies choose to outsource to Mexico, to take advantage of the closer time-zones and somewhat more familiar culture.


That would be before taxes. The reason why good Indian developers command a 20-25 lakh INR per annum in salary is in part due to the income tax. Indian income tax mandate swallows upto 30% of income from people who have an income exceeding 10 lakh INR pa. (=> effectively, it's only around 70-80% of whatever salary they get would be available to them).

I did not know that salaries in Mexico are in the range of 18K-27K USD pa; that sounds like a better deal for US based companies.

BTW, one should note that the major Indian outsourcing service providers (a.k.a the big three - TCS, Infy, Wipro) are already in Mexico.


The learning materials in India are atleast 5-10 years behind the trend in Silicon Valley and getting self taught is rare in India unless you have an excellent drive. Students pay cash and go to one of 'institutes' which promise you a job in 30 days. Its like feeding paper into a shredder. You can still get a top paying job in one of the Indian Consulting firms if you take a crash course is the 'latest' SAP module or Oracle DB.


The "bad Indian programmer" meme seems to have less to do with India itself than with India as a place where lots of people go for cheap outsourcing. It's the cheap outsourcing part that's the problem. I've been fortunate to work with some very good Indian programmers, most of whom were first part of an independent company with their own products and then were colleagues within my own company when we bought them out. I've also worked with some really crappy Indian programmers, and some really crappy Russian ones, and even some really crappy American ones, who all worked at "body shops" offering the lowest bids for the kinds of programming everybody wants to outsource. There's a pattern, and it's loosely related to nationality, but it's not as simple as programmers from one country being better than programmers from another.

Who remembers when "made in Japan" meant "cheap plastic crap"? As their manufacturing industry matured, they went from that to leading the world in quality and precision. Similarly, India might once have been the place one went for cheap programmers. As their IT industry matures, it will become more and more a place where one can go for good programmers. Some of this is already happening, as outsourcing to India becomes more expensive and people turn to cheaper alternatives. Welcome to the global economy.


There's a lot of this in play, there are truly terrible programmers all over the world, but most of those in the US aren't doing freelance contract work, they're buried in some giant organization turning out awful code nobody will ever see.

Still, there is a certain change in flavor on places like Stack Overflow when India wakes up and starts asking questions. Maybe this isn't a sign of "bad programmers" so much as it's a sign that there's a lot of people in India that speak English and are trying to learn how to program better. There could be just as many in China or even Brazil but there they prefer to ask questions in their native language instead.


Yes, on the whole, we somehow learn broken English pretty soon to ask questions on the internet :) (we take ages to learn good English). I guess everything is governed by survival instincts when it comes to such a big population.

One reason is also the outdated Computer Science courses in India that teach wrong things to start with (The 90's Turbo C++ anyone? - That's the defacto "C++" that an average Indian is taught in schools even today). Then as you said, so many outsourcing companies want manpower (not talent) - and they (Indians) start to find it as one lucrative job, mostly not out of interest, but to earn a bread and butter for their families.


> As their manufacturing industry matured, they went from that to leading the world in quality and precision. Similarly, India might once have been the place one went for cheap programmers.

Right now, I can't think of any country (or region) that's made software quality a priority. Most of the effort is placed on reducing costs, which is accomplished by increasing programmer productivity (either by tools or longer hours or both).


"They're not stupid ... they're demotivated"

Maybe ... or their incentives aren't aligned with yours? We used several different Indian out-sourcing shops at various points and if there was the slightest ambiguity in a specification (and how do you write one without any ambiguities?), they would (purposely?) do what you'd least expect. As a contract programming shop, this led to the most billable hours.

We later purchased an a company that included an in-house division in Bangalore. These programmers were therefore employees of the same company that I was and therefore motivated by the same factors (successful projects meant more work ... unsuccessful projects meant looking for another job). In general, the in-house Indian programmers were competent other than slightly inflated grades (a lead JavaEE programmer with 2 years of experience?).

So from my experience, there are some brilliant Indian programmers, and some worthless ones, with the vast majority falling in the middle ... just like here.

P.S. I'm in the US, but I imagine that "here" is valid for many values.


I have some of the same experience. If you outsource to a consultancy company, things are less likely to go well. In my current job we have an office in the area, and some of those programmers are excellent. It is harder to find good people though. You really need the fizzbuzz test there, but good people exists.

In a previous job I had some coworkers that had previously developed a system for a major European telecommunication company. The project was now mainly in the maintenance mode, and they (the telecommunication company) decided to move the maintenance to an Indian consultancy company, and my coworkers would only help with the transition. The result was that my coworkers got more work to do than they had before the transition, and this never ended. The new developers was simply unable to get anything working. Part of the problem was that there was high turnover and many inexperience developers, but not only.

In the end the project was moved to the telecommunication company's own employees in China. That actually worked really well.

This is only a few cases, but it is my experience that having an office in India often works well, but outsourcing to a consulting company is usually a bad idea.


A few years ago, we saw the same problems with turnover and lack of experience and hesitancy to say no or admit it when they didn't understand the requirements. It was a small consulting company and our boss wanted to go with them for the cheap rates. I've worked with many great Indian programmers here, and I imagine most of the really good ones in India are much more gainfully employed than those in the small mediocre consulting company we hired. I think the outsourcing boom and bust a decade ago could be largely blamed on companies chasing after a gold rush of cheap talent, assuming there was a virtually endless supply thanks to the large population. In trying to get something for almost nothing, they forgot all sorts of other costs.


What about outsourcing from marketplaces that includes feedback about previous projects , does this work well ?


So I've worked with a couple Indian outsourcing firms. The best we ever managed was to break even in terms of quality product per dollar. I visited there a couple times, and I can completely corroborate the poor working conditions. Grinding pollution, horrible traffic, crushing heat, often without any AC, frequent power outages, substandard equipment. The trouble is, regardless of the reason, the net quality tends to suffer. There are a few other factors that we would never have predicted:

* Working at a small firm is very low prestige, unlike here. You want to have a big name you can tell to your prospective father-in-law. There are of course big, reputable outsourcing firms there, but they tend to either be hiring mills with low quality, or expensive enough to negate any labor arbitrage advantages.

* The very best and the brightest (and there are MANY MANY of those) tend to go in-house at Google, etc. rather than do the outsourcing-for-hire shops. Or, frankly, they've moved here.

* As with any consulting, their interests and yours are not always in alignment.

* In western nations, there are many routes to success and prestige. Business, professions, even the arts. In India, for the time being, there is generally only one that matters, if you're not already upper class: technology. So that means everyone tries to do it whether they're well-suited or not. So there is a HUGE pool of labor, throngs of people show up in person for certain job openings, but a large percentage of them literally cannot do fizzbuzz, yet lots of those will get some kind of job or other.

* It is often really difficult to get a "no" or any kind of bad news in time to compensate for it.

I'm just scratching the surface. It's a huge, complicated, amazing country, and the potential remains enormous, but there are a TON of very real cultural problems facing a western firm looking to partner with an Indian firm.

EDIT: This was the in the context of a smallish startup. A bigger firm looking to make a permanent presence will have more resources and more leverage to compensate for some of this, and will also, if they have an international brand, attract much more capable people.


> Working at a small firm is very low prestige, unlike here. You want to have a big name you can tell to your prospective father-in-law. There are of course big, reputable outsourcing firms there, but they tend to either be hiring mills with low quality, or expensive enough to negate any labor arbitrage advantages.

+1 for putting it out.


* It is often really difficult to get a "no" or any kind of bad news in time to compensate for it.

This is one of the larger problems I have encountered. It's a cultural issue. They (Indians) view "no" or "we have to lengthen the schedule" as verboten. So, you will always get a "yes"... and, often times, crappy software.


This was my experience when traveling in India: "Is this train XXXX going to XXXX?" "Yes."

Four hours later--no, definitely not the right train.


This is a well known cultural quirk. Never ask a yes no question. The answer will always be yes. Yes is more polite. If the answer is unknown then yes is always the correct answer.


>>Working at a small firm is very low prestige

Just wanted to point out, this trend is changing pretty rapidly.

In fact there is a growing theme of equating big corporations with government bureaucracies. The perception is like imagining a mega corp as a large inefficient bureaucracy, full of inefficient politics, hardly valuable work done, growth and progress a metric of your political ability to fight battles with the company.


That's good to know.


> So you want to hire somebody for less than ~ $20 per hour.

> And you expect the quality of $200 per hour experienced developer.

> Stop having crazy expectations.

Enough said.


That being said, cultures on the asian subcontinent seem to have a certain way of avoiding the word "no".

So while they will charge the $20 per hour, they will assure you that their work will be completely up to par with the $200 per hour work of experienced developers. Usually there will also be a problem with quality/time estimation. I've seen a few "will this be done in two weeks?" questions result in a "Yes, certainly answer" although no engineer I knew would have said this was possible. At least that was my experience in a few larger projects that had to outsource some of the programming.

I know that agencies in the US/EU tend to market themselves pretty aggressively too, but not QUITE as aggressively :)


Yeah, I've been on the other side of this, working in the trenches. Granted, I wasn't a developer but the situation wasn't any different. The problem is no one asks us how much time it will take.

As an (exaggerated) example, the conversation usually goes like this:

Project Manager: Guys, we just landed a huge project from Acme Inc. Guess what, you guys are gonna be paid a bonus this month!! YAY!

Developer: Great!

PM: There's a tiny caveat though: The bonus was promised only if we had delivered it yesterday.

D: FML.

PM: But don't worry, we still have a week to finish it!

D: WTF? But this will take at least three weeks!

PM: Ah, don't worry. I know you can do it in one week. In fact, I am so sure, I promised them you would! Isn't that great?

D: Well, what if I can't?

PM: Oh well, we won't get paid and it will certainly reflect in your appraisal and you won't get that promotion that you have been due for the last three years. But I'm sure you won't let that happen, amirite?

D: FML.


IMHO, if someone is aware of the quality of $200 per hour work, they would deliver the same quality. After all the prices might be different but the hours are same. In my experience most programmers don't even know how bad they are. And when they do become aware of that the quality improves.


It's not the boss who paid $20 / hour who is moaning here. It's the guy who he brought in afterwards to clean it up.


Oddly enough, I've worked with an Indian programmer who asked for less than $20/hour (he was making $10/hour after fees from the outsourcing site) who was very competent and who got the job done well. There may have been some funny business with billing a few extra hours, but the total cost for the project was still extremely low.

I've also worked with an outsourced programmer from another region who asked for $45/hour (closer to a $150/hour equivalent in local cost of living) who was completely incompetent. (He didn't last a week; it was obvious that quickly.)

You don't always get what you pay for.


$10/hour isn't bad at all as far as living in India goes[1]. I worked as a salaried employee for about 3 years with a reputable software consultancy in India and made about $4/hour writing good quality ruby code. Let's say I lived a comfortable life with a decent apartment and a new car.

[1] It equates to about 80,000 INR per month. Compare to salaries ranging from 30,000 INR to 60,000 INR for a programmer with 3-5 years of experience.


> You don't always get what you pay for.

No, you don't. It's like that bottle of two-buck chuck from TJ's that can be better than the $20 bottle of Napa's finest…

Cost is not a complete indicator of quality unless you're willing to look at it probabilistically. Low cost means you're more likely to get mediocre talent.

Ultimately though, even a good programmer can only do so much without a good client/driver. Some of the folks hiring the best out of India and still getting bad results need to look at their process and see if it's adapted to the outsourced model. It could be the process is poor or the onshore team members are poorly adapted to the offshoring model.

Outsourcing itself isn't easy. It takes skill to be able to make projects work, even with great resources.


We can't completely blame the customer. The competition is quite high and it is easy for anyone not familiar with programming (most of the clients) to get attracted towards cheapest option.

Not to forget that such companies/people often market themselves as jack of all trades and it is hard for customer to see any real difference developers asking for $200/hour and $20/hour when $20 guy is promising everything!


But $20/hour code causes trouble and doesn't actually help. Its more like negative $50.


I'm an engineering student (IT) and I think there are two problems that cause this:

First, as the article says, people lack motivation.

In India, the decision of choosing IT/CS does not come from children, it is often influenced by family or friends. Tell anyone that this field pays well and they will be happy to join it without second thoughts. This happens with majority of people.

Second is education system. Article clearly states:

  I don't blame the quality of education here. That's a common
  excuse. If a person is motivated, he'll surpass that
  constraint.
Well, motivation is one thing but when you have non-programmers teaching programming courses, it becomes hard to surpass that constraint. Last semester, we were asked to make a project in a class. I was really motivated as I had a side project idea (a personal attendance tracker) and wanted to do it. When I presented it to teacher, the response was this:

"Why are you building a 2 page project? Others are making big projects, expand it and make something big!"

I tried to explain that it would take time to nail down UI and design and it was good enough for a single person project. But teacher just didn't understand. And in the end, I ended up making a "Learning Management System" using WordPress.

And in final viva, the questions asked were these:

"What is SSL?" "What does "collapse" button do?" (This is a standard WordPress button, just hides the menu)

Since number of students was large, no time was given to explain/present it! This system of having such people as teachers kills any motivation one has. I can't say about others but for me, spending 6 hours in an environment like this and then staying motivated about programming is very very hard!

Add to this that you need to be an expert in Physics, Chemistry and Maths to get to the top institutes (IIT, NIT) even if you want CSE/IT course. This filters majority of people with interest in programming. I have been programming since 9th standard but I wasn't good in Chemistry and Physics, so I couldn't go to a good institute.

Quality of education is a big factor. The education system is blurting out engineers who are experts in cramming and lack any interest in programming.

Edit: Spelling and grammar.


No offence but if you have to use PHP or Wordpress for a university level engineering course then that is a major indictment of the school. You could get a better education from MIT OCW and Coursera. Also I don't see a problem with requiring an interest/aptitude in math to get into a CS program since CS is applied mathematical logic, although physics and chemistry are less relevant unless you want to work with applied scientists.


Allow me to explain the Physics/Chem part of his comment.

The education system in India offers a fork-in-the-road twice:

1. Grade 10 - at which point you get to choose the general direction you want to head in (primarily Arts, Science, or Commerce streams)

2. Grade 12 - at which point you get to choose a slightly more specific stream, pursuant to the stream you chose in grade 10.

Science students continue to study Physics, Chemistry and Maths until the end of grade 12 at which point they are presented with the above fork-in-the-road. To get into a college that offers an engineering degree (or any applied-sciences degree, for that matter,) you need to have a good score in PCM, i.e. Physics, Chemistry & Maths. It is in this context that your Physics & Chemistry scores are relevant.

Also, one of the basic requirements for getting into a engineering course is that you should have graduated from a Science stream. Someone who has completed grades 11 and 12 in the commerce stream can't get an applied sciences course.


>although physics and chemistry are less relevant unless you want to work with applied scientists.

I agree with you. In India, the top schools for undergraduate education are Indian Institute of Technology(IIT) and National Institute of Technology(NIT). There are 16 IITs and 30 NITs across India, each with their own campuses, faculty, etc. Both conduct two nation wide exams namely IIT-JEE and AIEEE with different formats where IIT-JEE is hard to crack than AIEEE. In both the exams, there are only three subjects - Maths, Physics and Chemistry. So, if one has to make into one of these fine institutes, one has to be good at all of these. I have seen many who couldn't get into these instis even though they were very good at two subjects but sucked at the third one.

Source: I got into one of the NITs.


Can you explain a bit about how using PHP is an indictment of the school?

Imagine an environment where PHP is considered cutting edge and where 90% of students (and 80% teachers) don't know even C properly. That is the environment we have! PHP is something that is completely unknown to teachers and considered cutting edge.

And I don't have any issues with Math. Mathematical logic is indeed required. BUT Physics and Chemistry are totally irrelevant as requirements! Unfortunately, they have 66% weight!


Using PHP for anything is not an indictment in my opinion, but making it the focus of an _engineering class_ is, imo. My point of view is that formal education should be for things you would have a difficult time learning on your own, and I don't see writing a Wordpress app as something you can't learn on your own. The only reason to take such a class is to boost your average, which is fine, but you're not expanding your way of thinking at all.

Anyway I completely agree that physics and chemistry should not be heavy requirements like that.


Physics is often needed for many CS programs. I was a bit worried when I applied to UW CSE with a 2.9, 3.2, and 3.7 in my physics reqs.


Add to this that you need to be an expert in Physics, Chemistry and Maths to get to the top institutes (IIT, NIT) even if you want CSE/IT course. This filters majority of people with interest in programming. I have been programming since 9th standard but I wasn't good in Chemistry and Physics, so I couldn't go to a good institute."

This is universal, for the best technical universities anywhere in the world you need to be really good at natural sciences. They are not trying to churn out programmers but scientists, including computer scientists. This is by design. While teaching programming might make you understand some programming platforms, a scientific education teaches you to effectively learn about nontrivial and unknown concepts.


What the heck are you talking about? Most of the best universities in the world are in the states so let's start there. Most CS programs don't require any chemistry at all, and you would be crazy to take chemistry and compete with all the really grade-savvy pre-meds anyways. Now, that leaves math and physics, which are reasonable gates for CS and many other kinds of engineering.

CS is not a natural science, and even physics has a very tenuous relationship with it. It is more like a math or an engineering discipline, with a bit of design thrown in.

Disclaimer: I studied CS for around 10 years, getting a PhD out of it and doing "real" science.


My point was that you cannot expect to get into top CS programs by being a good programmer, but yeah, I didn't really specify that chemistry is not important.

CS is definitely not a natural science, which why I didn't even remotely suggest it.


My friend absence or presence of a degree from IIT or NIT makes no difference. I have enough experience in this industry to tell you the IIT guy has only one advantage, the IIT brand. The brand is extremely powerful, and the alumni network is large enough to secure you a life time of jobs no matter how bad you are in your work.

I've seen practically a little to no difference between IIT folks and folks from other colleges. They just happen to know how to stuff books in their brains to clear competitive exams and interviews. Besides that, when it comes to the ability to get things done they and every one else are just the same.

You will see nothing changes in the industry when you pass out. Chances are there you will see IIT folks get big ticket salaries, though they don't do 1/100th the work you do. Or easily shift jobs, because their seniors are well placed there.

True meritocracy is a far fetched dream in India.


I agree with you on most of the facts, but education system's incapabilities can't be ignored as professors here are not interested in either Research based or Open Source Project Contributions. Donno how much more talent will be wasted.


I have been through that in my collage days but recently we developed a quite complex module of large Enterprise application for US client and our head of enterprise department(who has been a programmer in the past) evaluated our work on the basis of the number of pages in the application.


My personal experience in this discussion is as a freelance developer living in Canada. Being hired to clean up/review code written by a $10/hr shop in India makes up a sizeable segment of freelance work available in North America.

I saw mostly PHP written by these outsourced developers, and what I saw is mostly what you would see from any underpaid/undermotivated developer (who bills by the hour). The most illustrative habit I found was the tendency for what I call "Manual loop unrolling"; that is, writing by hand in the code something that I wouldn't expect any self-respecting programmer to fail to automate (or just use the language's built-in tools!):

    $months = array(1 => "January", 2 => "February", 3 => "March"...);
    $days = array(1 => "1", 2 => "2", ...);
The impression I get from reading accounts (disclaimer: this is where my words cease to have any authority) is that in India, "software developer" as a career is a household name; it carries at least some status and pays relatively well, and it seems to be a popular choice.

I'm not sure how long this will be true with the current "learn to code" movement, but in North America many people who are currently software developers found themselves here by accident; they discovered something cool they could do with a computer, and then discovered that people would pay them to do it.


>> The impression I get from reading accounts (disclaimer: this is where my words cease to have any authority) is that in India, "software developer" as a career is a household name; it carries at least some status and pays relatively well, and it seems to be a popular choice.

well, you are somewhat close to the reality there. Software engineering is a traditionally well paying profession. This creates a general tendency for students to opt for it. Before you know, there are too many in that profession already and things start getting messed up. We are in that messed up phase now.


I worked for a company whose flagship product was a slapdash VB6 app that was first offshored to India, then brought back in-house in an attempt to fix the horrific mess. The Indian devs did a terrible job, but there is no reason to think that was their fault. I place the blame with the people who decided to execute so terribly. I seriously doubt they did their due diligence about who they were offshoring to, et cetera.

I understand why the author gets offended, because the whole "crappy Indian programmers" thing is really about self-superiority and xenophobia, not technical prowess. People see the crappy results and think it's because of India, since they're not willing to dig any further.

At this point in my career I've worked with talented folks from everywhere, including the subcontinent. But I won't lie, hearing that a project was offshored to India will make me wince, because offshoring is often the result of a broken business run by people who don't really know what they're doing. The crappy results are just a symptom of that.


I'm a programmer from India. Here its more of quantity vs quality. We have a ton of programmers, but really small number of good ones. Most of us come into this field not for the love of programming, but for an "onsite opportunity".


I suspect that if the same proportion of the U.S. population decided to become programmers, we'd have the same problem here. People who wouldn't make good programmers have more opportunities in the U.S. to go do something else.


As the author hints, there's nothing about living in India or being Indian that makes you a bad programmer. (Which I would hope would be obvious, because believing otherwise would amount to racism.)

The problem is an economy that pushes too many people, including many of the wrong people, into a job that is extremely technical and geeky. Coding is an often thankless and unsexy job. It involves many hours wrestling with compilers and obscure error messages, memorizing arcane rules of your programming environment, and conducting long and confusing email discussions with clients. If you're not one of the warped individuals who loves this kind of stuff, you'll have a hard time finding the motivation to get good at coding.

So when someone takes up coding as nothing more than a day job, the odds are against that person becoming good at it. I've heard from a lot of Indians (including the author of this article) that young people often fall into this trap. The same thing happens in every country, but it seems that economic conditions in India encourage it to happen more there.

For my part, I've met plenty of Americans who fit this profile--bad programmers, not interested in the field, just trying to make a buck. The lesson is: If you're looking for coding talent, it doesn't matter what country you're looking in. You must screen rigorously.


I agree with the author on every point he has made. But I would like to add one more to his list, the good ones eventually become demotivated because nobody gives a shit about good code in these outsourcing shops. Add to it the bad working conditions in some places, I work on a remote desktop/vmware desktop, the servers being in USA, it is so slow, so slow that I get 4 hours of productive work out of 8 hours that is billed. And because the estimation will not change, I start taking shortcuts. Don't blame me, I do what I have do.

And writing good quality code will not give you good rating, will not give you promotions. These firms make profit when they have more headcount. A good experienced coder becomes a liability because he/she has to be paid more and therefore the firm makes less money off him/her. To make profit these firms need more fresh out of college kids, who can be paid peanuts to make more profit.

I love programming, so I keep reading and updating my skills at home. I build mobile apps, explore new tech at home in hope that someday I will get a call from a good firm somewhere or one of my side projects becomes a hit and I can quit. Till that happens I will just bite the bullet and continue to go to office.

EDIT: Grammar and spelling.


> in hope that someday I will get a call from a good firm

Tip: Update your Hacker News public profile to tell us a little about yourself and describe a few of your most enjoyable programming projects (and link to them if open-source).


Don't wait for a call. Put yourself out there and apply for things. Good luck.


I have what is probably a unique view here.

I am a US educated Indian programmer who finished half a PhD here and got a master's degree in CS along the way at a top school. Since then I've worked at fb, apple, and yahoo.

But I have also spent some time earlier in life taking a course at NIIT, which was at that time the most common vocational school for programming in India. I say vocational because you are only taught the bare minimum you need to build an app or a DB etc. No fundamentals, and no ideas on why things work they way they do.

They take anyone who can pay as a student.

A large portion of India's IT workers have gone through such courses and learned the basics of one language and a few web queries. They have no motivation in the area (as the OP says), and just want to make a living.

So what you get is many people with no passion and inadequate training. They definitely serve a purpose, but it is very unreasonable to expect them to write clean code with a salient architecture to solve difficult problems.

There are of course the exceptions who go through NIIT and then teach themselves everything else they can, but these are the exception.


"So you want to hire somebody for less than ~ $20 per hour. And you expect the quality of $200 per hour experienced developer.

Stop having crazy expectations."

I'm sorry, but I have also had my fair share of bad Indian programmers. No actual good ones, but then again, I stopped trying after 8 or so. 200 dollars is worth a lot more in India than, let's say, San Francisco. Living expenses are a lot lower over there. I have however experienced geest Ukrainian, Russian and Romanian programmers.

I don't want to be ignorant, but Indians I've experienced also have a different concept of deadlines (they never met them, by a long shot).

I think all of the good Indians probably get awesome job opportunities outside of India, which would make a lot of sense, causing some of these problems. And as the Author stated, IT is one of the better jobs, there's a huge demand. But this indeed causes people to choose IT for opportunities over something that they'd enjoy more.


Have been paying an Indian Programmer $35 an hour. Writes great C++ code, couldn't be more happy. We have been raising his salary every now and then (we started at $20 and we can raise it to $50 over time).

There's two sides of this: If you don't get paid a lot, you probably are demotivated and yes, you can choose to deliver below average quality. However, that way, it is very unlikely that you will every get paid more or get better projects. Hence: You're stuck at where you are.

If you however sacrifice yourself a little bit, deliver great code, put in the extra effort, you probably negotiate your way up.

At least, that's how I got from an unexpierenced webdeveloper to owning a business and having a great staff <3.


If you're talking about an Indian who lives in India, you probably got a great one because you are paying an elite rate. If you're talking about a local Indian, you're talking about something different than the subject of the OP.

Finding a good C++ programmer for 70K a year might be worth sharing tips on, though.


He lives in India and this rate is pretty low for what we are getting, in my expierence. Can't really go below $20.00 and not just get some kid with a laptop, right?


So you're underpaying him by 25$ an hour?


Did you just outsource your math to India?


When you hire cheap indian/pakistani programmer through some * lance *.com site - without knowing it, in many cases you'll be paying rock bottom rate for middleman who pays less than half of it to actual programmer.

Welcome to the cost "efficient" world of outsourcing!

http://toprate.org/FILES/programmers.jpg


Interesting post, and I think very true. My takeaway: If you want quality {employees,contractors}, you have to pay them well. Other takeaway: Blaming others for failure is easier than introspection.


I guess the author has not worked with programmers from other countries. There are bad programmers everywhere. I've had the opportunity to work with programmers from all over the world, and the worst have been from the USA. Yes, American (read white). For example, the programmer who had worked in NASA who did not understand the concept of SQL injection. Yet wrote a whole system full of such security holes. Or the programmer who used to work for a big name startup. Who thought that python had to be written as if it were Java. Maybe the guy who leads a software team for a billion dollar mega corp, but does not care about source control (no GIT there).

On the other hand, I've met very smart Indian programmers. Guys who write awesome stuff and get paid well (and also get bought out). And smart Russians, Italians, English, Japanese, etc. There are good and bad programmers from every country in the world. Pointing the finger at India doesn't really do anything for anybody. The reason this argument exists is due to how big corps fell for the off-shore dream. They went out and off shored their software to places that lacked properly prepared employees. It was done in India, but it was also done in other places of the world. You mostly hear about India, because there are a lot of Indians in tech (which is a good thing).

Rather than point fingers at other ethnic groups, you should try and walk in their shoes a bit. Not everyone is born in a place full of opportunity. A lot of people out there have to do whatever they have to do in order to acquire a better life.


So I'm happy to agree that outsourcing to bad programmers is done by bad managers. That doesn't mean they're not still bad programmers.

And, y'know, even the best organizations make mistakes sometimes. If a company tried outsourcing to India once, for good reasons, discovered the results were bad and has sworn off ever doing it again, it could be there's nothing wrong with the company - it just made a mistake. Less than that in fact - it did a worthwhile experiment and got a negative result.


Well, if you look at the Google top management page you can count more Indians than Americans. Probably, just an speculation, there are more ways to be a developer in India, more people, and that produces a wide range of skill levels.


The top people in any field in any country are not working for bargain-basement outsourcing companies. India or America, is the same.


I know exceptions. For example the Argentinian outsourcing company Globant had an excellent staff and they have low wages. Obviously the employees move to other companies once new opportunities arises.


When I've seen bad jobs done by Indian companies, it has generally been as a result of poor project management from the client. Given the right milestones, targets and contractual obligations, and no goalpost-shifting, the results get better.

That said, I heard tell of a piece of code where "if n < 20" was implemented as a series of 20 "if n = 0", "if n = 1" conditionals, which beggars belief.


One consistent thing I've seen on the outsourcing front is there are those in the management chain (and thus the ones who sign off on outsourcing) that will insist on setting up some form of outsourcing -- first just the non-business critical stuff; a little later on more and more will be outsourced. This can be fine and a good way to grow.

However, many of the times I have encountered this there was a desire to do more outsourcing where the quality of prior work didn't merit the expansion. More often than not, the one insisting on the outsourcing had some sort of personal relationship with the group the outsourced work was going to.

This happened with a couple of different regions/nationalities.

Why relevant to this article? It's not just about pay, but specifically with outsourcing, you need to look at whether or not the decision makers are listening to feedback about the quality of work produced or insisting on steaming ahead regardless.


Meanwhile in India,

+ A guy who thinks programming is about taking a course and passing a certification exam, gets hired in iGate as a software engineer along with a bunch of other mechanical engineers

+ An OS class staff thinks real world softwares are created by drawing logic in Rational Rose and clicking 'generate code' button.

+ A guy who's good in cracking maths puzzles because college told them to get good at it, for cracking interviews, gets placement orders from five different software companies.

+ A guy who convinces his staff to build a cross platform app development framework for his final year project gets put off, because the staff wants a 'big' multipage project with a close button on the right top.

+ And finally a bunch of hackers, give shit about the rest of the country and is either trying or helping to build the next big thing in coffee shops and tech startups.


What is a non-relational object-relational mapping framework?


Thanks, for pointing out. Updated with a more sane bullet.


Unfortunately, paying someone well does not necessarily mean you're going to end up quality either.


No, but if someone accepts to be paid very little, you can be almost sure he's not one of the best.


Allow me to disagree with you here.

Good people, who are starting out, often undercut their rates to ensure they stay competitive with the plethora of options available to the buyer in the market.

Suppose, I value my work at $30 an hour and I don't have too many projects to show for it but someone else is offering the same skills at $15 an hour but they have a whole portfolio of (somewhat-)shoddily done jobs, 99 times out of hundred, I will lose my contract to the $15-an-hour competitor.

My only option: Quote $15 or less an hour and build up my portfolio. Unfortunately, once you 'sell' yourself for $15 an hour, no one will want to pay you more than that for subsequent projects. Sadly, what no one understands is that $15 an hour only buys you my time; it doesn't buy you my motivation to apply myself to the job. :(


> Unfortunately, once you 'sell' yourself for $15 an hour, no one will want to pay you more than that for subsequent projects.

In my experience, this isn't true. I only freelance part-time now, but I've managed to raise my rate by $10/hr for each separate client I've landed in the past 3 years. Granted, I haven't raised my rates on any of my long-term clients in that time. But the evidence I have (and what I've read) suggests that above a certain price point, many clients have a much higher ceiling for per-hour rates than you'd expect, and that the clients who are strongly price-sensitive are often the ones that you'd as soon not take on.


I don't disagree with you - I was talking about very low rates at comparable experience :)


Perfect! you will find lots of developer charging comparatively, but the quality of work they produce is real crap.


Over the years, I had several bad experiences with outsourcing to big companies in India. But recently I had a discussion with an Indian colleague. She used to work for a company for which my previous company outsourced to. She told me most of workers there are just out of school or the rest are bad programmers. Good programmers find quickly a job in better paid positions in other companies.

It seems the main issue is deciders in the west are happy to find cheap outsourcing companies in India. Their pick goes to the company with the lowest hourly rate. What they don't realize is that the good programmers move very fast in better paid position elsewhere... letting you work with the less qualified people.


Its a selection bias. Do the best programmers in any country accept low paying outsourced work with crazy demands? Of course not!

There are plenty of terrible developers available for cheap right here in the USA too.

You get what you pay for.


As mentioned, the main reason for this is that for an average Indian, software industry seems job promising. So they take it as their course in colleges. But the problem arises when after 2 or 3 years in college they realize their mistake. But there is no turning back. So either they opt to be in IT industry, or they take management path.

So really the problem is motivation. They opt IT because of job security, and not interest. When I had to choose between different streams of engineering, at that time recession was going on. Everybody suggested me to take anything but IT. They said IT will fall so don't take it. But it was my interest and passion for computers that I chose Computer Science. And after 4 years, I am more than happy with my decision and looking for a job at a place with more passionate people like me.

I have many friends who just took IT but aren't happy with it. So after 4 years, they are looking for other fields like management and army. So as you can see, the problem is motivation. they are not motivated towards a particular interest. They had just followed the herd.

I'm gonna quote steve here :

"You've got to find what you love. And that is as true for your work as it is for your lovers. Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven't found it yet, keep looking. Don't settle. As with all matters of the heart, you'll know when you find it. And, like any great relationship, it just gets better and better as the years roll on. So keep looking until you find it. Don't settle..."


It's also interesting to note you can run into pure cultural issues as well.

In one situation, we had one incredible "junior" Indian programmer who was working under another Indian senior developer. The senior developer did not have nearly the experience or expertise the younger, "junior" developer had.

Simply because of cultural norms surrounding age and seniority in Indian cultural, the more senior developer took pride in pushing the younger more experienced developer around. Telling him he didn't know what he was doing, telling him his code was all wrong, and generally threatening him with firing if he didn't follow what he was doing. This lead to many a heated argument and the younger developer having to let other American counterparts argue his case for him.

It made for a crazy environment. My manager confided in my that it was like living in high school all over again where the senior QB was getting pushed by the younger freshman QB who was bucking for his starting spot. Eventually the senior developer was let go and things got back to normal, but it showed even cultural norms can interfere with the quality of work getting done.


Isn't the sample size too small for such generalizations?

The so-called "senior" guy just comes across as a bully. Nothing more. Nothing less.

It also indicates that the indian side did not have a good filtering system in place to keep such folks out.

It also shows that the project management was not quick to spot this trouble and try to correct the senior developer's behavioral issues.

But drawing conclusions about the culture of a billion plus people based on that seems a bit extreme.


It's not so much a generalization but somewhat of a reality of the culture. There is definitely the notion of where you are on the hierarchy ladder in India. Being of a lower or higher caste does change the dynamics of the work environment. Of course, it can be argued that its better now but the caste system is still a major part of Indian culture. Aside from the caste system, there is a large 'follow the leader' mentality.

Also, respect for your supervisor means doing what you are told and not speaking out (even if you should be).

Take a look around a typical company that may have a lot of workers from India. It's very likely that most will be in non-leadership roles and are are very good followers.


The note about inflated titles is the biggest real difference I see. If you hired a bunch of brand new US/EU recruits and stuck them in an office and just said "get it done" you'd probably end up with the same amount of work/issues.

Actually, now that I think about it, a friend of mine worked at Andersen Consulting, he was one of the few from CS, most were Business people who had majored in whatever Business Computing program their school offered. Abyssmal would be a good word for the quality of work done there (this was a decade ago, may have changed). It was hire new grads at 40k, bill them out at $300/hr. Other than the scale of money, I doubt it was much different than what you'd find in most Indian consulting firms.

I've worked with many different Indians, most were not incompetent. The biggest problem we seem to have is hiring someone decent, new recruits are easy to come by, but retention of quality isn't working so well. I expect once wages are more even on a global level things will change, but that's still a few years away.


> So you want to hire somebody for less than ~ $20 per hour.

> And you expect the quality of $200 per hour experienced developer.

> Stop having crazy expectations.

Replace the word developer with its equivalent in any 'talent'-related job and it still applies, e.g. Radio, Voiceovers, Writing, Editing, to mention a few.

If you can't value my time, I won't find enough motivation to value yours. You pay peanuts, you get monkeys. :/


To put in another perspective, I am an Indian programmer quite proficient in Haskell and Erlang (relatively rare skills I hear) with lots of real world experience. And the rates I get offered by most US companies are in the vicinity of 25 USD/hour. I would not take up such low paid assignments at all but many would, and turn in shabby work. You get what you pay for.


Well done! Rare skills deserve rare money.


I wonder how much of the bad Indian programmer experience could just be bad management. How many of these places just fill up an office with warm bodies and throw everything they can bring in the door to anyone regardless of expertise?

If you go look through a site like Elance you will see some of these places just applying to everything. Some of the worst jobs I have see were largely because the developers put on the job didn't know the platform, so they had to spend a lot of time doing research and produced something which looked like as ugly as anyone's first crack at something.

Developers who charge relatively high rates (solo developers, not full service agencies) are most likely working a specific niche or platform which they are expert at. With huge Indian shop which takes on everything and claims expertise in everything, who knows what you are going to get.

And do these places ever kick something back? Do they ever say no? How much of a pain do you have to be to get an Indian dev shop to fire you as a client?


I'm not as experienced with outsourced programmers, but I've met a large gamut of technical people, both good and bad, native and not over two decades in the field. The best are the best, doesn't matter what the background.

The reason that Indians get such a bad rap in the States is due to the large numbers and the cultural differences. Behavior that is required/acceptable to survive/succeed in India and much of Asia, is regarded as fraud in the States. Cheating and experience inflation on resumes is so bad, that my colleagues that conduct interviews, state that 80-90 percent of resumes have at least one or more blatantly false claims (This is for all candidates.)

The collective experience of non-Indians in the field is one of doubt and suspicion in many cases. It's so bad that qualified Indians face more barriers and mistrust. And that's sad. No individual should be judged by the actions of others, but it happens. (I know people make assumptions about me too...)


So you want to hire somebody for less than ~ $20 per hour. And you expect the quality of $200 per hour experienced developer.

Why do you forget that the the person you hire gets around 10$ to 40$ PER DAY.

The #$ are being consumed in between by the contract making companies(aka - the outsourcing companies) .

Agreed that you hire at $20 per hour , and $10 per hour is quite good money in Indian Conditions , but the engineer gets $10 per day or even less.

The rest of the money is consumed by the CEO and the greedy non Engineers in the company.

Would that not demotivate anyone?

You really want an engineer to work out legacy code at 15$ PER DAY??

It's not about The American and The Indian -

It's about non technical management of both companies - The American and Indian.

The American 's company management wants to save cost and The Indian Outsourcing Company wants to milk out the cost.

Who suffers?

It's the technical people who suffer - on both sides.

To all American Companies - Please stop outsourcing via Some Other body shop like TCS,WIPRO,INFOSYS -

Open up your own offices in India and hire people. You would see the difference in motivation


Well, we all are a bit xenophobic in our perception of the world around us, there is always a notion of "us" and "them" hardcoded into our brains. And when one of "us" is bad we think "this dude sucks" because we think of him/her as a person. When dealing with a foreigner, and specially in an online, very non-personal way through a middle-man, for us that person is always just one of "them". If he does a bad job we will almost always jump to generalize the situation and get a "these guys are stupid" conclusion (works the same way with the positive experiences too). You never do that with "us", because you know it's not true, you know there is a lot of brilliant people around you, but you don't know "them" good enough to be able to think outside the black & white picture of your very limited experience.


If someone outsources a job to another company, then surely it's that other company's job to keep their programmers motivated, right? If they can't do that, then that's a reason not to outsource to that company.

The article sounds a bit like: don't blame Indian programmers for being bad, it's the client's fault for outsourcing to them.

Personally I've worked with a few excellent Indian programmers. They worked on-site in Amsterdam. I later discovered that there was also a 20-man team in India working on the same project. I never saw anything productive come from them (the only time I even noticed them, was when someone checked their "My Documents" folder into SVN).

The ones working on-site were clearly the cream of the crop, and I wouldn't mind working with them again, especially the one I keep running into at various open source meetups; he's clearly dedicated to his work.


Totally agree with the post. I see lots of software professional in this field who really don't want to code.


How many organizations that outsource

a) Send senior management to personally oversee the outsourced work in india ( at least initially )?

b) Send detailed SRS (Software Requirement Specification) to the outsourced team?

c) Personally interview and hire the programmers who will be working on their projects?

d) Personally perform a skills audit and then try to correct any deficiencies noticed through training for the programmers?

e) perform a thorough software estimation exercise based on the previous work history of the group they plan to work with?

The reason i raise the following questions is that i notice a tendency among many to stereotype the indian programmer for various reasons, but the reason for most software failures is probably a combination of bad management, poor tracking, bad estimation practises, lack of domain expertise among programmers, and the need to save a quick buck by the folks at cxo levels.

Just my two cents


Stella from matchist here. Our whole business is based on the fact that outsourcing development overseas leads to a bad experience (not all the time, but statistically). There are a lot of negatives to outsourcing (cultural issues, time zone differences) that already make a collaborative process like development even more challenging. There are ways to mitigate the negative effects of outsourcing, but they then negate the whole reason to outsource: labor arbitrage. If it's cheaper to hire local, there are good reasons to hire local (domestically). I actually just wrote a post about this on the KissMetrics blog: http://blog.kissmetrics.com/in-house-or-outsource/


I think you have covered most of the factors already but I wanted to recount my experience here to give everyone an idea of the kind of Indian programmers who get hired.

I used to work for a MNC who had an office in Bangalore and had good relations with most of the senior staff. After a while I joined a start-up (which kind of became successful) and my salary went high pretty quickly. Fast forward 5 years - I get a call from the GM of my business unit (who had become the VP by then) who asked me to join the company back and offered me 20Lpa(Lakhs per annum) when I was already working for 24Lpa. He just couldn't reconcile with the fact that my salary had become more than the people who went for on-site visits by staying in the same company. I had to politely refuse.


Hello first world HN readers! I am the tech lead at a development shop in Mumbai, India, that I started with my childhood friends two years ago. The generalizations that exist about software development in my country are quite valid, and are one of the main reasons we sought to get into this business in the first place - to provide value that is otherwise scarce. If you or your company is looking to outsource to India, please feel free to get in touch with me, I'm confident I will be able to objectively assuage any reservations that you may have about the work we do. We are reasonably expensive compared to other developers here, but our work generally speaks well for itself in comparison.


My heuristic for choosing Inidan programmers (I am an Indian) 1) Choose from top colleges. Apart from the well know ones, each state in India has a something called NITs. Apart from this, each state has one "top" college. Then, each major metro has 3-4 colleges which produce good programmers. I generally stick to these coleges. It comes to about 50-60 colleges, so not a bad number

2) Look at good 10th class marks...I find that it is a good indicator compared to engineering marks.

3) Look at quality of english in terms of grammar. Almost all of us were educated in English medium. If they didn't pick up good grammar for whatever reason, you know they are bad.

Again, this is a heuristic


Interesting process, especially the emphasis on the 10th class marks - I think I know where you are coming from.

However, I'd disagree with you about the top colleges criterion: top colleges don't necessarily produce the best programmers. There can still be mediocre programmers that graduate out of top colleges, right?

Also, please don't discount someone because they have bad English skills. I know a few really good programmers (educated in good English-medium schools) who still can't express themselves in grammatically-perfect English but their knowledge of programming can blow you away.

That said, in the current job market, any opportunity is welcome. The onus is certainly upon the job-seeker to make sure they make the most of the opportunity you give them and one of those is definitely about how they present themselves to you.


>However, I'd disagree with you about the top colleges criterion: top colleges don't necessarily produce the best programmers. There can still be mediocre programmers that graduate out of top colleges, right?

Well its a heuristic.


You probably mean "it's"


I agree with all the heuristics mentioned except the one about English grammar. Though most people outside the major cities are educated in English medium, it is very common to them graduate without ever having an actual communication in English. I met a lot of Indians who are not very good with respect to grammar but are amazing programmers with enough communication skills to get the job done.


The article makes a crappy defense as to why there is poorly written code coming from India. However the points as to the reason in the comments section are much better. In my opinion you get what you pay for. So if you hire an Indian programmer based solely on price then you made the mistake as an employer. Qualifications are not the issue but rather supply and demand. Everyone wants to pay the lowest price and get the best outcome. It works as long as supply of good developers is less than the demand. However the demand is outstripping the supply because there can only be a finite amount of experts in a field.


Indian developer here. I think one point is missing here.

There are two categories of software development jobs in India: Service Based and Product Based.

Service Based - which means you are working in a org taking outsourcing projects (Cognizant, TCS etc).

Product Based - A product based org has set up its development center in India (like Google, Amazon etc).

You get better salary, better work, better environment, better decision making power in Product Based Orgs - which simply translates to this: better developers are present in Product Based Orgs.

I have seen Job Descriptions that said 'Only for developer working in a product organization'.


This got me thinking. If you keep running into people "bad" at a job, there's usually something else in the play. If you found a restaurant has very rude waiters, but manage to keep open for quite a while, it usually means it have really good food or really cheap price. Same goes here. The "badness" of the "Indian programmers" is only a indication of their other "goodness", including cheap, responsive and maybe on schedule.


There are a few other reasons these cross-continental relationships often sour and produce bad work: * dialect differences * time zone differences

Sometimes there's a simple 5 min question that needs answering before a programmer can proceed, if they have to wait for the other party to wake up, it can slow things down.

If the employer and employee speak different versions of English, there can be misunderstandings, and frustrations.


I think the biggest problem with Indian programmers is that they are not really programmers. Most of them people who work in the outsourcing companies are barely educated in the field they work and lack competence. Their jobs mostly are not about writing code to create something new but just to fix legacy code or put lipstick on a bulldog.

The real Indian programmers are as good as any American or Russian or Korean.


If you let shit management outsource a shit project with a shit budget, no amount of pressure in the world is going to turn that turd into a diamond.

My alternative comment was just going to be a link to "The Monkey's Paw" http://en.wikipedia.org/wiki/The_Monkey's_Paw


In my experience. I've seen a lot of people calling themselves web developers who are in fact just average web designers with some basic scripting expertise. Regardless of nationality, it's hard to find people who can actually code something without copy and pasting from stackexchange.


by telling everyone that STEM is the place to be, isn't America doing just the same - creating people who are uninterested in what they are doing, but doing it anyway because it is the most likely way to stay employed in a field where the skills are in demand!


We saw a surge of crappy American programmers in the late 90s, arriving on the other side of the dot-com boom. The exact same kinds of problems, slightly mitigated by the fact that when someone is on-site sitting next to you, it is a little easier to walk them through what they're doing wrong.

You've hit the nail on the head though - we're setting ourselves up for exactly the same kind of problems we first started seeing in the 90s, and then much more as we started importing 'cheap talent' from abroad and created a boom in demand for warm bodies that could type.


There is alot going on in your statement that you actually have to pull apart. I couldn't even begin to start that process. However, I will say that the comparison is not the same. And more notably, if America is indeed taking the initiative to encourage STEM, it doesn't seem to be working as well as we might think it does.


As a user, I feel offended when I zoom in on subject webpage in my iPad and the nav menu gets on top of the text I would very much like to read in a slightly bigger font. Not much motivation to check how the page is displayed on the most popular tablet, right?


I have personal hands on experience of hiring/ working with 1, 2, 3, 4, 5, 6, 7 and 8 messihas who claimed they were the best programmers. And guess what......well, keep guessing to know how I feel about programmers now!!!


Who is the article addressed to? As western developers we are happy to stop every and any outsourcing ASAP because it will improve both salaries and quality of code. Most managers will never read your post.


He was probably venting.

Sadly, outsourcing is here to stay and is decided upon by CxO level folks with little to no input from the tech staff.


If you are a good programmer than you usually have constant demand and many opportunities. Really good ones aren't working in web shops unless they are busy working their way up and out.

90% of anything is crap


Hopefully the owner of the site sees this. http://imgur.com/rwvk8k

Your layout pushes the content into a single thin column on the right on mobile.


Hopefully? The site has a contact link. Why post your asinine one-upmanship here where it is of no relevance to the discussion?


Saying this is an "Indian Programmer" problem is unfair. Bad quality is what happens when you only optimize for price.


Obligatory quote (and a simple TL:DR): paying peanuts would only get you monkeys.


Some anecdotes from Bad Indian Programmers at a larger Indian outsouring company:

When implementing a touch version of a website (to be hosted on touch.example.com) one programmer copied the entire project, changed the relevant views/templates and deployed it, effectively creating a new, separate codebase. This was never checked into version control anywhere, I discovered it when I was looking into some unrelated issues with the server.

One programmer was struggling with an image being "corrupted" after being uploaded to a server. He struggled with this for hours, attempting to upload the image in different formats and zipping/extracting the image with no luck before asking for help. When trying to access the image on the webserver the server responded with a 401. After pointing out that this was an issue with permissions, the programmer resolved the issue by running the command "sudo chmod 777 -Rf logo.png". ("chmod 655 logo.png" would have sufficed.)

Needing to get the number of models in a backbone collection, one programmer placed a script-tag inside a javascript template used by backbone. This was one line of jQuery which counted the number of elements in the element used by the backbone view. The number of elements was then stored as elements in the DOM, adjacent to the elements in the template. So when backbone rendered a collection with N models, the javascript in the template would run N time times, storing the number of models in N different elements. The number of models in the collection were then fetched using jQuery and the :last-child selector. This whole mess was replaced by a simple call to collection.fetch().

I've got dozen of experiences like this (although these are the most memorable), and I'd like to reiterate that these programmers worked at a larger Indian company who specialized in outsourcing. It's what I think of when I hear about "Bad Indian Programmers".

>"Could it be it wasn't 'those Indian guys' who caused your project to fail?"

The project could have failed with good programmers. Bad Indian Programmers virtually guarantee it.

>"Everybody else's code sucks."

There is bad code, and then there is really, really, really bad god-awful code which no amount of "change in requirements" or "failure of communication" can explain. It really is terrifying how much technical debt can be incurred by Bad Indian Programmers.

>"Stop having crazy expectations."

I don't think anyone hires $20/hr programmers and expect $200/hr quality work. The expect some value to be created. Instead, Bad Indian Programmers create negative value when the work they do is worthless and has to be done over (often by a more expensive programmer).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: