Like this article? We recommend

Like this article? We recommend

Two of the hottest recent trends in the software development community are
agile development and internationally distributed teams. Agile methods are a
response to the drastic degree of change in the modern business and IT
environments. These highly dynamic environments demand software development
teams that can respond to change and continuously deliver business value.
International distribution of development teams (called offshore
development) is largely a response to market forces demanding lower rates
for software development. Many organizations that develop software have
recognized the wealth of skill and talent available at much lower rates in
places such as India or China and are anxious to source work from these
development centers.

Are these two trends compatible with one another, or are organizations going
to be faced with a choice between "going agile" and "going
offshore"?

The Challenges of Offshore Development

Much has been written about the pitfalls of offshore software development.
These are some of the most significant challenges to overcome:

Decreased communication bandwidth. Due to time zone differences
between western business centers and many of the major offshore development
sites in India and China, there are very few hours in the day when project
participants are in both office locations at the same time. This factor, as well
as the current cost and quality of telecommunications, serves to significantly
decrease the volume of communication between offshore and onshore
teams.

Decreased visibility into project status. It's often
difficult for project managers and business sponsors to get an accurate sense of
project progress and status. Many of them have been unpleasantly surprised at
late stages of a project to find that their sense of "percentage
complete" was radically incorrect. Measuring project progress is a problem
when the project team is collocated and onshore, and is only made worse when the
project is on the other side of the world.

Configuration management. "Bringing it all together" for
implementation in the production environment is one of the most difficult parts
of any software project. Many teams that have built components offshore have
been beset by problems when the time came to integrate the offshore and onshore
pieces into a working system.

Disconnection on project estimation. Anyone who has been involved
in a software project knows that customers, managers, and developers all
estimate projects differently, each using their own "fudge factor"
based on what the other groups tell them. In an offshore situation, where it is
entirely likely that the development team will never meet the project manager or
customers, the standard deviation of traditional project estimates can vary
wildly. Additionally, it can be very difficult to assess the accuracy or
reasonability of estimates as the project progresses.

All of these obstacles are significant to overcome, and different
organizations have met with varying success using a variety of different methods
to address them. However, since agile methods are relatively new, there has been
very little investigation into how they may exacerbate or remedy these
challengesuntil now.
ThoughtWorks
opened an office in Bangalore, India last year. Since we have had success using
agile methods in the U.S. and Europe with non-distributed teams, it was only
natural for us to try to figure out how to extend agile development offshore.
What follows is what we have learned so far.