Agile Software Development (ASD) and Distributed Software Development (DSD) have become common business practices in software development environments. Agile development usually works well in teams located in one location, but working with distributed, geographically remote teams brings different challenges.
What are Agile Development and Distributed Agile Teams? What are the benefits and challenges of every Distributed Agile Team? How to build trust in physically distant groups of people, and how to overcome geographical and cultural differences to meet project goals?
In this article, we will try to give you answers to these questions and help you follow agile principles and practices in distributed development.
When it is at a very high level, we can describe Agile Development as a project management methodology that defines a way of working as a team. Agile Development was originally imagined for “co-location” teams, teams physically located in the same location. But in today's global world agile organizations have a great chance to overcome geographical distances and benefit from accessing a larger resource pool and to reduce development costs by implementing distributed development models in their teams.
Distributed Software Development is a familiar software development model in which teams spread across geographical lines and time differences collaborate on the same project. Distributed teams can work on projects from any location, and strong talent can be found in less competitive markets.
If we merge the Agile Development Methodology and the Distributed Development Model into one, we get a distributed agile team.
The results of the State of Agile Development Survey conducted by VersionOne shows that teams practicing Agile Development are getting larger and more distributed over the years.
According to the 13th State of Agile Survey conducted in 2019, 78% of respondents said their organizations practice agile with the team members distributed, collaborating across geographic boundaries and time zones. Compared to 35% in 2012, we can conclude that organizations more often support Distributed Agile Teams.
The key advantages that Distributed Agile software development aspires to gain are:
Globalization opens up the possibility of hiring IT staff from around the world, and with it, obtaining locally not available expertise. It also allows for the possibility to hire IT staff from third-world countries, which can significantly reduce overhead costs.
However, Agile and Distributed Development approaches differ significantly in their key tenets. By merging these two things, many challenges rise up in agile distributed development. Here are the top three challenges that we are facing in distributed agile development:
As you have noticed, Distributed Agile Teams bring many challenges with them. You must learn to follow agile principles and practices in distributed development. Here are some simple tips.
Agile processes can be deployed across organizations of all sizes. Not every agile methodology is suitable for every organization and project. Each organization and team have to find an existing or customized methodology that works best for their team.
The aforementioned survey revealed that the most popular agile methodologies used by respondents’ organizations are Scrum (54%) and Scrum/XP Hybrid (10%).
Once you have defined the methodology, choose which agile techniques your team should use. According to the survey’s results, the core agile tenants currently in use are Daily Standing, Sprint/Iteration Planning and Retrospective. On the graph below, you can see a list of the most popular agile techniques used today.
Teams whose members work in various time zones face different communication challenges.
One of the best ways to reduce the time difference issue is to maximize “the Golden Hours”. Arrange your Team meetings whatever time of day is most convenient for everyone involved when you have an overlap between time zones.
Global software development (GSD) brings “Follow the Sun” (FTS) software development, a model of 24-hour development without stopping. The same concept can be also applied to ensure 24/7 support for the client.
Every team member has to be aware of the time zones other team members are working in so that they can successfully cooperate on projects. This can be achieved by using any time zone utility tool that supports multiple calendars, tracking time in different time zones, and a list of holidays for different countries.
Culture plays a big role in how a team member behaves in a specific situation. Building a united development culture is a big challenge for every Distributed Agile Team. People in different cultures have a different sense of commitment to work and different ideas about authority and work ethics. Being aware of cultural differences can help them understand the deeper meanings in some of their communication processes.
Many organizations offer cultural awareness training for their teams, but the simple Scrum daily meetings can also help break down cultural barriers.
Trust between team members is essential in an agile distributed environment. Frequent visits by distributed partners or arranging occasional team-building events can help build trust between team members.
Communication takes on a significant part of the efforts involved in delivering software. Face-to-face conversation is the most efficient and effective method of conveying information within a development team. This is difficult to achieve if team members are allocated in different locations.
You can enhance the communication capabilities of your distributed teams by providing them with different types of tools and software that enable virtual face-to-face communication, such as video conferencing. In that way, the team will be able to convey their feelings – whether they agree or disagree – and general mood by using their voice and tone.
Because of the lack of face-to-face communication in distributed agile teams, it is easy to lose important information relevant to the project. Because of that, you should take documentation very seriously.
The team should use agile project management tools with which project documentation can easily be stored, updated and browsed, all while getting notified of updates via email or their group chat tool.
You should avoid using email for sending important pieces of information because the data could then easily be lost.
In the graph below, you can see the most recommended agile project management tools according to the survey responders’ experience.
Distributed Agile Development Teams are the future of software development. In today’s global marketplace, it is the normal course of events to see an ever-growing number of Distributed Agile Teams in software development. There is no unique agile methodology or group of methodologies that completely suit every Distributed Agile Team. Each organization has to find an agile methodology that works best for them in order to build effective and productive Distributed Agile Teams by following the mentioned principles.