by Hristina Efinska
As we are walking in the last quarter of the notorious 2020, we can state one thing for sure: Remote work and distributed teams are here to stay. However, companies can be skeptical about moving their agile processes online when it comes to working remotely. At first glance, why wouldn’t they be? Especially having in mind that Agile was initially intended for teams that are physically located together in the same workspace. Even according to the 12 Principles of the Agile Manifesto: “The most efficient and effective method of conveying information to and within a development team is face-to-face conversation“––the first agile teams were intended to work together physically.
Some challenges arise for distributed software teams:
- Synchronizing teams in different time zones
- Building rapport without face-to-face contact
- Collaboration between different cultures
- Coordinating stand-ups and meetings considering that team members are online at the same time for a limited amount of time
These are genuine problems, but they are far from unsolvable. With almost ten years of experience in staff augmentation and software development services, we can share some insights and strategies to help you narrow the gap between working on-premises and remotely.
Structure Your Teams
Think of your team from a software engineer’s point of view: quality software architecture needs modular design, so design your software accordingly. The same goes for building teams. Every team should be able to develop a single fraction of the project, and by that, successfully reduce the dependence between your teams in different time zones or locations. You will actually make teams autonomous parts of your project or company. When a project requires team members to take part from different locations, they can focus solely on their integration points and APIs.
Code reviews are considered as an important part of the development process for remote teams. Since your people are working at different times, sharing knowledge of the code between teams makes maintenance easier.
Building and Maintaining Rapport
Agile teams need to build solid rapport between team members. This brings trust, reduces misunderstanding, makes self-organization easier, and builds morale and motivation. Take time, as much as possible, to get to know everyone within your distributed teams. A personal touch is a must. Creating strong rapport will lead to smoother communication between teams, which in turn leads to better workflows.
After all, who said that face-to-face meetings have to be offline? Especially these days, when Zoom and Google Hangouts have become our new-normal offices, we encourage using them in order to minimize the gap between distributed agile teams. At Cosmic Development, we are avoiding strictly scheduled Hangouts meetings for intra-team communication. Instead, we strive to create a culture of using video chats even for spontaneous informal conversations and ad-hoc meetings. Needless to say, instant-messaging tools like Slack or Microsoft Teams are very helpful in solving small issues or in simply keeping in touch.
To help address some remote communication challenges within the team, you need to stimulate team members to have one-on-one video sessions whenever possible. These should not be formal, but they still need to be focused on work and oriented around knowledge sharing in a casual way.
Structuring a United Development Culture
Here are the four simple rules our teams follow in order to make remote work easier:
- Overcommunicate decisions and procedures
- Minimize the onboarding friction
- Clearly define terminology
- Create reporting guidelines
Now, let us discuss each of them more thoroughly:
1. Overcommunicate Decisions and Procedures
When members of a distributed agile team make decisions, they need to communicate those decisions thoroughly. That sounds a bit obvious, but it is very easy to forget. Important decisions are often made in informal conversations; they are brainstormed between individuals or discussed spontaneously on calls between individuals. In contrast to this, small decisions are often dismissed as unimportant, especially if we focus on another part of the conversation.
When working in a remote culture, everything, even the minute details, need to be communicated until the whole team starts moving in the same flow.
It is easy to lose meaning or essential information if you announce important decisions via email. Everyone in your dispersed teams needs to understand the decisions, the reasons behind each decision, and how they will be implemented. Team members that are working on outdated information can lead to major setbacks, hitting a blockade, and then re-communicating the whole process costs the team more time than accuracy sharing information in the first place.
2. Minimize the Onboarding Friction
You can tame the “first-day-friction” by utilizing a good onboarding procedure. Remote team members should feel at home right off the bat, which helps build cohesion between team members of different cultures.
3. Clearly Define Terminology
While working with remote teams, clear standards around simple terminology like “complete” and “done” help manage expectations and ease communication. A clear definition of task completion eliminates ambivalence in work. For example, when sending a release that involves work from multiple teams, make sure to make it clear what “complete” means in this particular context: (a) the code needs to be written, (b) pull request created, (c) code needs to be reviewed and tested, (d) and finally integrated into the main codebase.
4. Create Guidelines for Reporting
Distributing the development process means that not everyone is online and ready for work when problems come up. We recommend setting systems and guidelines for troubleshooting, but reports and issue tracking. You will not believe how much easier such systems and guidelines make it for anyone on the team to track down and resolve issues. Code reviews and automated tests should be part of this process as it enables the remote team to make changes and validate them so they will not have any unexpected side effects.
Maximize the Mutual Online Time
The golden hours for remote agile teams are when most of the team members are online at the same time. This is the perfect time for stand-ups, coordination meetings, or one-on-one calls.
For teams that work in different time zones, a stand-up meeting is an excellent opportunity to share their issues, obstacles, or decisions. Having the stand-ups via video calls makes it easy to coordinate and catch-up with the flow, so everyone is up and running as soon as the meeting is done.
Instruct the project manager to closely monitor the entire team’s engagement during the stand-up. If there is an undue tension, or communication is becoming unfocused and counter-productive, your team members will quickly disengage.
Stand-ups do not have to be strictly daily meetings. You can have them a few times per week and use the other days for informal communication. Thus, a stand-up does not have to be just a morning routine, but you can organize it at the most convenient time for everyone that forms part of your remote agile teams.
We all need to adapt and learn how to work within remote teams, communicate efficiently, and grow a cohesive culture. Many large companies have successfully implemented distributed agile workflows long before the COVID-19 pandemic, allowing them to cut costs and work more efficiently. On the other hand, remote work is very easy to implement for small teams that have previously worked together in a common office. Such teams can significantly benefit from the advantages of working remotely.
Stay tuned for Part Two, where we will talk to Bookmark‘s Project Manager about her hands-on experience with managing a remote team.