Let’s be honest — managing geographically distributed teams is tough. Here’s a simple breakdown of how teams might be distributed from least distributed to most:
- Shared space: This is the simplest. Everyone is in close proximity in a shared office area.
- Separated shared space: Everyone is in the same building but in different areas/floors.
- Different buildings: The team is housed in different buildings not within walking distance.
- Long Distance: The team is separated by many miles but in the same time zone.
- Time Difference: The team is in different time zones but only a few hours apart.
- Day Difference: The team is many hours apart and normal work hours barely overlap if at all.
As you go down this list, managing the team becomes more complex. Can agile software development work even at #6? If so, will agile techniques make the process better?
I think the answer to both questions is yes, with a few qualifications. Agile works best when teams can collaborate constantly. Questions should be asked and answered immediately. Issues should be resolved or backlogged right away. Being widely distributed adds complexity.
Teams often fall back on waterfall in these situations. The feeling is that if you write everything down in excruciating detail you minimize the need for collaboration. That is so wrong!
Bulky documents are hard to understand under the best of circumstances. Add in language barriers, just to make things interesting, and you have a failure waiting to happen. Do not try this at work!
Instead, adopt some or all of the following agile measures:
- Automate. A physical status board (e.g. Scrum or Kanban board) will not work. It must be electronic and shared by everyone.
- Settle on good collaboration tools. Email is not enough. You’ll need some form of instant messaging for conversations and a private Twitter-like tool such as Salesforce.com’s Chatter will also help. Invest in video conferencing if you can.
- Keep your iterations or sprints short. 4 weeks is an absolute upper limit. 1-2 weeks is better. You’ll want frequent checkpoints to validate that everyone is in sync.
- Daily meetings are tough when many hours separate the team. Be creative. If the meeting is truly inconvenient for some, can you offer something in exchange for making the effort to attend? Can the meeting time change periodically to spread the inconvenience? Would meeting 1, 2 or 3 times per week be adequate? (If your sprints are only 1 week long, maybe you don’t need a daily meeting.)
Distributed software development is an area where agile techniques shine. Agile reduces risk and improves team dynamics.