The wide popularity of agile methodology in current software development is hard to overestimate. Advent of agile techniques allowed to save costs and greatly shortened time to market for many companies. However, one of the basic principle of agile methodology is importance of face-to-face communications, which doesn’t jell well with teams where members are geographically dispersed. Management of agile distributed teams is always a struggle, but reality of the situation is that most companies employ a distributed team in one form or the other, either through the use of outsourcing, or simply by the virtue of some people working from home or from different city.
People tend to intrinsically want to do a good job. Reality of the situation is that it is no harder to succeed with a geographically distributed agile team, than it is with a co-located one. At Apriorit we provide outsourcing development services for a wide range of very diverse clients, from large enterprises to newly formed startups. Our core offer – effective and efficient managed agile teams. We have a lot of practical experience in working and succeeding as a part of distributed teams employing agile techniques and tools, and we know a lot about managing a distributed teams. We created this article in order to share that experience with you.
But before we start spilling our tips for managing a distributed development teams, let us define what a distributed team actually is and what are the advantages and disadvantages to having one.
What is a distributed team
Geographical distribution of the members of your team is the key factor in deciding on how to manage them. There are many approaches to classifying teams based on how geographically dispersed they are, but we tend to stick to these three main groups:
- Co-located teams. Teams where all members are physically located in a single room. Classic co-located team in agile should include business planners, which is almost never the case in real life. Much more common is the next two types of distribution.
- Teams located separately from business planners. This type of distribution is common when using outsourcing. Outsourcing teams tend to be co-located in a single place, usually offshore, while business planners are located onshore. From the management perspective, such teams should be managed the same way as fully dispersed teams.
- Fully geographically dispersed team. Teams, where various members are spread out through various geographical locations. Such team composition is also relatively common and usually happens when only some positions are outsourced or when the team employs freelancers.
It is a hard undisputed fact that most of the agile teams are geographically distributed. In fact, the real number of distributed teams is 61% according to 2014 Software development at scale survey.
So what are the reasons for such geographical distribution? We can name a few:
- Specific expertise requirements. Sometimes projects require a very specific and rare expertise that may be difficult or impossible to find in certain locations. When there is only so many specialists in the world with said knowledge and experience, many teams have no other choice than to go distributed.
- Team size. Sometimes, even if there are people with required level of expertise in a specific subject, it can be hard to find enough of them. Demand for qualified specialists in software development is so big, that there may simply be not enough people available locally. Going distributed speeds up recruitment process tremendously.
- Company structure. Many companies, especially large ones, already operate multiple remote offices in various parts of the world. In this case, distributed team can be a direct result of an existing company structure.
From this reasoning follows the main set of advantages that geographically distributed teams provide:
- Access to the large pool of talent. People willing to go distributed immediately gain access to a worldwide pool of talent, which allows to find qualified team members much easier and faster.
- Cost-saving. In many cases, distributed teams allow for cost saving, because they open an opportunity to hire in parts of the world where wages are lower. However, this savings can be off-set if the quality of the work is not satisfactory. Therefore, from the cost-saving standpoint, it is very important to work only with reputable outsourcing companies, rather than with individual freelancers.
However, as you would expect, distributed teams are much weaker when it comes to communication. The main disadvantages of distributed teams can be summarized as follows:
- Ineffective communication. It may be very hard to get your point across and ensure that everybody is on the same page when using electronic means of communications, such as conference calls and e-mails. What’s more important, is that it is very hard to immediately reach to necessary people and start discussing any potential problems.
- Time zone differences. It can be very challenging to organize and get together for conference calls or discussions when various members on the team operate on different time zones. If the time difference is longer than the regular working day, it means that at least some members of the team will need to participate in calls and meeting at an inconvenient time.
- Cultural differences and language barriers. Cultural differences generally do not have a big impact on distributed teams, but they sometimes may impede the understanding of certain messages. If your team is heavily culturally diverse, it is important to keep an eye for potential misunderstandings due to cultural differences.
While these communication troubles make distributed team management much more challenging, it is nothing that can’t be fixed by the right approach and a little bit of experience. And the main crux of the solution to the question of how to manage a distributed team is that everybody should be accommodated and that team culture building starts from the first day of work. And with this in mind, we presenting you with what we think are top 5 best tips for managing distributed teams.
Tip 1 – Start building a team culture with initial meeting
Distributed team management should start with the initial meeting. If your team is working within driving distance of each other, such a meeting is a no-brainer, and should include all the members of the team. However, in practice that is rarely the case. There are many schools of thought on whether you should fly people around or conduct conference calls. While face-to-face meetings indeed tend to be very effective, flying all the team members can take a lot of time and is rather costly. If you’re willing to allocate a budget to fly people around, it may be best to fly at least key team members for the initial meeting with project planners. If you’re set on a conference call, it is best to bring all the members of the team.
The main point of this initial meeting is to clearly outline the goals of the project and make sure that everybody is on the same page. Setting a concrete understandable goal is crucial in making a group of people into a team, as this is precisely what allows them to consolidate their efforts and start working together. Therefore, a verbal communication in this case is very important.
Tip 2 – Do not abuse conference calls
There is no need to abuse conference calls or face-to-face meetings. They tend to take a lot of time and resources, while not providing much of a result. It is best to set up asynchronous communication channels for all members of the team, while having only short regular calls with couple of key people once a week. Such calls will basically serve as an equivalent of coordination meetings or scrums for distributed teams. Organizing such calls may be difficult if everybody is on different time zones. In this case, you need to choose one time that is the most convenient for everybody and stick to it. If for whatever reason this is not possible, then it is best to rotate the time of the call, alternating between something that is convenient for one party and another.
Tip 3 – Set up effective asynchronous communications
Setting up effective and efficient communication is the biggest challenge when it comes to managing distributed teams. As mentioned above, while conference calls may look like the best solution that will allow you to simulate environment where everybody is co-located, in practice, this is not the case. Conference calls require a lot of time to prepare and a lot of attention. It is much more efficient to use asynchronous communications, such as e-mails and chats.
It is a good practice to set-up a team-wide chat where anybody can ask questions or discuss problems. In addition to an e-mail, such a chat can cover most of your communication needs. It is also a good practice to set up a forum or a wiki in order to allow the team to share experience and knowledge on the project. This will help to facilitate teamwork and solve problems faster.
Face-to-face meeting may be required in case of a major problem. Such meetings are great at clearing miscommunication and reinstating the motivation to the team. But again, constant flying can be expensive and can take a lot of time, so in most cases it is best to stick to conference calls.
Another good practice, especially with regards to outsourcing, is for project planners or owners to speak directly with developers. At Apriorit we introduce our developers to the clients by request, allowing for a much closer communication. This allows clients to make sure that their project is handled by skilful and experienced engineers who are fully qualified for the job.
Another important part when managing distributed teams, is to account for the learning curve for all team members. Usually, team members need a little time to get used to the workflow you want to establish. This is especially true for geographically dispersed teams, where part of the team is outsourced. Required time should be accounted for and efforts should be taken to seamlessly integrate all team members into the required workflow as fast as possible.
Tip 4 – Use a ticketing system
While speaking at length about the communication within distributed teams, one of the most important communication tools has been left unmentioned. This tool is of course an issue management and bug tracking system. It is paramount for a distributed team to employ and constantly use such a system. Every feature request and every issue should be written as a ticket coupled with relevant comments. This keeps all the crucial information written and accessible in a single place and makes communication much more effective. The right people will be able to see the issue and immediately start to work on it. Tickets can be easily organized into various milestones, making a great virtual replacement for a classic agile physical task boards and Post-it notes.
Tip 5 – Create automatic builds and standardize your code
Another essential tool that is necessary for both distributed and co-located teams is automatic build generation. Setting up automatic build generation system will allow all members of the team to have a single latest build to run and test. Such a build will keep everybody on the same page and will help to make sure that everybody knows on what to work next.
It is also worth noting that developers will often be able to get a lot of information by simply looking at the code of the project. Maintaining organized repository is a no-brainer, but what’s important is to enforce a set of unified code standards that will make it easy for your team members to read each other code. We have our own code standards at Apriorit, but we will readily adapt the standards of our clients if the project requires it. Having standardised code will greatly speed up code reviews and allow developers to communicate and solve issues quicker.
Managed teams – solution to minimize risks
Tips and best practices, mentioned in this article, is something that we at Apriorit practice with our clients to a great success. As it stands, while managing distributed teams is a challenge, the right approach is the key. By unifying the team around a single goal and setting up effective and efficient communication channels inside the team, you will be able to alleviate most difficulties with using distributed teams and enjoy unique benefits that such teams provide.
However, nowadays, some outsourcing companies provide teams that are already fully managed. We at Apriorit made it a part of our core offer long ago and today we assign at least one part-time outsourced project manager to every project we work on. Delegating team micromanagement to your outsourcing provider gives you several benefits:
Much more efficient communication channel – project manager is co-located with the outsourcing team and serves as a single point of contact for you delivering statuses and reports; at the same time, he or she becomes your representative in the team transmitting project goals and adjusting everyday tasks priorities to them. Project manager within an outsourcing team becomes your first line of problem-solving, reacting quickly and saving your management resources.
Risk mitigation – project manager on the outsourcing provider side takes responsibility for managing and motivating a team, ensuring that deliverables are of high quality and coming within schedule and budget. This allows to mitigate risks with regards to team management, transferring them away from the client to outsourcing provider.
Cost saving – by not micromanaging a team yourself, you’re saving time of your managers and money for the company as a result. Moreover, if your company doesn’t have an available project manager, you would need to hire or contract one in order to manage a team yourself. Employing managed teams saves you from making any additional hires.
Efficient use of resources – managed teams allow you to more efficiently use your resources. You can easily assign your project managers to other project, while outsourcing provider manages their team themselves.
Therefore, using a managed team is a sure way to mitigate risks associated with managing a distributed team by saving time and money in the process.
Our project managers at Apriorit have extensive experience ensuring consistent high quality deliveries within schedule. Of course, some clients want to excerpt greater control over the development process and for such clients we provide all the necessary opportunities to communicate with the team. Ultimately, it’s up to the client whether to take a hands on or hands off approach to managing a team. However, regardless of what approach you choose, by giving the team a goal and focusing on effective communication, you will be able to achieve the same level of success with your distributed team that many co-located teams enjoy.