When working with distributed agile teams, first we have to ask ourselves, “What is our definition of making distributed teams work?” I have managed and coached distributed agile teams that “make it work,” however they understand that the level of effectiveness will not be the same as a co-located team, and some of them learned that painfully.
Unfortunately, all too often the leaders that decide to outsource do so strictly on a cost-based consideration and don’t consider the other pitfalls of doing so. They don’t take into account the value side. It doesn’t matter if you cut your development costs by 30% if the productive capacity of the team drops and the quality goes in the toilet; often you end up increasing development costs because of mounting technical debt.
A few of my clients that track this find that the savings in money due to reduced cost per developer or tester doesn’t make sense when you look at the value side. Also, outsourcing decisions are rarely made with the longer term in mind. By this I mean the cost of owning and supporting the product. This is especially true for modern SAS solutions.
This situation frequently happens because some ‘superstar’ comes in and shows a way to reduce agile development costs by some impressive percentage. They displace local employees, establish an off-shore presence and lower shorter term costs, but rarely as much as predicted. Too often this person is rewarded, held up as a star and promoted. Then the poor bastard that takes their place inherits the true cost of the oursourcing: often dysfunctional, lower productivity teams that deliver lower quality products. This is followed by the inevitable dissatisfied customers who start to bombard the development group with escalations.
Variability of requirements is the number one hindrance to achieving predictable delivery in terms of time and quality, and escalations are usually at the top of the list of things that cause variability in requirements. This cost is not factored into outsourcing decisions, and I’m not saying it happens all the time, but in my experience, it happens more times than not.
The cost-benefit of outsourcing aside, we live in a world where distributed agile teams are a fact, whether gotten to by outsourcing or acquisition. So, here is a checklist that I have found can help “make it work.”
- Minimize the dependencies between sites. If this means redrawing the ownership lines, do it. You will greatly lower the risks caused by lines of ownership with a solution that forces a higher level of collaboration.
- Transparency of progress and quality. With distributed teams, it is even more important to have an up-to-date picture of the trends on a project because corrective actions can take longer.
- Script the important collaborations. Don’t make collaboration optional between the teams when planning, tracking and reviewing (of course this doesn’t mean everyone on all teams). The level of collaboration will be context-specific to the domain of the work, its complexity and the maturity of the team.
- Solid build automation and a strict policy of No One Breaks The Build. If someone 12 hours away checks in and goes home and has broken the build, trouble ensures and trust erodes.
- Manage teams at different sites to the same measure of success. I was leading an agile development initiative at a company that was building a suite product. Unfortunately all the distributed teams weren’t managed to the same measure of success. One had a very high commitment to quality and was managed to that, and the others were managed more to the feature checklist mentality. Their incidence of defects was 57% higher than the other team… I don’t think I need to explain the issues that ensue from such a situation.
- Monitor the level of trust between the teams. Leadership roles (SM, Agile Project Managers & Functional Managers) need to have their own backlog / plan for how to continue to grow this (use agile to scale agile).
Using this checklist I have seen distributed agile teams “work”. However, when we decide to distribute human beings, especially across significantly different time zones, we must keep in mind that we have chosen to lower their ability to communicate effectively, collaborate and hence build trust. So before distributing teams for “cost” reasons, make sure you truly understand the cost of doing so in terms of reduced productive capacity of the whole, level of quality produced and the cost of supporting lower quality in terms of escalations.