Saturday, June 13, 2009

Tips for effective offshore software development

A decade of experience while working with distributed development environment has taught me some lessons and techniques to effectively work in this mode. In the following paragraphs, I have shared my observations and also, way to tackle common issues in distributed environment.

It is very important for onsite teams(read it as non-Indian outsourcing partner) to understand the culture of offshore teams (read it mostly as Indian teams). Specifically the cultures are extremely different in countries like India, china, Brazil, Manila as compared to the cultures in US, UK, or any other European countries.

Many a times the business people from onsite companies visit offshore, finalize the software vendor, sign the contract and return back. By this time, they would have already signalled setting up onsite and offshore software development teams. The onsite/offshore development teams start working on the software project even before they can properly spell each others names .

I have also observed the following differences in the way of working between onsite and offshore teams

Saying "No" : Offshore teams don't say "no" easily. They won't come up with issues easily as they don't want to hurt the other person. This is more of a cultural issues I think. I have come across many instances where offshore developers were fine getting the blame for not doing something even though the onsite teams have not provided them the sufficient information to proceed. Many a times in small and medium sized firms vendors give more than necessary due importance to the customers to keep them happy and are never blamed. This in turn adds significant fuel to fire in ensuring that the offshore developers keep quiet and nod their heads.

It is necessary for offshore teams to stand up and say "no" when necessary and at the same time , the onsite team leads should keep a tab on "bullying" developers.

Networking & Socializing : Many offshore developers when they come to work tend to socialize and would like to get the work done more informally rather than through formal means. Interestingly western culture is different. Since I used to live abroad, I have observed that the western developers don't want to be disturbed and clearly separate the personal from professional lives. They are very strict about the timings and whom they speak with during work. One of my relatives have been living and working for a fortune company since last 10 years in silicon valley. He says he has never spoken to the coworker who sits next to his cubicle, as the other person too does the same. Both of them come to work at 8 in the morning, eat meals while working, drink coffee while working and go home early in the evening. However in countries like India, having lunch together, cafe together is socially acceptable way of living .

I have observed that many onsite teams who are new to Indian culture don't consider this socializing aspect as cool and they get furious about "wasting productive hours".

It is extremely important to exchange key team members of both the teams for a few weeks so that they understand each others team. Knowing each others name is not sufficient.

Technology and Communication: Somehow western programmers come with inherent ability to communicate effectively as compared to the offshore programmers. So, offshore vendors always spend extra effort to correct this weakness by pushing the senior and more experienced programmers to the front line to manage projects. So, it is difficult to find "programmers" with 10-15 years of experience in offshore teams, however you can easily find "managers". So, don't expect people at 10+ years sit and code as compared to the onsite counterparts. The subject of whether experienced offshore developers should code or not itself is a debatable subject, but let me keep it for another day :-)