Distributed Agile
The first agile principle is about "individuals and interactions over processes and tools". How can it be managed when people are not all in the same place?
Dave Churchville wrote about it and classified distributed team as:
1. Type A: All developers are together, all customers are remote 2. Type B: Multiple development teams in different locations (but each team is together) 3. Type C: "Virtual" team where nearly everyone works remotely (e.g. from home, in various offices, etc.)I've been working in the last years mostly with Type A and Type C teams, and I believe the main goal in these cases should be improving the communication channels between people to be as effective as if everyone was in the same room. Long story short, this isn't possible, but we can still make it work. For remote costumers, the first challenge is having they available to talk with the development team. It can be painful at the beginning because "build software" normally is not their priority, but as long as they realize how their contribution is important to get the best results, they will probably change. And in this case, cellphone, skype, IM or even e-mail will become very important for their collaboration, and both costumer and team should not underrate these communication tools. Here's some tips to work with remote costumer:
- Try to build commitment since the first day.
- Ask for their oppinion during the development and show how their collaboration affect the results.
- Define open communication channels. Give preference for phone calls and instant message over e-mail.