It is time for me to put on paper (well not really paper…but you know what I mean) my thoughts on distributed Agile. I have worked with both distributed and co-located Agile. Distributed Agile is a reality, but there are a lot of myths surrounding it. I had some queries over the last few months where people were trying to compare co-located teams with distributed teams.
Let’s start by talking about one of the things that is being brought up again and again: “Agile works best with a small number of clever people in a room together”. Now I agree that this will be one of the best performing teams, but I would stipulate that in that situation you don’t need a methodology at all and that the team will be performing very well still. The power of Agile is the rigor it brings to your delivery when you either don’t have very experienced people in the team or when you are a distributed team.
Now why would you choose a distributed Agile model?
- Scaling up. It can be very difficult to quickly find enough people in your location
- Access to skills. It’s also difficult to find people with the right skills.
- Follow-the-sun development. By working in different regions of the world, you can work around the clock which means you can bring functionality to market quicker.
- You are already distributed. Well if your teams are already in different locations, you don’t really have a choice, do you?
- You DO NOT chose distributed Agile because it is inherently cheaper or better. That is a misconception.
The goal of distributed Agile is to get as close as possible to the performance the same team would be capable of if they were co-located.
All things being equal, I don’t believe a distributed team will ever outperform a co-located team. But then all things are never equal. The best distributed teams are better performing than 80% of the co-located teams (see graph on the left). So it is important in both co-located and distributed Agile to get a well working team together. Improving the performance of your team is more important than the location of the members.
There are however factors that help you achieve an experience close to co-locations.
- Invest in everything that has to do with communication: Webcams, Instant Messengers, Video conferencing,… And really make this one count, spending 10 minutes each time to enable a connection costs a lot of productive time over a sprint.
- Physical workspace – where team members are co-located they need to have the right physical environment and shouldn’t sit among hundreds of other people who disturb them
- Invest in virtual tooling like wikis, discussion boards etc.
- Find ways to get to know each other. This happens naturally for co-located teams, but requires effort for distributed teams. Spend 10 min in each sprint review introducing a team member or create virtual challenges or social events in second life or world of warcraft.
- Don’t save a few dollars on travel. Get key stakeholders or team members to travel to the other location so that you at least for a short period of time can enjoy the richness of communication that comes with co-location.
- Agree on virtual etiquette – what should each team member do on calls or in forums. Retrospectives and Sprint reviews require some additional thought to really hear from everyone.
If you do all that you have a team that operates nearly as if co-located. And if you really want to push the performance of your team further then I have an answer as well:
- Look at your engineering practices
- Look at your tools
- Implement DevOps/ContinuousDelivery/Continuous Integration
That will really push your productivity, much more than any methodology or location choice could possibly do.