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? 

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.
