How to Organize Efficient Work of a Distributed Development Team
Modern information and communication technologies have changed the traditional working environment, and now a business has the ability to hire people from different parts of the world without relocating them. People no longer have to be physically on site to work on the same project.
The term “distributed team” is widely used and denotes a group of geographically dispersed people that either relate to the same organization or unite several organizations and work to achieve a common goal. We will consider software as the goal.
Forming a Team
As a rule, a software development team includes the following roles:
- Product Team:
– Product Manager (Product Owner)
– Support Team
– Business Analyst
– Architect (Engineer)
- Project Team:
– Project Manager
– Team Lead
– Developers (can be divided into Front-end and Back-end teams, each team has its Team Lead)
– QA Lead
– QA Engineers
Sure, this list isn’t obligatory because different approaches to team forming can be taken, e.g. as follows:
- Each team is located in one place, but different teams can be located separately. Advantages: a team works effectively, a team lead can more easily communicate with team members. Disadvantages: inter-team communication is mainly between team leads.
- Developers and engineers from different teams are present in every location. Advantages: teams are cross-functional, and because of this, team efficiency is improved. Disadvantages: if team management is not established, teamwork breaks down.
However a team is formed, the critical factor is communication between teams and team members. Daily meetings, conference calls, instant messaging and e-mails are all tools that should be used to set up effective collaboration. When making a choice, the most suitable media for a particular situation should be used. It can be Skype, Hangout, Gmail or any other tool. No one can point out the only technology which leads to less misunderstanding, but keep in mind that video works better than audio, synchronous communication (in real time, like a phone call or instant messaging) works better than asynchronous (with delays between sending and receiving messages, like e-mails).
When establishing communication, there is a challenge most distributed teams are faced with – time zones. For instance, a part of a distributed team can be located in the USA, and another part in Ukraine. The difference between time zones may be 6 to 10 hours. In this case, a joint meeting can occur in the evening for one team and in the morning for another. One team reports about the work done during the day, another team about plans for the day.
It is important to track a team or a team member from being without work if some tasks depend on other tasks to be completed by others. Project management tools (e.g. JIRA) help you meet this challenge as they let you assign tasks. monitor their performance and find the status of a particular person or task in real time.
Tasks and Responsibility
Agile/Scrum methodology helps organize the effective management of a distributed team in the best way. However, these principles shouldn’t always be followed to the letter, you should use what’s most helpful for the particular team. For example, participating in planning sprints can ensure that sprint goals are understood and, accordingly, separate tasks are better performed.
One more motivating factor for a team is the opportunity to offer suggestions and to be heard. Then, developers mainly offer new useful features or ways of fulfilling some functions, while QA engineers often make recommendations for optimizing the system, making it organic and user-friendly. If the suggestions are not just heard, but also accepted or rejected reasonably, developers and engineers feel like a team that brings ideas to life, not just a bunch of coders. Such insight increases personal concern for the final product and makes people willing to take responsibility for offered solutions.
Dealing with problems
If problems arise, like a critical bug is found and fixing it will take time and affects system functionality, there is a risk that the deadline will not be met. In this case, only close communication between teams will lead to the best decision as to how to correct the defect, what to change, whether to throw out some tasks or to postpone the release date.
The effective work of a distributed team for software development can be the result of many factors, such as:
- having respect for people from different cultures and backgrounds;
- understanding the goals and accepting personal responsibility;
- established communication between locations and within every location.
The manager of every location (Delivery Manager or Team Lead) sets effective team collaboration considering the personal characteristics of each team member and requirements for the whole team.
One of the brightest indicators of a good manager is the work that gets done in his/her absence. If a manager holds everything in his/her hands, team members don’t show initiative and take no responsibility, then even a single day of absence can halt the team’s work. On the contrary, if all processes are established properly, the manager can leave for a few days or even weeks and the project won’t be negatively affected. All the work will be done, as usual, on time and with a high level of quality.