Good practices for Distributed Agile
Distributed Agile is the process of developing software or other products, by applying Agile values and principles, through Agile practices executed by team members working from different sites rather than be co-located. The degree of separation of team members can vary significantly. They can be in one building but at different levels, or they can be in separate offices in the same city or be distributed across cities or even countries and continents. Although, the Agile Manifesto (www.agilemanifesto.com) espouses the principle of face to face conversation as the most efficient and effective method of conveying information to and within a development team, Distributed Agile has become very common in organizations due to several benefits. Distributing an Agile team also poses several challenges. This article discusses many aspects of Distributed Scrum (Scrum being the most common and popular flavour of Agile software development), including the reasons why organizations do it and offers suggestions for overcoming the challenges.
The distributed Scrum team
Scrum is a framework for organizing and managing work based on a set of values, principles and practices that provide the foundation for effective product development. Scrum is a simple, people-centred framework that aims to deliver product backlog (features and attributes) in short, focused iterative cycles called Sprints as shown in the Figure 1.
Fig 1: The Scrum Framework
At the core of the framework is the Sprint team consisting of a Product Owner, a Scrum Master and 8-10 team members called Developers. The entire team is involved in assisting the Product Owner in converting the product vision to a set of prioritised product backlog, defining the right amount of detail for the backlog items at the right time, planning the delivery of a smaller subset of backlog items in a fixed time-cycle called a sprint (usually 1-2 weeks in duration). The team works on the backlog items every day during the sprint cycle and inspects and adapts the work done daily in an event called the Daily Scrum. At the end of the Sprint cycle the team reviews the completed product backlog items with the Product Owner for acceptance in an event called the Sprint Review. After the Sprint review the team participates in another event called Sprint retrospective aimed at facilitating learning and improvement of the development process. The entire Sprint cycle then repeats itself for however many sprints have been estimated to deliver the work.
It is obvious that the best outcomes are obtained when the entire Sprint team, including the Developers, Scrum Master and Product Owner are collocated in one area. This would facilitate regular, informal and as-necessary communication and collaboration. However, in today’s context of globalized product development consisting of team members from multiple departments or even organizations distributed teams have become the reality. Figure 2 shows the real-world example of a Sprint team distributed across two countries, Australia and India.
Fig 2: The Distributed Scrum Team
In this example, the Sprint team consisting of a Product Owner, a Scrum Master and five Developers ((TM-1, TM-2, TM-3, TM-4 and TM-5) are located, across two floors, in one office building in Sydney, Australia and three Developers (TM-6, TM-7 and TM-8) are engaged from an external IT Services company in India. This type of distribution is quite common in many organizations. Distributed teams can become more complex when the Product Owner happens to be in a different city to other team members or when the team is distributed across multiple cities or countries.
Advantages of Distributed Scrum teams
The primary advantages of distributed Scrum teams are Economics, Scale, Skills, Flexibility of ramping up / ramping down the team and extended duration of a working day among other reasons. In the above example, where three members of the Sprint team work from offshore locations, savings of approximately 25% of Sprint costs is easily possible. When extended to many Sprints over several projects the total savings in product development costs can be significant. However, some would argue that distributed sprints result in decreased productivity.
Distributed teams also help overcome the challenge of finding skilled resources in one location, in sufficient numbers and with the flexibility of being engaged just for the duration of a project. Thus, the combination of Cost savings, scale advantage and flexibility can be compelling for organizations to form Sprint teams from members distributed across countries and cultures. To some extent, the diversity of team members makes up for the loss of productivity compared to co-located teams.
Challenges of Distributed Agile
There are several challenges with Distributed Scrum and they can be grouped into three broad categories as below;
Communication and Coordination
Time zone differences
While co-located teams can communicate with each other almost continuously, as required, whenever required because of the proximity they are able to understand requirements and seek clarity faster and more easily. Geographically distributed teams have the disadvantage of having to schedule communications when others are available and phone or written communications tend not to be as effective as face to face verbal communications. Distributed Scrum also results in a higher volume of documentation compared to Co-located teams to create and retain knowledge across locations.
Time-zone differences between States within a country or between countries can be both a benefit and a challenge. While time differences with an overlap helps in extending the duration of a day, they also create problems when team members from one location may need clarification or information from other locations where the work day has already ended. This can cause delays that may add up to cause significant lost time. It also becomes inconvenient to hold Sprint planning meetings that may go for 4-8 hours and even Daily Scrum meetings if the amount of overlapping working hours is very less.
Cultural differences between countries can cause conflicts, disharmony and misunderstanding due to differing workstyles, preferences, attitudes and behaviours. Organizations that are new to Agile can be impacted significantly more due to these inter-cultural differences. Sometimes different languages between countries can also cause severe communication issues between team members if they all don’t speak a common language such as English.
Good practices and recommendations
While Distributed Scrum offers several advantages it is important to recognize the challenges and adopt measures to mitigate them, especially of organizations are new to Agile. The following recommendations may help overcome some of the challenges;
Accept the reality that Scrum teams will be distributed across locations, cultures and time zones, despite the Agile principle that favours face to face communication in co-located teams.
Avoid distributed team set-up’s where the Product Owner or Scrum Master is separated from most team members. Also, it is best to avoid team set-up’s where just one or two members are separated from a co-located team. An ideal distribution for a Sprint team of ~ 10 members is a 5:5 or 6:4 distributed split between two locations.
Establish an infrastructure that supports Agile development. Continuous integration servers and Development servers that are fully synchronised in the Dev-Test-Preproduction-Production environment provide significant efficiencies for distributed teams. Also, Cloud computing with low latency offers advantages for distributed Agile over local infrastructure.
Pay attention to Bruce Tuckman’s five stages of team development – forming, storming, norming, performing and adjournment to facilitate effective team dynamics.
Assemble the entire Scrum team at one location for a minimum of one sprint or two weeks at the beginning of a project. The entire team should participate in Release planning and all the standard Scrum framework rituals of Backlog grooming, Sprint Planning, Daily Scrum, Sprint Review and Sprint Retrospective in face-to-face interaction at one location for at least one sprint, before being distributed. This forming stage of a team is critical for all members to become familiar with each other, their purpose and work.
Establish a high-quality video conferencing facility at all distributed locations for facilitating Backlog Grooming, Sprint planning, Daily Scrum, Sprint Review and Retrospective events involving distributed team members.
Establish an electronic sprint board such as Jira for managing backlog and making work visible and transparent to all team members.
Define a “Golden hour” for Daily Scrum, a time when team members at multiple locations can come together for a minimum of 15 minutes to inspect and adapt their work.
Schedule a visit by the Product Owner and/or Scrum Master to all locations, including offshore offices, at least once every 10 2-week sprints to understand and resolve constraints and facilitate the storming, norming and performing stages of team development.
Adopt all the above practices as “standard” across all distributed Agile projects and conduct organizational-wide retrospectives to exchange ideas and facilitate learning from the experiences of other teams.
Using the stages of Team Development by Judith Stein, MIT http://hrweb.mit.edu/learning-development/learning-topics/teams/articles/stages-development