149 comments

[ 6.0 ms ] story [ 193 ms ] thread
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.
> 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.

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!

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.
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.
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.

$4 x 8 x 24 = $768 = INR 42000.
> 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.

But $20/hour code causes trouble and doesn't actually help. Its more like negative $50.
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

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.

"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 ?
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.
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.
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.

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.

Totally agree with the post. I see lots of software professional in this field who really don't want to code.
> 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. :/

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.

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.
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.

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.
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.

An engineering school that teaches a course in PHP instead of more fundamental and core languages such as C, Java, or even Python is shortchanging their students because they don't learn fundamentals. If I may offer an analogy... There is lots of money to be made in the field of IT and computer science work, just like there is a lot of money to be made in drilling for oil. Teaching C, Java, or Python is like teaching Geology and how to find the oil and how to refine it. It is fundamental. It is the process and the core of the business. PHP is like teaching your students how to work on an oil rig. Fast money. They will probably never have a real stake in the business. They will always be stuck as just, "workers".
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.
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.

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.

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 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.

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.
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?
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.

Don't wait for a call. Put yourself out there and apply for things. Good luck.
> 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).

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.

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.

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.

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.

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.
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?

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..."

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.