Hawaiʻi's Technology Community

Managing Software Developers Across Borders

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

Views: 124


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

Join TechHui

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.
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.
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.
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!)
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.
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.
Comment by Cameron Souza on March 5, 2009 at 3:44pm
> Safety of expatriates

What about the safety of the locals?


web design, web development, localization

© 2024   Created by Daniel Leuck.   Powered by

Badges  |  Report an Issue  |  Terms of Service