Do work to maximize the available communication bandwidth available to your team. Provide communications tools—like conference phone, Web cams, and hands free headsets—for your team and help them adapt their existing practices to distribution. 

Don’t continually reorganize your teams for each new project. Building teams takes time, building distributed teams takes even longer. Maximize your investments in team building by minimizing churn on teams. 

Do plan to travel, especially at the project’s pivotal points. Bring everyone together for the first couple of iterations, periodically during the project, and right before final release. 

Don’t distribute the work by system components, focus on user stories. Avoid organizing distributed teams by function—for example, the offshore test team. Both these approaches create knowledge silos within the team. 

Do provide tools to augment or replace those that only work within a team room—like a work item tracking system to replace sticky notes on whiteboards. 

Don’t let remote team members be forgotten in team meetings. Pair them up with a buddy and try putting everyone on the same footing by having all members call into conference calls at least occasionally. 

Do evolve the team’s practices as they identify better ways to deal with the challenges of geographic dispersion. Frequent retrospectives are the key to getting a team to consider how to improve.

Don’t forget to include everyone in frequent team retrospectives to identify what does and does not work for the team. 

Do focus on coaching. Make sure everyone understands why agile practices need to be adapted for distributed development.

 

Distributed Agile Development at Microsoft Patterns and Practices.pdf (1.06 mb)