When thinking about working with remote teams, companies are hesitant about moving their agile processes online. They have established a regular meeting schedule, daily stand-ups, retrospectives, their team is tight and works together from the same office. Everything works fine just the way it is. How would you achieve all of it by working remotely?
Working with distributed teams for over 6 years, I've had the experience to be part of both companies that improvise, as well as companies that have invested a lot in their remote processes. More often than not, those processes were based on the foundations of traditional Agile methodologies. And they make all the difference in team performance.
So, how to implement your agile processes in a distributed team? Here’s how:
Encourage Ongoing Communication
Although many people think that software development is a purely technical process, this is not the case. Software development is also a social process and relies on trust built between individuals.
Personal connections are essential for the success of any agile remote team. A mutual understanding across the team can build trust, reduce missed expectations, and enhance employee morale.
Allow quality time for the team to get to know each other. Agile visionaries strongly believed that teamwork is crucial to delivering great software. All great agile teams embody "we" rather than “I." Luckily, there are several ways how you can bring the whole team closer together:
- Video conferences can close the gap between teams, especially for agile remote teams.
- Hold regular 1:1 video chat sessions.
- Team members will benefit from regular facetime. Annual retreats are highly welcome.
- Use a content management system where team members can easily browse for updates across the team.
- Your remote team can use virtual coffee breaks, which are video calls, to take breaks and socialize. It’s a great way for employees to share what they’ve been up to lately outside of work.
- Have you tried internal blogging? This practice has brought many colleagues closer together.
Set Up an Online Planning Board for Managing Your Project
From sticky notes and columns representing backlog and current stories to modern tools for project management, the Agile processes have evolved over time. You can easily translate your conference room planning board to its online replica. When talking about tools for agile project management, Jira is the lead, with Trello being the close second.
What are the benefits of using Jira for project management in an agile environment?
If you’re leading a complex project, with a lot of dependencies between tasks and team members, using Jira for project management is your best choice. It provides you with an initial setup depending on the methodology you choose and it comes with Scrum and Kanban boards out of the box.
Jira allows you to customize the way your tickets are completed, add workflows when moving the ticket from one phase to another and restrict the team to not be able to complete a task without executing certain steps. If you’d like to dig into it, they have a detailed guide about creating workflows.
What are the benefits of using Trello for agile project management?
Trello is a simpler, but still very powerful agile management tool. Unlike Jira, Trello comes with a clean slate where you can create your own planning board by adding columns of your choice. You can decide to base it on existing methodologies or do your own hybrid. A common practice when using Trello as a planning board is to have the basic Backlog, To Do, In Progress, In Review and Done columns. Then, you move the tickets through these stages until they’re completed.
Trello is ideal for small teams and it’s free if you don’t need any advanced features or integrations.
In a nutshell, this is what you should know about agile project management tools:
- Jira is the best agile project management software.
- Jira is the ideal agile project management tool if you’re leading a complex project.
- If you need a simpler agile project management tool, Trello can be your best choice.
- Trello is designed for smaller teams and has a free version with limited features.
Schedule Daily Standups
Even with in-house teams, it becomes a practice to execute the daily standups online, especially in large offices where people are located on different floors. Then, why would it be a problem to take them completely online?
The technology has developed so much, that when it comes to conference calls it doesn’t matter if you’re next door or on the other end of the world. With tools like Zoom and Google Meet, you can schedule calls with the whole team, do online presentation through a screen share, and even record the sessions.
Furthermore, if you’re not a fan of meetings, you can go a step further and integrate asynchronous Slack stand-ups. Using a Slack bot, everyone at the team can share their daily update in your Slack channel. Then, you can schedule a call only if there’s some blocker to resolve or some challenge to tackle together.
All in all, if you want to take your agile daily standups online, you can:
- Use tools like Zoom and Google Meet.
- Schedule calls with the entire team.
- Do online presentation through a screen share.
- Record the sessions.
Iteration Planning Meetings
When you usually do the agile iteration planning meetings, you probably seat around the table, designate a person to lead the meeting and present the backlog to the whole team. Then, you all go through the backlog items and decide on the priorities. It’s pretty much the same when you do it remotely.
Once everyone joins the planning conference call, the person who leads the meeting can open the project planning board and present it to the rest of the team through a screen share. It’s a good practice to record these meetings, so everyone can go back to them in case they need to clarify something further on.
Initiating a discussion among the team can be a challenge when people don’t see each other. To avoid silence or having multiple people talking at once, you can create a practice of going around the room if your team is small. For larger teams, you can try the “Raise a hand” button that Zoom offers - it’s the online equivalent of raising a hand in an office meeting.
If you want to go a step further, you can use an agile estimating and planning tool like Planning Poker to set up estimation sessions and involve all team members. The tool will then calculate the most appropriate estimation for every story based on all inputs.
Here’s how to do agile iteration planning meetings online:
- Have a person to lead the agile iteration planning meeting.
- Present the project planning board to the team through a screen share.
- Initiate a discussion.
- Record the meeting for further reference.
Demonstrations and Story Walks
After completing a story, make sure to schedule an online meeting with the whole team and the product owner where you can demonstrate the functionality. One person should be leading the story walk. Make sure to choose someone who’s been involved in developing all functionalities and is able to fluently demonstrate everything.
A hint about story walks: The presenter should always share only the screen that’s relevant to the other attendees. You don’t want Slack messages popping up while presenting an important feature in front of the product owner. It’s distracting and sometimes even embarrassing, so make sure to communicate this with your team.
Additionally, for web development teams, you might want to consider Google Chrome’s split personalities. Chrome allows you to create separate browser instances and avoid having private bookmarks displayed while presenting a business feature. That doesn’t only contribute to a more professional appearance during the demonstration, but it also increases the developer’s productivity.
To sum up, this is how you can demonstrate the functionalities of the product online:
- Schedule an online meeting with the whole team and the product owner.
- Have one person to lead the story walk.
- The presenter should share only the screen that’s relevant to the team.
- Fluently demonstrate the functionalities.
Define the Acceptance Criteria Well
Defining the acceptance criteria is a step you don’t want to miss if you’d like to avoid the back and forth with the development team. You can do it at the iteration planning meeting, after prioritizing the backlog items or you can schedule a separate meeting for the acceptance criteria. Whatever your approach is, it’s important that the product owner is present at this meeting and you define the story requirements in details.
Once you’ve set up the criteria, make sure you add it to the ticket in your planning board. If you use an agile project management tool like Jira, you can also implement advanced workflows when a task is moved from one state to another. A good approach is listing the acceptance criteria in a popup and asking the developer to confirm before moving the ticket to testing. This will increase accountability and reduce the accidental misses of the acceptance criteria.
To avoid the back and forth with the development team, this is what you can do:
- Define the acceptance criteria in detail.
- You can do this either during the iteration planning meeting or you can schedule a separate online meeting.
- The product owner should be present at this meeting.
- Add the criteria to the ticket in your planning board.
Create a Release Schedule
Creating a realistic release schedule and sticking to it can sometimes be a challenge. What’s important is to outline important deadlines and targets and prioritize the stories accordingly. When you have tight deadlines, try adjusting the priorities instead of trying to fit everything and burning out your team.
A good approach is using the Pareto Principle: 20% of your backlog items make for 80% of the desired functionality. All you need to do is decide which ones are those and tackle the rest later.
For managing the whole release cycle, it’s a good idea to set up a continuous integration using a tool like Jenkins. This will help you automatically deploy to your testing environments and execute unit tests to make sure things will run smoothly.
In addition to that, make sure to set up a good branching strategy and create a practice of working with pull requests. You can have a team leader to do the code reviews, or you can equally split the responsibility between the team members. What’s important is that you have the coding standards set and the code is evaluated and approved against them early on in the process.
Finally, it’s a great practice to schedule retrospective meetings after every release. The purpose of these meetings is to discuss everything that went wrong, define improvement points and emphasize things that went well and should be repeated for future iterations. Retrospectives have a lot of impact on the performance of the team.
In short, here’s how you can overcome the challenge of agile release management:
- Outline important deadlines and targets.
- Prioritize the stories accordingly.
- Set up a continuous integration to manage the whole release cycle.
- Set up a good branching strategy.
- Create a practice of working with pull requests.
- Equally split the responsibility between the team members.
- Schedule online retrospective meetings after every release.
Structure the Team Knowledge
When your whole team is in the same office, it’s easy to get up and go to a colleague’s desk to ask a question. It’s unproductive but easy. When your team is remote, though, you can’t always rely on synchronous communication with all developers in the team.
To be able to work seamlessly in a remote environment, you need all the important information documented well. Starting from Google Drive as the simplest option, through GitHub wikis until Confluence pages that allow for more advanced usage, you have plenty of agile tools to choose from for documenting your processes. What’s important is that you invest some time in preparing them and keeping them up to date. And, of course, everyone needs to know where to find what they need, so make sure to communicate that well.
In a nutshell, here’s how to structure the team knowledge when working remotely:
- Have all the important information documented well.
- You can use agile tools like Google Drive, GitHub wiki, or Confluence pages.
- Keep the documents up-to-date.
- Make sure everyone on the team knows where to find the information they need.
Agile development among distributed teams is slowly becoming the norm. Although many companies are still skeptical to adopt the agile mindset, with additional efforts and slight modifications, agility and distributed teams can nicely complement each other. One thing is certain: with organizations going global, we’ll see more distributed agile teams in software development.
To recap, implementing agile processes in distributed teams requires:
- Encouraging ongoing communication.
- Setting up an online planning board.
- Scheduling daily standups.
- Holding iteration planning meetings.
- Scheduling an online meeting to demonstrate the functionality.
- Defining the acceptance criteria.
- Creating a release schedule.
- Structuring the team knowledge.