As the current trends show, this is just the right time to get on board with remote work for your software development teams. If in the past, you would usually hear of distributed teams in terms of outsourcing, with the way the world is turning in the new Covid reality, working remotely is becoming part of the new normal and is likely here to stay. And with Agile becoming the preferred way of working in many companies both in IT and other industries, the next logical thing would be to implement its principles for setting up distributed Agile team management. Agile and distributed teams incompatible? So, what is a distributed Agile team anyway? From the sound of it, the phrase may just as well be an oxymoron. However, practice shows that even such things as Agile team management and distributed teams can be quite compatible, as long as you know what you are dealing with. Agile derives a lot of its strengths from the principle of continuous interpersonal communication. The flow of information never stops within an Agile team. You want all team members to be aware of the project status, possible blockers and dependencies. Product Owner keeps stakeholders informed. Whatever goes south in a team, there is someone ready to pick it up and carry on with the tasks, by all means necessary, and with their eyes on the shared goal of continuous delivery, constant improvement and growth. Agile is big on clear communication and teamwork. It’s what makes it possible for the team to quickly show results of their work, be it an MVP or a prototype. In some cases, like with MVP for SpoedTest Corona project, the client was able to see the first useable version of the project within just two and a half weeks since the start of the collaboration with our remote development team. Fast information exchange, mutual responsibility and commitment to a common cause – all this makes Agile development possible. In this case scenario, one should think, is it then even possible to have an Agile team when the people are not always in close proximity to one another? The answer is simple. Of course, it is possible and it’s happening all around the Agile world. Adopting Agile for traditional teams just as for distributed teams is feasible, as long as you set up your processes right, know what pitfalls to look out for, look at the example of companies that are already doing it successfully and adapt it to your company’s and project’s needs. Adjust for the specifics that come with being “distributed” and you’re good to go. Benefits of Agile for distributed team management Using Agile for distributed teams may be just the thing that sets them up for success. Implementing it is more than just ticking the right boxes off the list. It’s about adopting an Agile mindset that is the driving force in the company’s transformation eventually leading to business agility. Agile puts an emphasis on self-sufficient and organized teams. Every team member takes responsibility for the project’s successful completion and delivery to the client instead of solely focusing on their personal tasks. This is one of the key factors for distributed agile success. An Agile team is set to continuously improve and evolve. Each person looks at the bigger picture with one goal in mind – timely delivery of a working product. The trick is to remember that you are working in the context of distributed Agile delivery, but as practice shows, this is not only manageable but comes with its own perks and advantages. How to organize distributed Agile development Managing a remote team in most cases is not drastically different from working in co-located teams. It’s mostly about finding the balance, setting clear goals and deadlines, and accommodating an uninterrupted information flow between teams to manage dependencies. Remote Agile team roles and responsibilities The optimal team size in Agile is 3 to 9 people, which is equally applied for both distributed and non-distributed teams. The reason for this being that Agile heavily relies on constant information flow and communication and in big teams it tends to become complicated. Team roles in a remote team are no different than team roles in a traditional Agile team. Although, it is recommended to put some thought into balancing out team composition across locations. Generally, it is not advised to divide the distributed teams by function but rather by feature. This means that you shouldn’t keep all developers in one place and testers somewhere completely different. This would make it more difficult to consolidate different lines of work. It’s good to have a team that is able to operate as an independent unit when the need should arise. Also, different countries have their own regional differences in terms of public holidays, as well as unforeseeable situations when you may find an entire office from a certain location unable to work due to a natural disaster or political instabilities. Tasks and backlog management When working with both in-house and remote teams, the workload should be evenly distributed. Remember, that remote teams are not an appendix to the main office, but treat them as equals and show appreciation for their contribution to the project. When it comes to distributed agile development, it’s important to ensure that there are no delays with co-dependent teams in delivering on their part. The team should be realistic about the user stories they commit to in terms of dependencies and on-time delivery. Because of this, it may be advisable to reconsider committing to complex user stories that may require a lot of input and contribution from remote team members. These complex stories may be broken down into smaller and more manageable sizes. A self-manageable team should be able to continue working on tasks without major delays. The backlog should be created with this in mind. Agile activities and events for distributed teams In order to accommodate the work of a remote team, extra effort goes into organizing the Agile workflow and introducing tools to facilitate communication, planning and collaboration. Properly organized, these ceremonies work great for managing workload with distributed teams. Daily stand-ups are just a routine for co-located teams but become a crucial point of contact when you are working remotely. This is the time when team members report on their tasks in progress and communicate issues or blockers. To make the best of this time, you can also talk about other tasks that you have planned for the sprint or in your backlog. Team members should be asked some “burning” questions: Do you need input? Who can assist you with that? Do you have any blockers? Are you blocking someone else’s work? Will you be able to pick up these tasks once done with the current work? Keep in mind that if you need someone else’s contribution to continue working on your tasks, the person might not be immediately available, so address these moments beforehand. To accommodate Agile ceremonies, remote teams may use video conferencing software and screen sharing. Of course, it helps to have an uninterrupted internet connection and good quality sound equipment. This works just as well for daily meetings, as for weekly sprint reviews and even retrospective meetings, with the difference being in the scope of work that you are looking back at. It may require some time to set up virtual tools, whiteboards and breakout rooms, etc. But in the long run, teams often opt to switch to using these tools for all their work and planning even if they’re co-located. It is more convenient and you don’t end up doing double the work, like when you do your planning on a wall with sticky notes only then to transfer it into a spreadsheet. An interesting fact is that some companies have even successfully conducted full-on PI plannings for distributed teams with remarkable results. This doesn’t go to say that in-person events are redundant. Socialization is usually a big part of PI planning as it helps establish good relations within the team and for distributed teams that are brought to the location specifically for the event. But if meeting in-person is not an option, it is possible to get it done with a virtual agile team without too many losses. Tools and practices for distributed Agile development File-sharing Coming back to the daily grind, distributed teams benefit from setting up a file-sharing network. Multiple people should be able to access and work on the files if necessary, so it makes all the sense to use a cloud-based storage service. Tools to check out: MS SharePoint Google Drive Dropbox Communication For communicating throughout the day, teams can use instant messengers. This can be either person-to-person or group chats, conference calls, etc. With some tools like MS Teams, you can schedule calls in advance and even see the other person’s available time slots. Tools to check out: Slack Skype MS Teams Task management Agile teams regularly use services to track tasks in a sprint and manage the workload on a weekly or bi-weekly basis depending on how long is the sprint. Tools to check out: Jira Trello Asana Team workspace The team can create something like a wiki to be the single source of information and all updates on the project. Code documentation, although not a priority according to the Agile manifesto, for distributed teams may replace the need for in-person communication or calls and meetings to discuss the code. Another important purpose of a shared team workspace would be source code management and version control. Tools to check out: Confluence GitHub AWS CodeCommit Agile Bench Agile Manager Brainstorming Ideas The tools for idea brainstorming and collaboration are a must for any distributed team. They serve as a whiteboard where anyone can add ideas, map different items, comment, and offer many more features that make remote collaboration more effective. There are a bunch of tools that can serve this purpose: MURAL Miro GroupMap Google Docs A good practice is to use a combination of tools that best suits your project’s purposes and the teams’ needs. This way you can greatly improve your output and the quality of work. For instance, having proper documentation and governance for QA and software development process in place allowed VirtualStock team to deliver new product release every two weeks. Distributed vs Traditional team management: Challenges and risks Working with distributed teams may pose some challenges and risks compared to traditional teams, which should be addressed to help remote team members ease into the work process and avoid unnecessary clashes due to inherent differences. Communication gaps come as the most commonly occurring issue for remote teams. When not working in-person, it takes effort to organize efficient communication. You’ll have to schedule a call instead of just walking by your coworker’s desk. You may get delayed replies to your emails or messages. Worst case scenario, you’ll have a time-sensitive task or an urgent question and won’t be able to contact your colleague on the spot. The more people are involved in communication, the more complicated it becomes. Efficient communication for remote teams requires diligence and time management, collaboration and at times compromises. Cultural differences is another challenge that may seem unlikely but good to account for when managing distributed teams. This may manifest itself in how people with different cultural backgrounds approach their tasks if they have respect for deadlines, subordination and formal or informal communication. There are nuances in different situations and it’s important to respect other cultures. However, the best practice would be to find a common ground that could be expressed in the company culture shared across locations. Time zones come as a big challenge for the effective organization of team communication. A difference in time may mean that your team member from the other end of the world may be getting valuable input from you on the project when they are already done for the day, while you are just up and about to start the day. If any urgent issues occur, it may be hard to get a hold of people at short notice, unlike with traditional teams when you can walk right up to your coworker’s desk. This can be helped by excessive planning around different time zones and finding time slots with overlapping working hours that are suitable for everyone involved. Consistency with schedules, timely communication ahead of the deadline, making sure that there is a time bumper for unforeseeable situations, clearly communicating your needs may be helpful as well. Tips for distributed Agile team management We have mentioned and suggested possible solutions for all the big-picture issues that may come in the way of the efficient work of your team. Here are a few more quick tips that you might find helpful for managing your distributed Agile teams: Build a team that works well together. Your team should bring together people who show a high level of professionalism, who are motivated and committed to the common goal, etc. Build trust and transparency. This can be obtained with proper reporting and efficient information flows. Make communication as easy as possible. This means efficient time management and scheduling, finding the right tools and encouraging your team to use them. Co-locate development teams with their Product Owner. As mentioned above, teams work best if they are able to be self-sufficient and function without any restraints or major dependencies. A Product Owner can play a big role in achieving this for your remote development team. Get training from an Agile coach not when you’re in the bottleneck, but on the start. Training for all teams helps to understand for every member Agile practices better, his/her role within Agile process and act better as a team then. Also, the neutral view and recommendations from a third-party expert can reveal for you many insights and points to improve your team efficiency. As it was in the case when our Agile experts conducted training for Casumo’s team that helped them achieve more efficient collaboration. Organize offline activities and events. If possible, find the time to bring your team together. Let them mingle and build a relationship. Minimize delays and wait times. At daily stand-ups address not only your work for the day but issues that may hinder your work tomorrow and further down the week. Be aware of possible dependencies and blockers. Summary Although designed originally for close in-person cooperation, Agile gives distributed teams the means to manage their workflow and address all the shortcoming of working remotely. Distributed development best practices correlate with many Agile principles and when equipped with the right tools, remote Agile teams are empowered to accelerate development and put out top-quality software on the market as fast as co-located teams with a bonus of smart budgeting and saved costs from engaging teams from other countries. So don't hesitate to step into Agile, as its benefits are obvious. Even in case, you feel struggling with implementing it, check our Agile consulting and coaching services that help to implement Agile in your team and organization considering the specifics of your project and industry.