Bad Indian Programmers
srirangan.net
srirangan.net
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.
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.
But of course, merely stating that Indian programmers should not be hired or anything as such is simply wrong.
http://www.theregister.co.uk/2011/08/03/pcs_offshoring_warni...
(see the comments too)
Myself included.
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.
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 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.
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.
For a while I've wondered if the true attraction of this sort of outsourcing is that it's a cheaper way to fail.
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.
> 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.
> 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...
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.
> 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)
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.
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.
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.
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.
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).
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.
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.
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.
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.
* 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.
+1 for putting it out.
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.
Four hours later--no, definitely not the right train.
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.
> And you expect the quality of $200 per hour experienced developer.
> Stop having crazy expectations.
Enough said.
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!
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 :)
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.
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.
[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.
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.
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.
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!
Anyway I completely agree that physics and chemistry should not be heavy requirements like that.
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.
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.
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.
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.
CS is definitely not a natural science, which why I didn't even remotely suggest it.
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 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.
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 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.
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.
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.
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).
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.
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.
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.
Finding a good C++ programmer for 70K a year might be worth sharing tips on, though.
Welcome to the cost "efficient" world of outsourcing!
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.
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.
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.
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.
+ 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.
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. :(
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.
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.
There are plenty of terrible developers available for cheap right here in the USA too.
You get what you pay for.
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..."
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.
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.
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.
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.
> 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. :/
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?
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...)
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
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.
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
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.
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
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.
Well its a heuristic.
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'.
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.
The real Indian programmers are as good as any American or Russian or Korean.
My alternative comment was just going to be a link to "The Monkey's Paw" http://en.wikipedia.org/wiki/The_Monkey's_Paw
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.
Sadly, outsourcing is here to stay and is decided upon by CxO level folks with little to no input from the tech staff.
90% of anything is crap
Your layout pushes the content into a single thin column on the right on mobile.
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).