Maintaining a solid level of organization and productivity can be a challenge with teams that are distributed remotely. Remote collaboration does not come natural to everyone, but with some guidance and Agile Methodology practices any team can stay on track. Our EpiAnalyst team at Episource was distributed remotely even before the pandemic. We have been iteratively refining how we organize and run our team for years and may have some insights and suggestions that could prove useful for you and your team.
In Agile Software Development, the idea is that there are self-organizing and cross-functional teams that collaborate in order to create and maintain software solutions in quick, successive iterations. We call these iterations sprints, which are basically predetermined time periods in which the team works at completing a set of goals/projects. Our EpiAnalyst team has 2 week sprints. Throughout these 2 week sprints we have several meetings and rituals which we adhere to in order to keep us on track. Sometimes we do video conferences so that we can have face to face interactions and sometimes we use software solutions that allow us to have asynchronous interactions.
At the beginning of each sprint our team meets together to agree upon what tasks we will tackle for the sprint. For our team this is a discussion between the developers and the product owners. Usually the tasks have already been chosen, prioritized, assigned, and discussed in different meetings (which shall be discussed further down) in the previous sprint. This meeting is for any further discussion that needs to be had or actions that need to be taken before the team agrees on and commits to the workload for the sprint.
For this meeting we do meet through a video conference call. The sprint cannot start until the team is in agreement. This type of discussion usually involves a lot of questions and negotiation which would take too long through a messenger.
Every day we report our progress to the rest of the team. We report 3 things:
- What we worked on yesterday.
- What we will be working on today.
- Whether there blockers (anything that is keeping us from finishing our task).
With those 3 updates everyone else on the team should be able to have an understanding of what you’ve done, if you’re on track, if you need any help, and if the team needs to re-prioritize and have you work on something more urgent next.
Our team currently does most of our Daily Standups asynchronously by using Slackbot (DailyBot). Each team member writes their daily progress report to the bot, which then publishes all reports to the team channel. This has several benefits:
- Any timezone. You can have team members on opposite ends of the globe and you won’t have to force some of them to show up to the meeting at an inconvenient time.
- Less context switching. Team members can write their report or read the team’s report when it is most convenient for them without having to stop what they’re working on.
- Less hostage holding. Team members don’t have to sit through conversations about specific projects that only require a subset of the team.
Backlog grooming is a meeting where some of the developers meet with the product owners to discuss what tasks from the backlog should be prioritized and queued up to work on in the next sprint. The task of prioritizing stories is not for junior to mid level developers, so we only require the senior developers to attend this meeting. This way the junior/mid level developers aren’t unnecessarily taken away from the tasks they must work on. This meeting is also handled through a video conference call because once the negotiation that takes during this meeting is handled much quicker face to face than through a messenger.
Once the backlog has been groomed and the next sprint has an outline with the tasks that the team will be taking on, we have a Backlog Refinement meeting. The purpose of this meeting is for the developers to ask any initial questions they may have about the tasks as well as question priority if applicable. The tasks are also soft-assigned (may be reassigned) to developers so that the next sprint takes shape in terms of responsibilities. This meeting is also handled through a video conference call because of how many questions are asked for the refinement. But once the meeting has been held and the developers know their responsibilities for the next sprint they may further investigate asynchronously and come up with more clarifying questions to ask at the next Sprint Planning meeting.
The purpose of the retrospective meeting is for the team to look back on a sprint and ask 3 questions:
- What did we do well?
- What did we not do well?
- What can we do? (either to improve the bad or to continue the good)
Our team uses software (EasyRetro) to keep notes on questions 1 and 2 asynchronously throughout the sprint. Then we meet on a video conference call towards the end of the sprint to discuss. Any action items that come out of the discussion are usually brought up in the next Backlog Grooming if not snuck into the next Sprint Planning meeting.
At the end of the sprint the whole team gets together (developers, product owners, stakeholders) and the developers show off what they’ve been working on for the sprint. This allows developers to take pride in their work. It also allows for the developers to receive feedback and answer any questions that may come up for their implementations. Developers can make last minute modifications if they are small or additional tasks can be planned out for the next sprint if the modifications or additions are significant. This meeting is held through a video conference call but are often recorded so team members who cannot attend it can still view the demo on their own time.
Video conference calls are extremely important to maintaining communication and organization throughout a sprint for a remote team. Not everything has to be face to face though. Sometimes sending a message through Slack or in email is enough. You have to find an appropriate balance for the interactions between your team members.
You also have to find an appropriate balance with scheduling and handling meetings. Some meetings can be optional for a portion of the team while other meetings are absolutely crucial to the team’s success. Scheduling meetings at appropriate cadences and making sure each meeting has a very well defined purpose will keep your team from wasting time.
Hopefully you and your team manage to take some good insight from this article!