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
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
show 9 more comments

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.

45 Answers

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
show 28 more comments

Personally, I think everyone is different. I've seen some as good, some as bad.

I think there is a negative perception, because most westerners are dealing with consultants and consultants tend to do the least possible and look for ways to blame others for what they did wrong.

Another thing to keep in mind, many American programmers are immigrants from India. I don't have the statistics, but I would guess about half of them.

share
add comment

I'm pretty sure the percentage of good developpers is the same in eastern part of the world than everywhere else. This implies that there are a few good developpers in eastern part of the world, like everywhere else.

The problem comes from the fact that "selling software" is the easiest way to make money, so a lot of people pretend they know how to develop because they have written 3 lines of Php code, and try to sell sofware (= outsourcing).

So, it's juste simple maths: there are a lot of so-called software companies, but there are a few real good developpers in eastern part of the world, like everywhere else. To understand, let use numbers, even though they're not real:

  • 100 software companies in western part of the world. 50 of them are good.
  • 10000 software companies in eastern part of the world. 50 of them are good.

So... the chances you get a bad software company are much higher in eastern part of the world than everywhere else. But the important fact is that there are as many good developpers in western part than in eastern part.

To add to the top of that, there's a mentality problem which makes things worse.

And to conclude to what's happening in France: there have been thousands of project that have been outsourced, with catastrophic results, and a lot of them were big projects (big projects outsourcing was like great savings). So now, real geeks and man like me, who are real developpers (real developper = not attracted by money first) have a lot of work in France, because I have do dig in everything that has been done, give "expert conclusion" and the company acts upon. I'm very well paid, so all in one, it's not such a bad thing ;)

Please don't hesitate to correct my post, to make it proper English, because my English is perfectible.

share
add comment

Firstly western programmer tent to only every deal with India programmers that have written code as part of an “out sourcing” agreement. I expect the best India programmers are writing code for India companies, or are directly employed by large western companies like Microsoft.

I think it would be far to say, whenever I have had to “fix” such code. (From some reason the weston programmers are expected to sort out the mess a few week before the project is meant to ship. Maybe if the code is not a mess, a weston programmer will never have to look at it.)

  • The India programmers did not “get” the vision of what they were meant to be doing.
  • They saw things like “Unit Testing” as “tick box” item and therefore just wrote enough test methods with no thought about what they were testing.
  • The India programmers claimed to understand what was needed and to be able to do it, regardless of the truth.
  • The India programmers never questioned way they were asked to implement a given requirement and therefore never questioned specs that a Western programmer would have questioned and got fixed before writing “correct code to do the wrong thing”.
  • They worked hard and long hours, but did not produce a solution that work, just something that maybe kept to their reading of the spec.
  • It is not allowed in the UK to say you can’t work with an India when you are unable to understand what is said in phone meetings etc., therefore you can’t tell anyone that the project is going wrong. (The time zone problems in themselves are enough to get most UK programmer to recent having to work on a project with India programmers)
  • There is also a lot of resentment when Western programmers have to spend time “baby sitting” India programmers rather than writing code themselves, unlike trainee programmers in the UK, you know that the next month you will just have to repeat it again with a different set of India programmers.

More I think about this, I think the issues are as much about a software companies thinking they can save money by outsourcing coding to programmers that have no understanding of (or real interest in) the problem domain. (Understanding how the West works is part of the problem domain).

(The false belief that a “sales” person can bypass the in house development department, write a spec themselves and then get some cheap India programmers to write the code, is still very common.)

I have had better experience with Eastern Europeans programmer, as they see to understand the West better, are in a better time zone. It is also possible for someone to jump on an aircraft with a reasonable length flight (and little jet lag) for regulation face to face meetings.

share
add comment

I would say that it is the same as with programmers from anywhere, sometimes a programmer is good, sometimes he is bad.

I have worked on multiple teams with programmers from the "Eastern" world (including Europe...which IS East of me. Some of them were bad, some were good.
I once worked with an Indian man who was the fastest, most skillful programmer I have ever worked with. He very rarely had a bug and his code was always neat and clean and done before it was expected including testing.
On the other hand, I worked with an Indian man who spent 9 months at his desk on his cell phone laughing and talking. The managers weren't sure what to do with him though because his work always got done. It wasn't always the best work but it got done. 9 months later they discovered that he had spent his entire employment there sending the work to his friends and family in India without telling anyone. He had turned himself into the manager of an outsourced development team by his own choice.

Humans are humans. Some of them suck, some of them don't.

share
show 1 more comment

The worst mistake I made is outsourcing to India. It was only for basic HTML, and the programmers were more than capable of programming PHP and SQL (at least they thought so anyway). We outsourced them to create a few forms for us, and what they came out with is hundreds of tables inside each other. Not only that, but the lead project manager took a three week holiday without even communicating with us.

From what I've seen of the East, I don't believe that the East deserves the attention of the West. Again, I have nothing against Indian people, they are amazing, but the Indians that I have experienced have a horrible work ethic.

My advice: You'd be crazy to outsource to India.

share
add comment

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
show 1 more comment

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
show 3 more comments

Interesting! I'm Chinese and I think I know why programmers here lack curiosity and creativity. Most of my coworkers complain everyday, they hate coding, they dislike designing, they just gossip here and there(it is part of our culture). They come to software companies just for a higher pay(in developing countires, IT guys are well paid), not for "saving the world" or making a difference. No interests, no motivation, no curiosity and no creativity!!!! But there are smart heads(like me ^_^), they do quality works and deliver on time!!!!

share
add comment

I have had mixed experiences with offshoring our work, and just working with offshore companies in general. For reference, I live in the United States.


The Bad

I worked at a company that contracted a company in India, which had been appraised CMMI 5 and would work on the cheap. The company gave them some client software to write from scratch, and when it came back, the code was buggy, completely undocumented, and generally difficult to refactor and maintain. The company ended up just writing the entire client from scratch and ate the cost of the offshoring.

In another instance, a company I worked at partnered with a company in Asia to introduce their services and products into the eastern markets. What happened was a secret story that only a few people knew (and myself by proxy) where the Asian company took our source code and product designs, broke the partnership, and then released their own products that were the same as my company's.


The Average-ish

In yet another instance, a company I worked at opened up a research office in China, very modern place, they had fancier stuff in their office than I did in mine. I was sent over to the China office for a week for training, as the R&D facility was going to be used for doing custom Linux development. The team did have some people who were pretty good, but as is the case with developers of that stature, they left pretty soon afterward, and the remaining team wrote an API for us to use back here in the States. I'll call the API completely bad because it showed no understanding of Linux, and the underlying source code was pretty wonky at best. But I think the big problem there was the company chose a strange team to give the Linux work too, as no one on that team was a Linux expert at all, and that project was scrapped a year later. I actually liked working with the people from that team, but their management and my team argued a lot over the Linux debacle.


The Good

In other instances, another company I was in contracted work to a company in Eastern Europe. Those guys were really good, they were contracted to do vulnerability testing and while they were actually pretty expensive, they were generally seen as a worthy investment.

I've also worked with a rather gigantic Indian IT services company, and we had developers in-house that were employed by them but contracted to us. There were several good devs there, but that's a more general story as we all worked together on various projects.


These stories are for amusement - I've worked with multiple companies, and I have stories about domestics and foreign companies.

For some of the companies - communication was always the difficult part. I work on Eastern time, and we'd be talking with people 10 - 13 hours ahead of us. We'd also go only through management, not talking to actual developers, so there was a disconnect there.

There were also devs I met who just didn't enjoy their job. We had a Korean dev in, who wanted to come to the states to work because he worked slavish hours for low pay for a defense company in Korea. I was coworkers with a dev (also foreign) who lamented his choices in becoming a developer - he did it to try to make millions.

share
show 1 more comment

I'm a ASP.NET/C# programmer from China. I totally agree with Péter Török. We've just taken over a project which is developed by Philipen for several years. The code is the most disgusting I've ever seen. Every single class at least has 3000 lines. They are such code wasters 'cause the code are really prolixity. they've no idea what reuse is. And they don't do unit test. The whole system is on the edge of crash.

Currently we're trying to fix the bug for the huge project. The work is really like a nightmare.

share
add comment

There are millions of programmers in India, so this answer has to be a generalization. I think the answer has changed dramatically over time. You go back a decade ago (particularly before the .com bust), and the experience was that you'd be hard pressed to find better junior and mid-level developers than by outsourcing to India. They were intelligent, skilled, generally had strong communication skills, but most importantly they were very eager to show what they could do. Senior talent was also in India, but just like in the West it was hard to get to it by outsourcing unless you contracted directly with the developer.

Now though, I think the pendulum has swung pretty far over to the other side. The demand for skilled programmers in India is so huge that the talent pool has been spread ridiculously thin. I wouldn't touch an Indian outsourcing company unless I had a strong relationship with them and knew I could count on getting quality. If you want good programmers in India, you don't outsource. You need to set up shop in India and start screening and hiring people. You can still find great talent (there is actually more of it that stays in India than in days of yore), but to me the notion that you can get that talent at a significant discount is a nostalgic fantasy. It turns out good programmers are hard to find everywhere and they therefore can charge a premium for their services... everywhere. Now I look at India as a place to find more great talent, rather than as a place to get any kind of a bargain.

share
show 1 more comment

@giddy, Peter: As a programmer hailing from India, I'll have to admit to the truth, sad as it is, of your statements: programming in India is not something people take to out of choice, but out of compulsions, be they social or economic. That's one reason why it's very common in India to find people quickly moving away from technical jobs to purely managerial ones (it's actually called "moving up the ladder", a phrase I've come to detest). Even if you want to continue growing as a techie, managerial roles get foisted on you (that's one reason why I decided to move out of India, actually).

For reasons that are beyond me, career growth is equated with the number of people working for, or to be more accurate, under you. "I am responsible for a team of x" or "x people work under me" is a statement that's considered to be worthy of a "successful" person in India (never mind that the "x people" may be the ones producing the kind of code that has been referred to by others in this thread).

Having said all that, I do like to point out that poor code quality is not something that's confined to India or other "low-cost" countries alone. I sometimes see familiar attitudes and code quality even here in Europe. Thankfully, they're not the general rule though.

share
add comment

Well, being from the US and having experience working with a few firms in India, I would say it is difficult but getting better. I feel that they are technically able to do what you ask but you really have to outline everything in detail or it will be a very long and messy project. This is not because Indians do not understand what you want, but that they think differently, at least from a usability aspect on your project.

I will just give a quick for example. We had a project were an Indian firm was building our user interface and some of the database connections. When the project was almost finished we took a look at it, and at first look it was perfect. Then when we started to run through the program we realized something was wrong. When we went to add something, and you were on the page, for some reason you would have to hit the Add button even though you were already there, and then type in the information and then the submit button.

This seemed counter-intuitive to us as we figured we were already on the page and didn't need to press the Add button and would fill out the information and then select the submit button and nothing would happen. They designed what we asked but it functionally didn't make any sense to us at all here in the west so we ended up re-designing the whole back end.

I find that working with other countries, though lower in cost, seems to take longer and may actually cost more in the long run if you are dealing with time sensitivity against your competitors. On that project our competitors ended up a few years ahead of us due to the difficulties we had. Now I know this was all due to communication breakdowns and understanding and I feel you have to have someone that is good at explaining the process and can speak technically with both groups on the same level to make things run smoother.

share
add comment

Note: This is a highly subjective view and hast most likely nothing to do with reality

US Programmers - nothing great, average guys, many hipster fags

European Programmers - are there any?

Eastern Europeans + Russians - mostly geniuses who would write evil viruses/bots for a glass of vodka

Indians - mostly javabots in bangalore who do it only for the money

Chinese - the next javabots

share
add comment

I worked for a company like London that had a contract with an Indian recruitment scheme, they were paid well, but, about 2/3 of what most of the consultants were earning, from what I was told they had to employ a certain amount and the CFO seen it as valuable for money. They all had master degrees etc.. more than most contractors. The result? Utter mess! ASCII art competition in headers of c# files, disregard for naming conventions, massive lumps of nested ifs, it was horrid, no idea about OOP, dont even start on SOLID or TDD. Worse they kept churning this crap out.

Me and some others that took some pride in our work, would sit there cursing it in frustration, they had been approached by some others but didnt take it well, in the end management got itchy feet and took us aside incase it was seen as racism (go figure).

Prior to that I had a gig at a price comparison website, they outsourced to Vashai in Mumbai, I went to teach (good two weeks). Again nice people, but all bar one were worth the 1/3 of graduate salary they were supposedly earning, again all with Masters degree. They just couldn't get it.

Just my experience.

share
add comment

My experience with outsourcing to eastern countries (not eastern europe) has been pretty bad. All of the applications I've seen have been horrendous and just look like a bunch of bad unrelated code glued together to barely do the job it's supposed to do.

I don't think this is due to new eastern programmers being any worse than new western programmers, I think it's due to the eastern programmers not having experienced programmers to guide them. In the western world, working with modern programming languages has been a common profession for ~45 years so there are many experienced programmers that new ones will work with who you can learn from. In the east modern programming has been happening for what? 10 - 15 years? There's a real lack of experience for people to learn from. On top of that, I think (the way I see it from here is) that with most of the programmers in the east who work is being outsourced to, they pick up a lot of bad traits where the goal is just to get the project done quickly by cutting corners, which is experience you should not be passing on to new developers. In the US at least, most programming jobs have been for people working on a limited set of products which they have to support over time. So people have picked up techniques to ensure that the software is stable and secure... this is good experience to pass on to the new generation.

So yeah, basically I don't see it as having anything to do with the amount of schooling a person anywhere gets, it has to do with habits picked up on the job. There are plenty of good programmers out there (though i think they are well in minority) but I don't think they're the ones us westerners will interact with when projects get outsourced.

As for eastern europeans, they have the experienced developers out there. I'm just afraid that they may be phased out to meet the demands of outsourcing.

share
add comment

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
add comment

I have worked in a large multinational company that had set up a dedicated Indian office. They additionally used Indian consultants from a separate company. The Indian office had better paid staff who had relocated back from the US. I always found the work from the Indian office to be of a very high quality. The lower paid consultants were mostly used for testing and any development work they did was generally poor.

Although I agree with many of the cultural observations in the other posts I think economics is a factor in determining quality. There are very few good engineers globally. A small fraction of the available labor pool. I define a good engineer as someone who is inquisitive, knowledgeable and has had a good education to build on these skills. As the the demand outstrips supply they are recruited globally. There is a small number of incredible engineers in India. Most of these are graduates from the top tier of Indian universities (such as IIT). Likewise there are a very small number of talented native western engineers.

Inversely there are a very high number poor and average engineers. I remember in the dot com boom that companies were hiring western history graduates, who could barely spit out some HTML, because they were so desperate for staff. Now a poor engineer in the west would not get a job. You can now hire the equivalent in India for a fraction of the price. Therefore you get a concentration of very poor staff at Indian consultancies.

Occasionally I would encounter a few gems in the consultancies. They were naturally bright and would ask lots of questions. Usually they were making up for bad training. What is sad is that they would not get any support from their employers. A lot of consultancy policies are designed to limit the skills that a consultant can pick up, such enforced six month rotation period between contracts.

share
show 1 more comment

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
show 2 more comments

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
add comment

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
add comment

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
show 2 more comments

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
show 2 more comments

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
show 2 more comments

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
add comment

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
add comment

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
add comment

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
show 4 more comments

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
show 2 more comments

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