Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

The other half of this question: How do Programmers in the East see programmers in the West?


The eastern part of the world (India/China/Philippines ) mainly provide outsourcing services to the western world (USA and Europe).

Do you have the experience of working with offshore teams? If yes, how was it?

Do you hold any generalized ideas or opinions about the programmers from the East (e.g. Are they cooperative, do they deliver on time or do they do quality work?). What are these based on?

share

locked by Yannis Rizos Mar 13 '12 at 20:43

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

29  
Disclaimer: It's untrue that all eastern programmers provide outsourcing service to the western companies. –  mauris Feb 23 '11 at 8:27
3  
True . But Major part of the IT economy are built on services. –  Vinoth Kumar Feb 23 '11 at 8:51
8  
As a contrast I've also posted: programmers.stackexchange.com/questions/50884/… - "How do programmers in the east see programmers in the west?" –  Jon Hopkins Feb 23 '11 at 11:33
11  
Re. vote to close - I'm astonished. I think this is a great subjective question though I would stress that people need to support their answers with experience and facts over pure opinion. –  Jon Hopkins Feb 23 '11 at 11:36
11  
Wow, when I first read this I thought it meant East Coast vs. West Coast in the US. –  Andrew Koester Feb 23 '11 at 16:01

45 Answers 45

up vote 83 down vote accepted

Hmm Interesting views.

I'd just like to throw in mine.

I live in India (I'm Indian) and I've been programming since I was 11/12. All I have so far is an high school education and interestingly I've done two things so far, I taught at an Indian Computer Institute and right now I develop freelance (and got myself a project with a VERY high profile client)

So two things that I think are true from where I stand:

Sure people are people, but the Indian mentality on life and education is very different here, for the months I taught, I saw parents push their kids into IT just because they think it'll get them money or something, also, I taught students doing/finished Bsc and Engineering degrees and 98 out of 100 cannot write a few lines of code in C. (Forget quality code) .

The State Computer Science course here, they have Turbo C as part of the curriculum, C++ to most people is C but only using cout to print.

As for development, with these kind of graduates, you'll expect to find tons of "engineers" out there, coding horrendous things. I've met small size "Companies" that use no source control, they won't even have an idea of what unit tests are.

Its sad that I have so much Ill to say and it pains me. BUT Everyone here is not like this. There are so many of us, that, that maybe the impression people get. lol

Somehow even being successful here means moving somewhere else, because there is no real scope to grow and really hone your skills. There are of course the smart-heads from IIT and other top colleges here that do know their stuff (eventually they move out too)

But the bottom line is that IT education here is pretty sad in my view.

share
29  
Very interesting, thanks for the viewpoint. I think the "parents pushing their kids into, and people studying, stuff they're just not good at" phenomenon is pretty much a world-wide one - its bad results just seem at its most visible in India at the moment because it's so insanely attractive there to do offshore work, and other metrics like population. But it would be a huge mistake to think India doesn't have brilliant people, and competent developers –  Pekka 웃 Feb 23 '11 at 12:48
4  
@Pekka if I had a nickel for everytime someone told me to be a doctor or a lawyer I wouldn't need to be in IT. –  jonescb Feb 23 '11 at 13:48
1  
Great cultural insight. I went to school with a number of Americans of Indian descent and I remember three separate occasions of comforting some that were distraught because they just didn't understand/like programming but had to get a high-paying job so they could go home and visit family on a regular basis. That pressure pushes people in directions they may not have the aptitude for. Meanwhile, my extended family is a mere 1500 miles away and it's a good year if I make it home for a visit. –  Steve Jackson Feb 23 '11 at 16:03
11  
+1 for mentioning the turboC problem. I mean if they dont want to spend much money, use eclipse or something. Using that outdated piece of software just turns students off programming and computers. –  apoorv020 Feb 24 '11 at 7:12
3  
@apoorv true. when I used to teach earlier (At "renowned" Indian institute I won't mention), they used turbo C there too, I used to use netbeans to teach (which was already installed) but they forced me to go back to TC! Eventually 4-5 students went up to him and told him they liked it for the first time, because they actually could write a program that would work! –  gideon Feb 24 '11 at 9:33

People are people. Some programmers are good programmers, some programmers are bad programmers. Some bad programmers can become good programmers with time, while time can never benefit some other bad programmers.

Location tends to not be a factor here. But maybe opportunity might.

I was asking what the words "Bad Syntax Error OK" meant in GW Basic when I was 8 years old. I grew up with computers. Not everyone has that advantage. Times are changing though, and the 8 year olds of today have more access to technology than the 8 year olds of yesterday.

But it's important to realize programming is more than just knowing how to use a computer. It runs much deeper than that. Here are some key characteristics that separate the good programmers (and the ones who just need time) from the real bad ones:

  • Good programmers are curious
  • Good programmers read online blogs and articles and try to learn more about their field
  • Good programmers answer questions on Stack Overflow
  • Good programmers with 1-2 years experience or more understand that their Computer Science education wasn't a waste of time
  • Good programmers can think outside the box
  • Good programmers are also good leaders
  • Good programmers are proactive and don't need to be told what to do

Most importantly, good programmers are also good communicators. The best programmers are the ones who can persuade others. They're the ones who can patiently debate a problem with another peer until a solution is found.

The biggest challenge is communication.

Whatever the challenge, don't ever stereotype yourself or others. You have just as much potential as anyone else and vice versa. Just remember that you can do anything that you really put your mind to!

share
1  
Although I would love to agree, I disagree an example: Good programmers are curious, Good programmers are proactive and don't need to be told what to do (Correct, how about growing up to a patriarchal society where curiosity is punished or you have to be told what to do by a senior and be proactive only when there is no other option)? I really wish things were as you describe, maybe in a generation or two... –  dimitris mistriotis Feb 23 '11 at 16:48
1  
@jmort253: It is a very big discussion and we might be off topic. I just believe it is difficult for a person to change behaviour overnight or more over to behave differently in social or work landscapes. I did not mention that both approaches have benefits. Many people I know try to combine them by doing part of the job west and part east (based on the questions dichotomy) –  dimitris mistriotis Feb 24 '11 at 9:26

Warning, gross generalizations ahead. Viewpoints expressed are not shared by everyone. In fact, the author may not even believe them.

Western developers are afraid of eastern developers. We hear time and time again that our jobs will eventually be outsourced. This is a bad start to any relationship. To make matters worse, we're constantly reminded that our educations are inferior. Eastern developers are cheaper, smarter, and will put up with more hassles. Our professional experience with eastern developers doesn't matter because it's poisoned with fear.

share
24  
Actually, western developers are not afraid of eastern developers but of outsourcing managed as a simple reduction cost operation. –  mouviciel Feb 23 '11 at 11:14
2  
which is the same thing. The $5 an hour Vietnamese programmer is a direct threat to our job, because even if you need 10 of them to do the same work a single one of us does, it's still cheaper. Or that's how management calculates, never taking the long term implications into account. –  jwenting Feb 23 '11 at 12:52
8  
"To make matters worse, we're constantly reminded that our educations are inferior"? Where did you get that from? Outsourcing is a fact of life, all companies are looking to cut some costs. Eastern developers have absolutely nothing to with it. You shouldn't be fearing them you should fear your boss/client that choses to outsource and cut costs without considering the impact on quality. It's actually the other way around, our education (I consider myself western) is way higher hence our cost is higher. –  Alex Feb 23 '11 at 17:41
2  
@Alex: re. education. US education is not what it could be, or once was. I taught CS at Boston College, a highly-rated competitive-admission school. First program: convert Celcius to Fahrenheight, F = C*1.8+32. Glazed eyes and fright around the room. Write a project proposal. Can't write a sentence with punctuation. Can't spell - considers "alot" a word. No idea when to use "he" and "him", "I" and "me", or apostrophe. Say "comprise" and "going forward" like big-shots. All expect at least B+, if not A. You just teach at their level, and every semester you get a new batch. –  Mike Dunlavey Feb 24 '11 at 17:37
3  
@apoorv020 (cont) The problem with this approach is, middle/high school has changed from an environment that is supposed to teach skills to students that will help them be successful, to teaching them skills that will teach them to get better test scores and make the school look better thereby pushing more of teaching of fundamental concepts into college (thereby devaluing higher level education). It was a miserably failed attempt to apply the economics of the marketplace (Ie competition) to the public school system. –  Evan Plaice Mar 18 '11 at 16:16

Blunt and cynical:

  • Cheaper
  • A threat
  • Lack of appreciation that you trade local code monkeys for more expensive project managers and analysts to liaise with the off shore teams
  • Stakeholders will get what they asked for because of their inability to deliver a concise and comprehensive requirement. This won't be what they wanted. Stakeholders want local knowledge...
  • ...but it's box ticking for senior IT management because it's trendy/popular/KcKinsey said/don't understand developers/...
share
1  
+1 i really loved when you said KcKinsey –  Srinivas Reddy Thatiparthy Feb 26 '11 at 20:09

I've dealt with three projects that were (mostly) "delegated" to off-shore (eastern hemisphere) resources. One of the three cases used a group (or maybe just one guy -- only dealt with one, but not sure how many others he had doing work) in eastern Russia. They/he did good work, and the project progressed quite nicely, other than needing work on the UI to fix some minor problems with wording from being worked on by people for whom English was a second (or maybe third) language.

The other two were a rather different story. Whether by chance or not, in both these cases the programmers were in India. In one case, essentially everything they did ended up having to be treated as nothing more than a prototype -- usable (to a degree) for testing possible designs, but everything they wrote had to be thrown away and replaced to get production level code. They seemed to exemplify what I think of as the "ISO 9000 mindset". They showed almost religious adherence to policies and procedures, but nearly complete lack of insight into the problem that was supposed to be solved. Their code may well be the clumsiest I've ever seen.

In the other case, the project was eventually just dropped. It had been the hare-brained scheme of a recently-promoted VP, and I'm pretty sure the idea from day one was to minimize expenditure, while still being able to tell him that his idea was in active development. While the code we got was entirely useless, it would be hard to blame the contractor much, since no effort was ever put into managing the project or even just getting them a usable spec. Their code started out poor and quality quickly degenerated when it became obvious nobody cared.

share
3  
The fact that "Nearshoring" has been invented as a word, indicates that the difference you found between Russia and India is not uncommon. See en.wikipedia.org/wiki/Nearshoring –  Sjoerd Feb 23 '11 at 8:36
8  
The 2nd story summarises my experience on a number of projects over the years with Indian dev teams. I won't generalise and say that ALL systems that come out of India are like that, but ALL that I have been involved in have. –  jmo21 Feb 23 '11 at 9:13
4  
@Jerry The east of Russia is far closer to the USA than the west of Russia! –  Kirk Broadhurst Feb 23 '11 at 11:13
3  
+1 for "They showed almost religious adherence to policies and procedures, but nearly complete lack of insight into the problem that was supposed to be solved" . This is very true . –  Vinoth Kumar Feb 23 '11 at 13:07
1  
@oosterwal: check the profile " Colorado Springs, CO, USA ", @Jerry: it is closer to the USA (just the Pacific in the midst) but then the USA cover a few timezones as well –  Matthieu M. Feb 23 '11 at 18:56

I belong to the Eastern world and I also have experience outsourcing work from my company to the Eastern world again :-) My company didn't want to invest is's own resources to get the job done, inspite of all the help we could offer to the Outsourcer the Project did fail. It was frustrating to work with some of these Engineers, I think the outsourcing models and the technical expertise can mature more on the East for the betterment. Having said that I have worked with a lot of people in the western world who can also improve. You find good and bad programmers across the globe.

share
6  
+1: You find good and bad programmers across the globe. –  oosterwal Feb 23 '11 at 13:52

Disclaimer: I live in Central Eastern Europe, make your own decision on whether I count as Eastern or Western :-) As such, I worked on projects outsourced to our country from Western Europe, and I experienced doubts from the more Western coworkers and management concerning our abilities, similar to what Indians must experience in such situations.

OTOH I have been working with several Indian and some Russian developers on two major projects. The first also involved a component developed entirely by an Indian subcontractor, which was easily the most horrific piece code I have ever had access to (I can't say "the most horrific code I ever read", because upon seeing that the largest single source file measured more than 600 Kbytes in size (or AFAIR about 30K lines), I quickly closed it and could only pray that I may never ever need to touch it. My pray was listened to).

The latter (which I am currently working on) has been subcontracted to 3 different companies, some of them applied several Indian programmers. We have been cleaning up the result of that in the past 1,5 years, and there is yet enough work left for the foreseeable future.

In my personal life, I lived in India for over 3 months at a previous era of my life, so I probably know more about the country and its inhabitants than an average Westerner. Personally I like Indians a lot.

My personal experience has been that the same noticeable cultural differences which exist between Western and Indian people in general, are observable between programmers as well. Indians are usually very diligent in executing whatever concrete task is thrown on them, but not necessarily see or even feel the need to understand the bigger picture. Which can easily result in low quality software.

Another potential issue is the culturally ingrained resistance of Indians to say no to any request, as I believe it is considered rude by them. If you go to an Indian grocery shop and ask for blankets / jewelry / shark fins / whatever, the owner will say "yes sir, in a moment", then sends out his boy to some other shop in the neighbourhood to fetch the product and proudly presents it to you. Which is good business practice indeed. However, if the same is applied to subcontracting a SW development project with a fixed impossible schedule, the results may be disastrous. This is just speculation from my part though, I have no concrete evidence on whether or not this is really a factor in outsourcing SW development to India.

One prime example of futile diligence in our current project was the implementation of a performance monitoring scheme. The idea was to pass around objects which gather performance statistics. However, the solution turned out to be slowing down the app so much that it was never really used. Nevertheless, its remnants in the code were left there for us to clean up. In practice, this meant passing an extra object parameter to all (about 6000) methods in the code. The guy who did it even added a comment to the Javadoc of each method, noting that the extra parameter was added for performance measurements! Now, I can only marvel at the diligence of that guy, doing his job through all 6000 methods and faithfully inserting those Javadoc comments everywhere. OTOH, a) as noted earlier, the scheme was never used in practice, and I am sure its performance hogging effects could have been detected by an early prototype, making the whole job unnecessary, b) all the Javadoc comments contained the same spelling error, c) such comments do not belong to Javadoc anyway.

I don't mean that this all was the poor Indian developers' fault (except the misuse of the Javadoc). IMO it is much more the fault of managers mindlessly contracting out projects without monitoring the results, conducting strict acceptance tests and ensuring the adequate quality of code and documentation. Not to mention hour based payment schemes which surely don't make any subcontractor interested in saving development time.

However, I think I would be hard pressed to find developers in the West to undertake similar tasks with the same level of consistency and without complaints.

We also have subcontracted testing tasks in this current project to a group of Indian testers. Personally we are only in contact with one of them, so no idea how many they are in total. However, this guy is a gem of a tester, a valuable asset on any project. Apart from being diligent and thorough, he asks a lot of questions to understand the big picture, often tests even more than what was expected, and reports issues found precisely and descriptively.

share
42  
Well, I can only thank you for not generalizing. Generalization never works. –  sukhbir Feb 23 '11 at 10:11
41  
lol @sukhbir's generalisation –  Matt Ellen Feb 23 '11 at 11:35
3  
Great perspective Péter, thanks. –  jmo21 Feb 23 '11 at 11:57
19  
Another potential issue is the culturally ingrained resistance of Indians to say no to any request, as I believe it is considered rude by them. This propensity for 'Easterners' to always say 'yes' has been noted in other articles on cultural differences between East and West. One article I read many years ago explained that when some far-Easterners say 'yes' in response to a question their primary intention is to imply that they understand the question, not that they necessarily agree to be bound by it. That article, from the '90s, targeted differences between US and Japanese business. –  oosterwal Feb 23 '11 at 13:32
7  
I thought europe was a country.. –  Dave O. Feb 23 '11 at 16:14

I live in Central Europe. The outsourcing wave went over us during the recent years. I have worked on outsourced projects from "the West", but nowadays the outsourced projects land in cheaper countries. So I have been on both sides of the equation.

When we were the outsourcees our managers and the guys whom we worked with on a daily basis were nice, treated us like an in-house developer. A slight concern about job security could be felt from the rest of the people, what I considered perfectly normal. Also, we got the second-rate tasks in a bigger project, which is also fine by me, you shouldn't outsource your primary expertise.

Then the projects moved to cheaper territories, which was kinda inevitable.

The bottom line of the whole outsourcing story is that management doesn't give a rat's ass about your knowledge, experience, education or know-how. All they care about is the costs and their bonus. So unless there is a reason why your local presence is needed, software projects will be outsourced eventually to cheaper and cheaper countries.

share

I live in Russia, Siberia and work for German medical company which outsources projects to us. I guess it is a bit more than outsourcing: we have shared teams between Russia and Germany, we have business trips to each other, etc.

Of course I'm subjective, but I believe we are an example of successful outsourcing: code quality and product quality is raising significantly since we started working on it.

It is a bit disappointing to be a cheap labor force, but on the other side we have a chance to work for a big company with great technology and management experience.

share

I have been working for 3 years with indian developers (I am italian). People are people. We outsourced mainly beacuse we needed a team, and in italy it is difficult to find a team, expecially in not popular languages like Delphi. So the main reason is finding a team, not cost.

Anyway the team we found was very good because it had a very good leader. But the other developers were not so important. What happened? now that developer works directly for us, because he is a very nice person and he become also my friend. There is a strong relationship and also we pay him almost an italian salary. Why? Because relationship matters. I've seen many people going to India just to save.

You get what you pay for. Then of course you can save some money, but I think that (expecially for small projects) doing outsourcing only for saving money is a wrong choice.

share
2  
I think he makes a good point. If you are outsourcing to cost money, you might perhaps be picking very low-cost teams. Outsourcing to bigger/quality vendors may perhaps save less money but have more benefit. –  apoorv020 Feb 24 '11 at 7:19

Very bluntly, and very generally, I don't believe that programmers in 'the west' have high opinions of programmers in 'the east'. I'm not sure if this is justified or not.

As some answers suggest, outsourcing is a threat to many in 'the west'. This is an automatic reason to distrust the 'rival' programmers.

I've only seen bad code when looking at outsourced projects, and only a small number of times. This could be because the work went to a cheap shop ("you get what you pay for"), because the project was poorly managed, or most likely because if the project was successful then I wouldn't need to look at the code. In other words, you only hear about the bad code.

There are also horror stories - like the above 30000 line file. Again, the worse the story the further it will spread.

People will say things like 'If you want it done cheap, outsource. If you want it done right, do it in-house.'

If you're learning and improving then I wouldn't worry about it too much.

share

If the quality of the work is poor it is perhaps not so much that they look to India but they look to whoever makes the best bid, and that is likely not to be the likes of Prasoon Saurav but some junior coding team.

share

IMO the problem is not East vs. West, but the general idea of outsourcing. Back in the second half of the 90s, the internet boom, Y2K and the Euro currency conversion created a lot of work for programmers, so outsourcing was a hot topic back then. But it was outsourcing within the country, not to the East. Still, many of the problems we expect or experience with offshoring also happend with local outsourcing partners.

In many cases, writing a good specification is about as much work as doing it yourself (albeit Q&D). But since the goal of outsourcing is to save time and/or money, the specs given to the outsourcing partner are sketchy. Add a contractor paid by the hour and a lack of supervision and it's clear what you have to expect.

share

I've experienced several projects offshored to Asia (different countries which I won't mention). ALL of them were dismal failures. Despite copious and detailed documentation, specs documents, etc. etc. being sent over the result (if anything was produced at all) was uniformly poor. Usually it either didn't work at all or was so marginally functional as to be useless. Projects were also (if they produced deliverables at all) seriously late.

OTOH I've worked with Asian programmers and others working in Europe and the US and most of them are good, hardworking people who know their jobs well.

Maybe a statement by several of them that all the good IT people leave Asia to work in Europe and America says it all. What's left there is the bottom of the pile, with little or no quality people to provide oversight, training, and team leadership to yield improvement. Having had to deal with Asian IT people living there (at least from some countries) over the phone and email (and seeing interviews on television etc.) there may be culture involved as well. Many seem to consider themselves racially and morally superior to Americans and Europeans (and consider those leaving their countries traitors) and refuse to listen to advise from whom they consider inferior beings. This is certainly not true for everyone from Asian countries, but may be widespread enough to create an atmosphere of "we know best, all problems are caused by the customer" in the offshoring companies over there. Of course companies appearing and disappearing quickly, rebranding themselves and starting again after their name gets sullied by poor performance, also plays a part.

The situation in eastern Europe is better, maybe in part because many of those countries are part of the EU so there's a bigger threat of successful legal action against them if they screw up.

share

I can't speak for others. This is my opinion, which people don't seem to disagree with. Let me start with some of the facts as I see them.

First, there is evidence that most people aren't really cut out for software development. (For instance UI research indicates that over half the population will probably never "get" the idea of a directory tree.) In the West, those people have no problem finding other decent jobs that they are better fits for. In India, by contrast, there is so much pressure to go into software development that they do anyways. This means that there are a lot of people in India going into software development who really shouldn't.

Next, India is a common destination for outsourcing. Companies do this because it looks cheap (salaries are low). However it is well documented (for instance see the documented cost factors in the COCOMO II model) that all of the following increase required development time and effort: workers at multiple locations, workers in multiple time zones, and workers from multiple cultures. Any project run in India and directed from the West will have all three cost factors. (This is before you add the tendency to find people working as developers who really shouldn't be.)

Finally the absolute biggest challenge in software project management is getting accurate information about what is not working to the decision makers who need to know it. I like this humorous take on that tendency. For whatever combination of reasons, be it desperation, culture, or a belief that the customer is right, this tendency is worse in projects that have been outsourced to India. Sometimes to a comical degree.

The result is that there is a strong tendency for American companies to succumb to the siren song of low wages, outsource work to India, and then for the outsourced projects to turn into disasters. (But the extent of the disaster is not apparent until after Americans have lost their jobs.)

The other way that companies go is to hire Indians into the USA on H1B visas. This gets rid of the remote worker issues. Many Indians want these jobs because salaries are higher in the USA, etc. And there are more than enough truly excellent Indians out there to fill all of the available jobs. But there is a problem. American companies hiring on H1B visas are required to swear up and down that no Americans were available for the job, that the hired person is being paid market rates, etc. But someone on an H1B visa has a hard time switching jobs. This gives the employer a captive worker. And leaves no market incentive to actually treat those employees fairly. This gives companies strong incentives for dishonesty. Too many succumb. The only thing limiting the rate of abuse of this program is that there are caps on how many H1B visas are granted each year.

As an American I have no problem with the best and the brightest coming to the USA. Quite to the contrary, that is what built this country. But treat them equally once they arrive. For instance I know a person from the Philippines who, due to his visa status, has had to turn down job offers from Google, Apple, and Facebook. For about double what he is currently making. If the market was allowed to set the salaries of people like him, there would be a lot less incentive for companies to try to abuse the H1B program.

So there is my opinion. For a number of reasons, outsourcing projects to India frequently leads to disaster. The ones you get as H1B workers tend to be excellent, but that program is heavily abused in ways that make me sad.

share
2  
@developer-art: I don't know the details. But the particular person I am thinking of was in the process of getting a green card, and was stuck in his current job until the paperwork cleared. In his case the paperwork has left him in limbo for over a year and a half that I know of. I've known other excellent people who have run into INS trouble and have been forced to leave. For instance Abigail of Perl fame encountered this in the late 90s. –  btilly Feb 23 '11 at 16:30
2  
@dev-art: Your H1b is tied to you being employed. You could I think switch jobs, but if there's no seamless transition your work permit automatically expires. And of course if your new job doesn't work out and you get cancelled during the probation period, you're an instant illegal alien with just a few days' grace period to find a job or leave the country. –  jwenting Feb 24 '11 at 7:54
3  
The way some corporations use H1Bs to basically keep programmers on a leash makes me sad as well. I know many people who are in this situation. When you're on an H1B, you can only get one extension (for a total of 7 years, I think), so most H1B workers are trying to get a green card. Many companies won't even start that process (which takes years itself) until years after hire. Add to that the fact that if an H1B wants to switch jobs, the new company has to re-sponsor him and may delay the green card application further, H1B workers have a lot of incentive to stay put, which gets exploited. –  Kaypro II Feb 25 '11 at 15:53

My anecdote:

A few years ago I worked on a project with a team from India. I found them extremely pleasant to work with. They really knew their stuff. Our only friction point was response time to last-minute changes from the client; although to be fair, management ego doesn't always translate well across language and distance.

share

I'm from Switzerland. I've worked on one project where we outsourced to Ukraine. Developers where much cheaper, but the money we saved had to be re-invested in flying our team to Ukraine every other month to oversee this nearshore team. The project died about one year after it was outsourced.

I am now working on a project which is outsourced to a Swiss company, which itself nearshored it to Morocco. The project is well on its way, but we do have communication problems and quality problems.

I think the main problem is that we offshore project to get them built cheaper. It's always hard to get things cheaper but of the same quality ...

share

I've worked with great offshore programmers, but they were not outrageously cheap to hire. I've also worked with very inexpensive offshore programmers, and they were not great.

It's always seemed to me that great programmers in the east probably find a way to get paid as much or almost as much as the great programmers in the west; maybe they launch their own company, maybe they get a visa, whatever they can. But they'd tend to find a way, right?

When seeking out a team of programmers willing to work extremely cheaply, I wouldn't expect to get top-tier talent. True no matter where your talent lives.

share

In my 10 years at IBM I worked with programmers all over the world in a variety of relationships. The first thing you learn is that the geographic stereotypes are all wrong, on both sides of the ocean. Programmers are programmers the world over... pick 100 of them from anywhere and you will get roughly the same ratio of folks that couldn't program hello world without a trip or three to google, folks that are decently competent and folks that are brilliant.

That said, the geographic generalizations of the business climate in some of those areas is accurate. India for example is a lot like Austin, TX or the Silly Con Valley were in the late 90s and early part of the 2000s... lots of job hopping and revolving doors, folks coming and going every year or so. China on the other hand seems to be a lot more like the Silicon Prairie here in the midwest of the USA, folks pick a company and stay there for a longer period of time. Brazil, Russia and Europe seemed to be somewhere in the middle, not so much that they stay a medium length of time, but that they seem to have a mix of the two, some folks job hopping, some folks settling in.

share

My experience: I'm born and educated near NYC, and have been working with engineers/developers in China and India for over ten years, as well as with teams in Europe. And many of my co-workers are immigrants from China and India.

Generally speaking, I observe that the employees in China and India serve two primary purposes: as low cost centers and as access to the local market. In particular, China is one of our largest markets and where our largest customers outside of USA are; there is a need for local work to deal with customers for customize and test.

My employers also have R&D in India and China, but that's a bit beyond the scope of this discussion.

Generally speaking, "east" is younger and have much higher rates of employee turnover. They're also getting higher pay raises from a much lower base, and I've seen their improving standard of living over the years. Many of them now own motor vehicles (a scooter or a car) and have broadband internet access.

Part of our cultural sensitivity training was how different cultures deal with conflict, hierarchy and authority, and there is a grain of truth in that. Especially in the approaches to authority...

share

Disclaimer: I am Indian and this may sound an Indian's view but I have worked with many western customers and even in US. If eastern hemisphere had the worst programmers in the world, why would western hemisphere outsource to east? If you outsource to eastern parts of the globe just to save bucks you are, IMO, compromising quality. Good, fast and cheap, choose any two. When I have to hire a guy I ask my organisation what are their expectations and what are the price they are ready to pay. Its really hard for one to convince a talented self esteemed guy to work for you for lesser pay and more pressure. Its just those freelancing sites combined with unfortunate western guys whose jobs were Bangalore-d that resulted in eastern programmers are code monkeys. If you are ready to pay better price you will be assured of a better result, and do not follow those ISO/CMMI/SEI kind of service companies. They hire talents like they are rearing a herd of sheep or live stock.

share
3  
"If you outsource to eastern parts of the globe just to save bucks you are, IMO, compromising quality. Good, fast and cheap, choose any two." Often those making the outsourcing decision don't know or care about quality, as long as they get something that works for a while cheaply... –  jwenting Feb 24 '11 at 7:30
1  
I understand. And those who make decisions are managers, if a manager doesn't know or understand the project triangle, he/she is incompetent. Ideally their incompetency must not result in a stereotype but NTP(en.wikipedia.org/wiki/Normal_temperature_and_pressure) conditions only exist in labs not in real world. –  Kumar Feb 25 '11 at 4:03
2  
"Why would western hemisphere outsource to east?" - Because the people who make the decisions aren't really in the best position to make good ones. We're talking about executive-level managers with executive-summary levels of understanding, preoccupations with budgets and money, and a short term time-horizons. –  Kaypro II Feb 26 '11 at 0:26

Some of the largest IT companies in the world are in India, if you heard of Wipro, Infosys, TCS etc. The largest Indian companies, whom most "western software professionals" could never afford to offshore would easily qualify as the world's best in quality. They get every certificate under the sun regarding quality just to allay the fears of western clients. Also there are more engineers(degree and experience) in most Indian software companies than most western companies. Also Google, Oracle, IBM, Microsoft, SAP all have development centers and not all of them are there looking for cheap programmers.

So how do we see the western engineers. We see a mixed bag like you see a mixed bag when you look over the ocean. There are qualified super technical people whom we admire and there are douche bags whom we might be forced to work with sometimes. By and large we get along really well in mixed teams. The relationship really sucks if you have "technically oriented" business people in the western end and just programmers at the other end. This is usually a cash starved western company looking to make save some dollars by not hiring a local manager.

share

I am a 21 year old undergraduate from India in my final years of Computer Science and Engineering 4 year degree course.

The very idea of writing this was to say that India is much more than an outsourcing hub. I hope the west sees it that way and instead of absorbing talent, the west should set up more hubs in India. There is some offensive content ahead, but if you understand the larger picture, you will understand what I am trying to say.

Education in India is in a very disturbing state with a workforce produced every year that has no or absolutely horrendous technical skills. The educational system is not at all competitive in terms of innovation or entrepreneurship. this has led our country to huge embarrassments like the recent indigenously developed $10 computer (which turned out to be a cheap Chinese Android based tablet, only maintained by an Indian company), or an earlier claim of another technological breakthrough (which turned out to be a thumb-drive). Education institutes are totally disconnected from the real world of technology and are more interested in students reinventing the wheel, all in the name of innovation. educational institutes, everyone hates them.

Coming to places where you at least expect to learn some hot development skills:

I have had exposure to a few training facilities in India apart from my educational institutes. Programming and software development happen at two levels, application level development and system level development.

For application development, most freshers in India are mass recruited by companies to claim a sitting bench of programmers and to get more projects. At the end of the day, there is compromised quality because the hiring process is utterly stupid.Sometimes, talent is wasted by making people good at their stuff work, on stupid things like creating Java frames and creating simple WinForm and ASP.NET UIs only (I am talking about fresher recruitments and as claimed by some, though I am not sure). If not considering good software engineering practices, that kind of coding can be done by a 7th grader.

But at the same time, there are independent programmers and developers who have a keen interest in things. They are like the unsung heroes who have lost all hope and are least interested in changing the world. All they want, is to make the most out of their skills, so it is all about the money and going abroad. While our courses are hugely limited to system software (C programming using TurboC!!! for 4 frigging years, stupid and vague C++ without proper object oriented concepts using cout in a C program is not C++ , ASM and more C programing using gcc), when in a company, we are mostly made to do application development (ASP.NET, WinForms, J2EE). Basically, a Computer Science engineer is made to do the job of a Software engineer. Yes, knowing computer science helps, but not knowing proper software engineering hampers the process too much, and there comes plummeting the whole system. It is a #fail.

I will cite a simple example. I joined a training institute for my final year project and they wanted me to create an ASP.NET website which would be something of an inventory system (hotel booking, CRM that kind of stuff). Yes it is not an easy task, but not worth working on a project in my opinion. It will just be reinventing the wheel and these projects are huge by nature in a real life. Delivered in 6 months by a group of 3, you can understand the kind of scaled-down unusable system that will result from this. The institutes do not stress too deep and they are more interested in "not scaring the student telling them too much" and "giving an overview, and letting them learn the rest on their own". At the end, what people develop in projects is not even a fully tested prototype, let alone put it up for real life usage.

I took my own topic, a voice guided real-time navigation system. I am using WPF, Google maps API and all the latest in tech that I can. For good Software engineering practice, I am using source control, using MVVM and will give a thorough look at anything else that I come to know of. I am 21 years of age and am a graduate. I guess at my age, people in west are still in the learning phase and become graduates at a later age. That makes western graduates so much better and more knowledgeable. We have quantity but no quality.

In India, the level of work I am doing for my project is generally not expected of a final year undergraduate project. But, I will do it because I want to. At the same time, there are others in my group who are comfortable doing a project in ASP.NET, make 5-7 pages, run database queries, fill up grid-views and not give a damn about security. Hell, even those freelancing websites have better job postings (YouTube clone, Google instant + X = Y Mashup..)

Six months down the line, you will find the same people working in a company that you outsource your business to and you will find me there too. People like them, outnumber people like me ten to 1 :(

to be exact and not ranting, in my whole educational career and acquaintance with over ~500 people, I have seen exactly 4 who had the level of expertise that I would consider them for working on a project with me)

Ultimately, all Indian graduates will write good documentation because it is theory, but do not expect any fool-proof code from them.

Coming to system software, the same is the case. A friend of mine is working with the Android NDK and is working on a live project at a company. He is fortunate to have got this project and I envy him, but this level of work happens in India too. Another senior at my college developed a kinect clone (multi-touch mouse, like in minority reports) in his final year project using just 2 cheap webcams. Equally, there are others who copy codes from the Internet and somehow get a degree reinventing the wheel.

My final word, do not expect a compromised quality all over India, and do not take Indians for granted as cheap software maintainers and suitable for outsourcing only maintenance job.

Also, do not expect that someone who has a good educational background in terms of marks to write good software. India's education system is all theory oriented, there is no stress on practical, sometimes, knowing more or the willingness to know more can land you in trouble from teachers who feel intimidated. Nevertheless, good programmers look for greener pastures in a better career and not just a good job though, there are others who want to land up a good "job", drive around a Honda City, eat out at Mainland China and live happily ever after.

I am more into Audi btw. :)

share

Outsourcing just has one purpose: low cost.

Outsourcing is very popular in this industry, even in a large international company, they also use outsourcing inside. West department may use outsourcing to its east department.

I think the major advantages of west are in design and business area. In most cases, west department designs in architect level even provides some base code or libraries. And west department knows business in depth. After evaluation, the base design and business analysis will be transferred to east department.

In my personal experience, west departments are more mature in industry, while east department are progressing quicker.

With development in east, outsource is moving to cost lower countries. Meanwhile, outsourcing is low profit relatively, east companies will build their abilities in own design and business by learning from west during outsourcing stage.

share

Disclaimer: I do not have any direct experience with outsourcing myself. Below, I present some points that came up when I discussed the topic with a project manager in a large western software company. This guy has spent a lot of time on the ground in India, overseeing outsourced teams.

  • Almost no-one has a computer in their house (too expensive).
  • India's IT education is lacking. Bachelor's degrees in CS are given to students who has never touched a computer (again, it is too expensive to give lower-level students access to computers). Programming assignments are written on paper.
  • The "always say yes" mentality is very damaging
  • Indian programmers need to be told exactly what to do. There is very little initiative.
  • Outsourcing software development to India has been a disaster
  • Outsourcing of some QA tasks has worked OK.
  • Misc.:
    • Electricity is very irregular
    • India is more or less a police state
    • India seems to be politically unstable and has a terrorism problem.
    • Given an option, no-one will choose to live in India.
share

I have been living in China for little more than two years now (I'm Canadian) and working with Chinese developers and, strangely enough, working with Canadian Developers overseas. I can say that some of the generalizations made of, at least Chinese, developers are somewhat true that is, most developers I have met/worked with here are :

  • Lack curiosity and creativity. Here I do not think they are inferior or stupid. But rather that it is cultural. Historically they are thought to respect authority first and foremost. As such they will never question a bad design handed to them from "above". Also many of them are mostly interested in technical skills rather than domain skills. I have the hardest time teaching them about patterns and abstract concepts unless they can directly relate to their work at hand. However, after a while, the walls crumble, they get more adventurous in challenging authority, at lest on a technical level, I would not want to get my visa revoked ;-)
  • A threat This has been mentioned before but I emphasise. This is probably the single most important point and what creates the most tensions in dealings with colleges overseas (that is in Canada). In general, the westerners I work with will tend to exaggerate all the negative aspects of working with Easterners. They will be extremely harsh on code reviews while being very lenient to each-other. They will kick and scream if a single oversight on process or good practices is overlooked by an easterner but will themselves kick and scream if asked politely to follow the procedures they themselves put in place.
  • Expendable it is ok for a Chinese to work with half baked second hand equipment. I broke three chairs before I was allowed to get a semi-comfortable one. Then I felt bad to get the good chair noticing that they all still had what seemed like medieval torture apparatus to sit on. However visiting the head-office of the same company the devs there had desks that took the floor area typically occupied by a team of 4 to 6 devs here in China, not to mention the chairs !

In the beginning what they wrote was not always very good. There is the cultural divide for sure but also the long steep learning curve of a badly designed system to begin with. But you know what... after two years... some of the best work done on this system comes from the chinese offices. As this comes more and more visible this exacerbate the threat element even more...

Frankly it's not easy but I think I am on the right side of the fence when looking at the trend from personal experience.

share
4  
"They will be extremely harsh on code reviews while being very lenient to each-other" & "but will themselves kick and scream if asked politely to follow the procedures they themselves put in place" - It is true as per my experience too. I have seen this happening on many occasions. –  Mugen Aug 18 '11 at 10:13

I am an American currently living abroad (in Russia) and working as an entrepreneur (and freelancer on the side to pay the bills). I worked in Silicon Valley as a developer, technical team lead, and software/systems architect for over 20 years for numerous companies and startups, some very well known, including one startup which eventually grew to be an industry-dominating multi-billion dollar major international corporation. This last corporation (call it "X") has development centers all across the US and the world: India, Russia, China, Europe, etc. I worked directly with members of some of these teams, and found them to be highly talented and worthy engineers. Assertiveness and creativity I will agree tend to be a more American engineer personality type at the moment, but that will not last for long I believe as freelancing and outsourcing mature.

  • Outsourcing is very clearly about the money. When I left the US, X was not hiring in the US, but was hiring in international offices. X pays non-US engineers about 1/4 to 1/3 (depends on the region) of the salary of an equivalent (years experience, skills) US engineer. Which is still a pretty good salary usually considering the economies of some non-US locations, but this is not good for the pay rate the very existence of US engineering positions.

  • I believe freelancing is the future of computer work, software especially. By its very nature it is highly portable, all you need is a laptop and an internet connection and you're in business. There is always a case to be made for internal on-site teams: more reliable scheduling, predictable skill sets, etc, but they are very expensive to maintain.

  • I see rather frequent, arrogant postings here from US engineers about how terrible all non-US developers are (take a look at, for example, this thread: http://stackoverflow.com/questions/209170/how-much-does-it-cost-to-develop-an-iphone-application). The stereotype is that yes, they're cheap but always also un(der)-qualified and write crappy code. That the only way to get quality is to pay US pay rates to US engineers. Poppycock! US engineers need to wake up -- the industry and the economy is moving away from very highly paid in-house developers to distributed development teams spread around the world. Sure there are bad non-US developers -- but just think back to all those US interviewees who you passed on because they didn't measure up. Some of the absolutely most atrocious code I've ever had to look at or work on was written by an in-house US engineer, who refused to change or improve! Just because some random elance developer did a crappy job doesn't mean that all non-US engineers are terrible. Instead, that elance client should look a bit beyond the bottom bidders, there are real gems out there, top developers even, available at a big discount to in-house US rates. At this particular instant in time, I will grant you, a lot of talent is concentrated in the US -- but anyone who thinks this will never change is very seriously deluded.

  • Talent and experience do cost more than the lack thereof, I will grant you that. But the thing is that the pay scale of US in-house employees is way out of whack with that of the rest of the world. There is a dynamic talent/cost continuum constantly on the move, and the background ambient talent of non-US engineers is only going to go up, which is going to place very strong downward pressure on both US pay rates and the very existence of highly paid US in-house engineering positions (remember: X is hiring internationally, but not in the US. The writing is on the wall). So the more talented will always be able to charge more than the less talented, but you can be sure it won't be at the current going US rates.

  • The concentration of talent around the world is absolutely going to change, just as the physical location of development teams has already changed. Non-US talent levels are going to keep going up, and in the not-too-distant future we'll look back at these threads and think "what were they talking about, you can find top talent anywhere in the world".

share

I have worked both in the eastern and western part of the globe and thought would share. I had worked in Bangalore for 5 years before moving to US. Worked in the US for about 8 years and returned back to India. I was forced to sit at home because the jobs are too demanding here. With 2 young kids it was impossible to put in those long hours. Finally found a part-time job. I was shocked to see the quality of work back in India. It wasn't this bad when we had left to US. The young crowd just does not seem to have any responsibility or the enthusiasm to learn new technologies. Like somebody pointed out, saying 'no' is rare (a blow to their ego, IMO) and as a result you will see totally useless or mediocre work. The code is non-readable, no idea of the big picture at all, no scope for expansion, etc. By the time you train a guy (s)he is ready to jump jobs for a greener pasture. Having said that, I would still say there are few exceptionally good ones. If you happen to work with him/her, consider yourself lucky, especially if that person can communicate well!

share

In one of my previous jobs I worked on a project which had development split between Ireland, the USA and India. Some awkward aspects of the project couldn't be helped e.g. the time difference but the fact that often the Indians had pretty poor written English meant that things like defect reports could take a lot of time to decipher. Atfter a while I found it easier to pick up the phone and call the person directly where possible. It's a lot easier to clarify what someone means if you can talk to them rather than sending e-mail after e-mail.

While outsourcing is fundamentally about reducing costs, there are talented developers all over the world. The difficult part is being able to distinguish them from the not so talented!

share

This is a fascinating topic. I've worked in SF and Silicon Valley, but also Europe for local clients, setup an offshore office in India and now run an offshore development shop in South America. I've even done a little bit of work with African developers.

Every region of the world is capable of producing great programmers. I've got a hacker friend in Malawi who's build amazing touch interface rails backed open source systems for HIV clinics, using and contributing to open source projects in important ways.

I've also seen American programmers working at name brand startups and major web companies who couldn't program their way out of a paper bag. People with masters degree's in Comp Sci from MIT and years of industry experience, who when it came to writing good production code, couldn't cut it.

There are very real cultural differences between Europe, Latin America, the US, and India. Then there is hacker culture, which is more or less universal.

The mainstream indian tech community likes to throw people at the problem. The hourly rate per developer might be less, but if the vendor believes in quantity over quality, you'll need twice as many dev's to get the code running.

Certifications. What the hell? India loves certifications, ISO, CMMI, etc... it goes on and on. It's meaningless ass covering. More to the point, it's not how you get good software developed.

The caste system. The caste system is illegal in india, and since independence there's been tremendous work at eliminating it, but it's still a living breathing beast. Most westerners ignore the existence of the caste system. I grew up in the US, but my father was born in India, anglo-indian as it's called, and my mother went to university there as a student, and then returned to teach much later at Indian universities. The caste system is very real, it comes from india and is old, but the british encouraged it and used it to maintain power. Westerners need to know, that they'll take the place of the british, at the top of the hierarchy. You'll get called sir, you'll not be questioned. Most indian managers see their role as telling their underlings what to do. Speaking back and offering alternatives is punished.

Not every indian development shop is like this, Zoho, has built an amazing indian business by breaking all the rules. They hire based on ability not caste or what university certification you've got. By doing so, they've bootstrapped a complete SaaS replacement to the MS Office Suite.

There's a vibrant hacker community in India as well with meetups, mailing lists, small conferences, and the like. These developers are world class good. They often find it hard to get work within the mainstream indian software development industry. I myself found two python dev's for our indian office, they were great, and then our indian manager insisted on hiring a dozen freshers, new graduates to fill out the team. After a few months the hackers quit, their manager had made their lives hell. We were left with a dozen young and enthusiastic employees, most of whom didn't know how to program very well.

The best of the freshers was a young woman who'd built an IDE for dev on embedded systems. Nobody wanted to hire her because she came from a conservative family and Indians thought she'd be forced to quit her job once she was married off.

There are great dev's in india, but the value structure is setup to push them out, and to promote people based on things that have nothing to do with creating great code.

The other big problem is the timezones. It's not an advantage, it's a huge problem. It means there is no constant direct communication between on site and offshore teams. This causes huge misunderstandings, and forces you to write reams of documentation. It makes agile very hard to pull off.

The sad truth is a huge amount of the software produced by indian corporations is low quality. You hear dev's all the time talk about how indian engineers are crap, it's not true, but it's a reflection of the quality of large traditional offshore companies. It's the fault of the business culture in India, not the developers themselves. The dev's are stuck in a bad system which rewards the wrong things.

share
1  
But these folks who can't program, wouldn't get hired if there wasn't a management problem. The Indian companies would just say, look, we're booked, next client comes in at a higher rate. It's one of those, refuse to say no things. Management says yes, and puts a warm body down to code who has no enate ability to code. –  rabble Feb 25 '11 at 15:55
1  
+1. Interesting post. I find your statement that real hackers are marginalized and can find it difficult to get work in India depressing but horribly plausible, sadly. –  Faheem Mitha Feb 27 '11 at 21:24

Not the answer you're looking for? Browse other questions tagged or ask your own question.