Challenges and Solutions
Since the client’s project is a startup, the tasks’ distribution causes particular logistics issues that directly affect the teams’ interactions. This is likely to occur at the early project stages when the teams aren’t used to each other’s methods and still have specific communication issues. Thus, one of our key goals was to coordinate all plans and expectations with the other teams to avoid unnecessary work and causing problems for other participants.
To address this challenge, it’s worth preparing specifications in advance in a tool like Swagger. It allows all distributed team members to understand each other’s goals better and, thus, settle a well-organized workflow.
During the initial development stages, there were certain misunderstandings among the teams working on the project. However, we resolved all these issues with quality communication and compromises. The team members should do their best for the sake of workflow efficiency. Well-established communication is the key to a distributed team’s success.
We started using emails and Discord, but these means of communication proved inconvenient, so we moved to a shared workspace in Slack. We created channels for the following purposes:
- An internal channel for our team.
- A channel for communication with the backend and API team.
- Additional channels for group chats with managers.
Slack is a highly beneficial tool that helps distributed teams keep everything in one place, quickly resolve issues, and stay in touch in all channels.
Besides, we use Jira on the client’s side for effective project management. It also helps us save time by reducing extra calls and meetings. Moreover, instead of wasting time on unnecessary bureaucracy, we directly tag those who work on specific tasks without decision-makers and hierarchical involvement.
Additionally, we adjusted specific bots in our chats. They are triggered at the end of the working day, invoking cross-team communication. Thus, the questions are discussed immediately in the channels, which reduces the need for regular time-consuming meetings.
Finally, the product owner supplies us with all necessary information and clarifies the problematic points, including the requirements and updates related to the backend.
Meetings and Calls
Before the product’s beta version was released, we conducted daily meetings to ask questions, get the requirements clarification, and share our problems that hindered the development process. Such meetings’ key goal is to address the challenges as soon as they arise and report the development progress immediately. Also, that’s where we agree upon release dates, sprint plans, milestones, and more.
Additionally, every two or three days, we conduct sprint reviews. This is necessary because of constant changes in the scope of work. In meetings such, we correct and update the sprint plan in real-time.
Finally, we have regular sync-up meetings with other teams. We discuss our common issues during these calls to ensure everybody is on the same page.
Internal Communication Flow
As for our internal communication, we stay in constant touch and conduct daily meetings. Two of them are voice or video calls, and the others are in chats which saves much time. In addition, to discuss some minor issues, we text or call each other when necessary.
Our team members discuss all technical decisions, libraries, approaches, and more at the weekly technical meeting. Typically, we pin the related questions in our chat, and later everyone tells about their progress, achievements, and failures. It allows us to keep up with the latest events related to the rapidly developing project.
A sprint plan is also designed for two weeks, which is pinned to the channel indicating the deadline and the team member responsible for the task. The sprint plan review takes place every two or three days.
Besides, the developers discuss the workflow challenges, build refactoring plans, and discuss essential questions during retrospective meetings. The calls for discussing new features, requirements, and task decomposition may also occur if required.
Here are some other practices we apply to improve communication in our team.
- Set Github actions with tags and labels to accelerate the review.
- Make personal calls to discuss urgent and critical tasks.
- Inform other team members about our absence or schedule changes in the chat.
- Show the current results at intermediate project stages to reduce misunderstandings regarding the scope of work.
- Clearly express our expectations from sprints.
- Give the reasons for the implemented changes that weren’t agreed upon.
To keep our team members’ productivity and involvement high, we organize plans for their development. Each employee has a 1-2-1 meeting every three months with team leads and managers. We discuss their interest in current tasks and desire to develop within the project.
It’s also worth providing each new team member with a mentor responsible for their effective onboarding. The mentors should explain business logic, project, team, and internal processes to newcomers. This mentoring process may last up to two months. It helps new members feel more confident and aware of the project’s specifics.
Finally, there’s a value in using videos to pass information to distributed team members. We often use this approach to explain the project’s specifics to new employees. The project manager records videos and describes how the knowledge base app works. We store the videos with the key team’s calls and discussions about new features on a private YouTube channel, while the base with all links is in Confluence.
We chose YouTube since it has convenient tags that allow quick search.
This approach applies to any task. For example, you can make a video demonstrating the design layout’s functionality for a future project. Then, the one who will make the layout can watch how the features work, see some interaction scenarios and get the buttons’ descriptions.
Also, this method may be convenient for retrospectives. It can help track how a particular feature has changed and what ideas of its realization have been considered. Some of them might not have been used for an MVP but can be helpful for the following development stages.
Here are several key reasons for recording such videos.
- It enables storing any data, regardless of whether the person who received them still works for the company or not.
- It helps answer the questions that generally arise at the beginning and lead to more detailed questions that can help with new team members’ immersion.
- Q&A sessions enable asking additional questions in real-time after watching a particular video.
How to Make Work in Distributed Development Teams Beneficial, Not Stressful
Managing a distributed development team requires a well-established and meticulous approach. At first glance, such a model might seem quite complex and challenging. However, the distributed team model provides modern businesses with numerous opportunities and benefits with the proper organization, effective project management, and powerful tools and techniques.
With an experienced tech partner and the right approach to management, turning to the distributed team model will likely help you achieve your business goals painlessly and effectively.