A recent posting at Alan Cooper’s site talks about Designing Products for Offshore Development. It isn’t an in-depth article, but it does touch on some of the challenges that are faced when working with a disperse team whose culture, language, and time zone have a direct influence on the quality of communication within a project. The project I’ve been working on for the past year-and-a-half has leveraged offshore resources with some success. We’ve been very diligent about remaining in contact with the offshore team, and we’ve tried to be very explicit about our design and quality assurance requirements. That said, I would agree that communication has sometimes presented a challenge, and it’s something that needs to be closely watched.
Martin Fowler has also posted some good advice on Using an Agile Software Process with Offshore Development. We’ve found automated continuous integration to be a huge benefit when working with an offshore development team (of course, it has huge payoffs for any development team). Knowing that your source is in a healthy and buildable state at any given time makes it easier to leave the office at 5:00pm EST knowing that your resources in India (or wherever) won’t have any integration challenges when they “get latest” to begin their work day. If you haven’t tried continuous integration yet, I’d encourage you to give it a spin. We’ve been using CruiseControl.NET, although Draco.NET is another tool that is often recommended.