How to Manage Distributed Teams
Learn more about the real experience of managing distributed teams
Join the DZone community and get the full member experience.Join For Free
Finding and hiring all necessary talents to build your digital product is challenging these days. As a result, many businesses opt for alternative solutions and outsource certain parts of their projects. Thus, they can expand expertise, achieve greater flexibility, improve productivity, and reduce costs.
Among outsourcing models, distributed software development teams are worth considering. This model involves hiring remote specialists in other regions, countries, or continents. It gives you access to a global IT talent pool. Thus, you can choose reliable tech partners regardless of geography. Distributed teams use multiple tools and technologies for communication, planning, and managing the project.
This post will share insights, valuable tips, and efficient techniques my company uses when managing a distributed software development team’s workflow.
What Is the Difference Between Distributed Teams and Remote Workers?
When outsourcing digital product development, many get confused about the difference between various models businesses can opt for.
So what’s the difference between building a distributed software development team and hiring remote specialists? Let’s clarify these terms to find out.
Remote software development or virtual team is a group of employees who are not located in your office but are considered a part of your in-house team. They work communicating via chats, video calls, and online meetings.
In most cases, you can still keep your core team in the office, entrusting specific tasks to remote workers. Accordingly, the management and control over the workflow remain your responsibility. It means that you should ensure your remote employees fit into its culture. Also, you will have to conduct onboarding, control the specialists’ professional development, and deal with HR management to retain your team members.
At the same time, with distributed teams, you won’t need to be directly engaged in all the above processes. Instead, the vendor who has provided you with the team takes up all these responsibilities.
A distributed development team is a typical one with the outsourcing model. It involves hiring several vendors or independent contractors working from different locations.
Unlike virtual teams, distributed ones aren’t centralized. Each of them may work on a particular aspect of the project. A project manager ensures good organization and control over the workflow. Also, distributed teams should use effective communication and collaboration tools that allow all the stakeholders and team members to be on the same page.
In a nutshell, a distributed team collaborates with two companies where everyone does what they are best at. The startup covers the ideas, strategy, funding, and other business processes, while a vendor deals with staffing, retention, and implementation of your ideas.
Such distribution of roles is often quite helpful. Why? Because the competition for the best talent is extremely tough. So startups lack competencies for hiring and retaining suitable candidates.
What Are the Benefits of Distributed Development Teams?
A distributed model can grant access to much wider staffing opportunities, a flexible approach to the working process, and the team’s agility which is in great demand today.
The key advantages of building a distributed team for your software product development are here.
- Increased flexibility. The distributed model itself is flexible in terms of staffing and project management. The hired vendor can add the required expertise without the client’s involvement, so you don’t waste time and effort when scaling up the project.
- Wide talent pool. The fast-growing IT talent shortage is one of the critical challenges for today’s business. And you can address it with a distributed team model that provides access to the global talent pool.
- Agile approach. The agile methodology involves setting goals and achieving them faster by conducting short yet efficient sprints. Distributed teams often turn to this approach, striving for better organization and adapting to requirements’ changes.
- Cost-efficiency. Turning to an offshore vendor or building a distributed team is much cheaper than in-house solutions. Instead of substantial labor expenses, you can invest in more urgent business needs.
- Productivity. Distributed teams organize adequate communication flow with multiple software and tools. It can also facilitate various processes, from project management to documentation maintenance.
- Effective project management. Distributed team model allows the clients not to waste time dealing with numerous management issues. Many minor needs related to staffing, team expansion, risk management, backlog updates, etc., are executed on the vendor’s side.
Secrets and Hacks of Distributed Team Management
Our team has worked on numerous projects to meet our clients’ expectations and individual requirements. One of our main principles is to make our clients feel no difference between their in-house team and our remote professionals joining the project.
In particular, we have experience working under a distributed software development team model. While dealing with such projects, we have developed specific tactics and project management techniques that have already proven their effectiveness.
I want to share some of the most valuable insights on managing a distributed development team.
Our Best Experience
The product we’ve worked on is complex software for monitoring and managing cloud resources. In a nutshell, it’s a product that strives to facilitate DevOps’ work by providing them with multiple metrics, system health checks, debug features, and more. We have been working on this project for more than two years.
The distributed team consists of three parts:
- The client’s in-house team in the USA (more than twenty specialists, 5 or 6 of them are in constant touch with us).
- Our team (10 specialists, including 5 developers).
- Another team from Eastern Europe (7 specialists).
Our team works on the project’s UI and front-end development. As a result, the overall distributed team is quite large, while the project is complicated and experiences regular changes.
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 such meetings, 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 might 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.
Opinions expressed by DZone contributors are their own.