TechHui

Hawaii's Science, Technology and New Media Community


Globalization is leading to more and more geographically distributed software development teams. Online outsource marketplaces such as eLance, Rent a Coder and Guru are enabling small and medium size businesses to leverage offshore development resources for the first time. Macroeconomic trends are causing an increasing number of large businesses to look overseas. Offshore development teams can provide many opportunities such as making R&D and product development affordable for small and medium sized companies, and providing the ability for larger companies to leverage multiple development pipelines. The story isn't all sunshine and smiles. Many offshore development efforts fail miserably due to a lack of experience on one or both sides of the shore. Offshore development isn't for everyone. Sometimes a small team of core developers working in the same building as your product managers provides the best productivity and team dynamics. Every organization is different, so you should carefully evaluate your options before making the jump.

Having worked for companies in the US, Japan and UK managing offshore teams in Russia, Romania, India and Argentina, I've had the opportunity to learn a few things about distributed software development teams. Here are some pointers for those thinking about doing offshore development.
  1. Pay 10%-20% over market to get the best people, and do all the hiring yourself. Don’t be stingy. You are already enjoying significant cost savings, and by paying a little over market you provide significant benefits to your team. They will give you better productivity and improved quality in return.
  2. Use a structured, rigorous interview process. Have people do design/architecture work and code in front of you during the interview. Don’t concede anything just because you are offshore. Remember: 1 great developer, tester, or project manager is worth 5-10 average ones (and a 100 poor ones!)
  3. I commonly hear that agile development methodologies such as eXtreme, Scrum, etc. can't be applied to geographically distributed development teams. In fact, most of the core principals can be applied. Use video chat applications such as Skype or iChat to conduct your morning Scrum meetings. Pair programming is a challenge, but you can mandate code reviews as part of your check-in process. This provides many of the same benefits. Use test driven development and have your source control management system reject check-ins that cause unit tests to fail.
  4. Consider setting up a permanent video link between your offices using dedicated computers. This helps create a "one team" mentality.
  5. Avoid the dreaded "us versus them" mentality by ensuring there is no "them". Make your offshore developers part of the team. If you are using a body shop rather than a branch dev office, use a legal agreement that allows you to directly incentivize individual developers and testers. Relocate one or more managers from your headquarters, and periodically bring offshore developers on location to build cooperation and spread project related knowledge throughout the team. Its important to extend your corporate culture to your offshore team.
  6. Wiki wiki wiki. Invest in a quality wiki such as Confluence from Atlassian, and require all processes, standards and systems be documented. Updating wiki pages is easy, which means people are far more likely to keep your documents up to date.
  7. Plan for application support up front. It is very expensive to transfer all the knowledge necessary for application level support from one development team to another.
  8. Use offshore outsource professionals with a proven track record when setting up your offshore office or outsource project. This is especially important the first time you try outsourcing. Managers that are used to dealing with teams sitting in the same room will require training to adapt.
  9. Offshore outsourcing is a great way to augment a strong existing team. Don’t make the mistake of firing all your knowledge workers. Any good manager knows that the most important factor in successful projects is the use of talented and motivated people.

Here are a few things to consider when selecting an offshore location:
  1. Safety of expatriates
  2. Comfort level for expatriates
  3. Infrastructure (reliability of communications infrastructure)
  4. Cost of living for expatriates
  5. Government stability
  6. Quality of the local talent pool
  7. Quality of the local schools
  8. Cost of labor
  9. Time zone differences
  10. Friendliness of immigration laws

I hope you find this information useful. As always, comments, questions and creative insults are welcome.


Ikayzo - Design • Build • Localize | Web • Desktop • Mobile

Tags: managing offshore development, offshore, offshore development

Comment

You need to be a member of TechHui to add comments!

Join TechHui

Daniel Leuck Comment by Daniel Leuck on March 12, 2009 at 10:22am
Hi Brian, Excellent point about face-to-face get togethers and the importance of group socialization. We actually go a step beyond this by locating at least one member from management at the offshore location and rotating team members between the locales. Of course, this is only possible when you have multiple long running projects that allow you to get a dedicated team from the offshore outsource company.
Brian Russo Comment by Brian Russo on March 12, 2009 at 1:22am
Gotta point out that these pretty much all apply to "regular" projects also :)

Slightly OT, but I've always found it interesting how the geography of a work site plays out. Different sections and different people near each other influence how work gets done (or doesn't). Not remarkable, but most people don't really think about it explicitly.

I think video is really important; communication is extremely inefficient without visual cues as most communication is non-verbal.

It's much easier to speak with someone over the phone or via text chat once you have met them in person or at least seen them because you pickup their mannerisms so much faster. You can learn how a person communicates without ever meeting them face to face but it takes much much longer. Particularly when people are stressed, a lack of non-verbal communication is problematic.

To that list I would add periodic face-to-face get togethers where socialization is a big goal. At least twice a year, ideally more often. Depends on the culture and feasability.
Konstantin A Lukin Comment by Konstantin A Lukin on March 8, 2009 at 3:57pm
I like the picture.. makes me think of something like being an Intercontinental DJ.. guessing it is full of exciting new learning opportunities.
Daniel Leuck Comment by Daniel Leuck on March 8, 2009 at 8:32am
Hey Brooke - Thank you for sharing your card game ice breaker / social experiment. It sounds a bit evil. I like it :-) Your comment about people having different motivations is spot on. I think the problem with a lot of outsourcing efforts is that the motivations of the customer and the outsource team are too different. I refer to this as the "us and them" syndrome. When you make them feel like part of your team, and incentivize them in a similar way, you align interests. There will always be some delta and, as you rightly point out, its important to be sensitive to this.
Lay-Yong: I agree with all and I think it is also important to retain and encourage knowledge sharing from the offshore team by having something like a knowledge base system.
I agree. We use Atlassian's Confluence wiki and Jira issue tracker for these purposes. Disclosure: We are Atlassian partners.
Brooke Fujita Comment by Brooke Fujita on March 8, 2009 at 2:31am
In a former life, well before I became a coder, I worked as an English teacher in Japan. Whenever we had to conduct large-group seminars or lessons, one of my favorite ice breakers was this “game” (the name escapes me, but really, the name of this game does not matter) where we would divide our audience into groups of 6 or more, all sitting around a deck of cards. We would then pass out to each and every participant printed instructions in English for a simple card game. After giving the participants some time to read and absorb the game rules, the print game instructions were all collected, and we let them begin the card games.

What we did not tell the participants was that all of the printed instructions were slightly different from each other. In other words, they were all expecting to be playing the same card game, when in reality they were all operating on very slightly different rules.

The more observant players were pretty quick to pick up that everyone at the table was not playing by the same rules. These were the ones that were soon laughing, and enjoying the rather odd situation. Others became frustrated, and I suppose some of them may have even accused others of cheating (or at the very least, not reading the English card game instructions correctly).

I really liked to run this exercise in cultural awareness whenever I got the chance. It was interesting to see how people behaved and reacted when placed in such a situation. Of course, I just loved sitting back and watching the confusion unfold. But I digress.

Dan is spot on for all of the nine points he lists. If I can add to this, I would say this: everyone on the team must come to understand that the others may be operating with different motivations, even if the goal is the same. I think it would be best for a project distributed across country borders if all participants could speak the same language, but even then, one must really work extra hard at communication. Culture colors language, so perhaps an ideal measure to avoid the “us versus them” trap would be if the entire team could spend some time together just to see how they are alike and how they are different. Having people on the team who are multilingual and multicultural also goes a long way in bridging gaps.

It is true that offshore development is not the perfect fit for all business needs. But I do believe that given the proper requirements and a team with the right stuff, it really needn’t be painful. (At least, not as painful as I’ve seen… oy!)
Lay-Yong Comment by Lay-Yong on March 7, 2009 at 2:38pm
Thanks for sharing the 9 impt factors! They were interesting. I agree with all and I think it is also important to retain and encourage knowledge sharing from the offshore team by having something like a knowledge base system.
Daniel Leuck Comment by Daniel Leuck on March 5, 2009 at 4:40pm
The locals know what is and isn't safe. You will learn from them. Note that this isn't a concern in all the locations I mentioned. Its also very important not to ask an expat manager to do something you wouldn't do yourself. I always visit new locations and spend enough time to get a feel for the quality of life.
Cameron Souza Comment by Cameron Souza on March 5, 2009 at 3:44pm
> Safety of expatriates

What about the safety of the locals?

Sponsors


web design, web development, localization


Spread Firefox Affiliate Button

© 2010   Created by Daniel Leuck

Badges  |  Report an Issue  |  Privacy  |  Terms of Service