The popularity of the Agile methodology in the software development has reached an almost exclusive level. According to the statistics, in 2018 about 91% of software developers worldwide apply the Agile values and principles in their work.
At the same time, we observe a different trend, and that is the increasing share of distributed teams and the growing popularity of remote work. And there seems to be some contradiction, as at the first glance Agile and distributed teams do not merge well.
The basic concept of Agile is the incremental development that allows delivering a certain working product within a short time. This way, teams working by the Agile methodology can adapt to changes to their projects much easier. This approach defines the overall project development organization strategy.
The Agile methodology is laid down in the famous Agile Manifesto and is based on the twelve principles derived from it.
We will not quote all of them here, but only those that are relevant to our research:
What does it mean in practice? It means that Agile encourages personal communication between team members and that the team should meet frequently, preferably, on a daily basis, to discuss the progress and the project milestones.
Now, how can it be possible with a distributed team? At the same time, judging by the popularity of Agile, there must be some “secret sauce”, the “distributed Agile methodology” that allows applying its principles to teams working remotely. Indeed, Agile can be successfully used in distributed teams. The key is to apply it so that to minimize the consequences of remote work.
Table of Contents
The main point in adapting Agile for a distributed team is not sticking to each point of the Agile Manifesto or trying to implement each of the basic principles of Agile. By its nature, distributed cooperation will have its effect on the development flow, however, this does not mean that Agile will not work.
When applying the Agile methodology in a distributed team, it is important to set up the team so that to achieve the maximum effect. All references say that the optimal size of an Agile team is 3 to 9 members. A larger team may affect the communication quality, as even in a face-to-face daily meeting, a person has a certain limit of what they can remember at the same time. Learn more about Scaled Agile Framework (SAFe).
Moreover, in a distributed team, you will anyway face the problems of time zones and the members’ personal schedules. Thus, we recommend that you keep the distributed team size to the recommended number to facilitate the communication organization.
As to the team roles, distribute them more or less evenly between the countries in which you operate. If will be a bad idea to keep all developers in one place, all testers in another while all management is somewhere else. If, for any reason, you will need to pull out of a certain location due to any external circumstances (think of a sudden legislation change, war or other force majeure), you may lose the entire line of work.
Of course, the recommendation to distribute the workload evenly between the team members works not only for distributed teams but for co-located ones, too. However, in a distributed team uneven workload can have the most severe consequences.
When an overloaded team member delays the flow for other colleagues, it can become even longer due to time differences or schedule mismatch. Therefore, an overload can threaten the timely delivery for the entire team. At the same time, people with too little work may become poorly motivated and not willing to commit their effort to the project.
If your team structure includes both in-house and remote colleagues, make sure the remote members do not find themselves in the position of subordinates. They are not “helping” the head office, they are doing their share of work for the benefit of the common project.
The daily sync-ups that are prescribed by the Agile methodology are intended, among other things, to detect the issues that block other team members’ work. In remote Agile teams, this problem is of even higher importance, as a blocker can not only halt the developer’s work but make them wait until the colleague who should resolve the issue starts their working day on the other side of the globe. As the result, a lot of precious time is wasted.
To avoid such bottlenecks, adopt the practice of discussing not only the today’s issues but also those that are planned for tomorrow. This way, it will be easier to see what may block the development and take proactive measures.
Smart management of the current issues and the project backlog can reduce the dependencies in the team to the minimum. This way, you can achieve higher efficiency and better productivity of your entire team.
At first glance, pair programming is outright impossible in a distributed team. Pair programming means two people working on the same station – one is writing the code while the other monitors it, makes suggestions, asks for clarifications, notices mistakes. Pair programming is one of the core methods of Agile intended to improve the code quality.
In fact, you can set up productive pair programming in a distributed team, too. Today, there are quite a lot of conferencing tools for any budget. Most of them have the screen-sharing feature which will be the effective replacement of the side-by-side programming. Slack, Skype, Zoom – all of them can be used to organize pair programming. You can read more on the tools used in managing distributed teams in our blog.
Of course, planning pair programming in a remote team takes more organization effort, as you need to set up the sessions convenient for both members taking into account the time differences. However, when the developers are sufficiently self-motivated and committed to delivering quality code, they will be prepared to adapt their schedules to include pair programming, even if they are half the world away from each other.
Since we have mentioned the tools for remote team management, let’s look at them a bit closer. Their main goal is reducing the communication challenges that a remote team faces and creating a working environment that is as close to personal communication as possible.
In setting up an Agile development distributed team, make sure you provide proper communication and collaboration tools so that your team members have no problem in reaching each other or attending daily meetings.
Of course, since your company develops software, you are bound to have GitHub as your platform for code building and review. Use Google Drive to manage your project documentation or opt for Microsoft SharePoint if you need a more comprehensive collaboration package with enhanced functionality.
Ensure your virtual team communication by setting up an instant messenger, such as Slack or Skype. The same tool can also be used as a means of your daily meetings.
As you can see, there are a lot of products that you can use in Agile distributed teams that can help you achieve the maximum effectiveness.
Inviting professionals from different geographical regions gives tons of benefits for the company – from cost saving to leveraging the different approaches to software development. At the same time, managing a distributed team requires understanding the cultural specifics of each region and adapting them to the common flows.
For example, there are distinct differences in the way deadlines are treated in different cultures. Developers in Western Europe, USA, Eastern Europe have a great degree of respect to deadlines and focus on delivering their tasks on time. On the contrary, team members from Asia may have a more relaxed approach to timeliness. If you have a mixed-culture team, set up your daily sync-ups so that to keep the timely delivery under control. Checking the status on a daily basis can help to prevent delays and deadline breaches.
You can read more on the cultural differences and the ways to overcome them in our blog.
Even if you have managed to successfully apply Agile across a remote team, plan offline meetings and location visits. Of course, this requires some additional coordination as well as budget, as you will have to consider the costs of travel and accommodation, visa matters, workload distribution allowing some colleagues to travel.
At the same time, such activities are going to bring great benefits. For remote colleagues, an invitation to an offline event in not only the chance to meet the people they see in their Skype window. It is also an opportunity to feel “part of the crew”. Moreover, during offline meetings, people may discuss things they find too minor to bring up during video conferences or daily sync-ups.
In any case, most people love traveling and seeing other places. Why not combine a pleasant experience with a chance to establish a better working communication? Your remote colleagues are going to appreciate it.
Distributed software development teams are becoming the new norm. Both company managers and developers recognize the benefits of such an organization. With a certain effort, a distributed team can be set up to work according to the Agile principles ensuring better effectiveness and adaptability to change.
The key is not in following the rules, demanding daily reports or implementing strict procedures. The key is in putting together a motivated team of like-minded people that may be in different parts of the globe and have different working patterns and habits. Some like working at home wearing a tracksuit, some prefer coworking places, some like to be always on the move. The important thing is the commitment to the common goal.
If your team consists of motivated professionals, that is already half of your success. With the Agile methodology, you will strengthen your position as a company capable of delivering quality product within the set time and budget. If you need a consultation on applying Agile in your work, we will be happy to share our experience with you. We have been successfully working according to this methodology and if you need a reliable partner to help you build your project, contact us to discuss the details.