Managing distributed software development teams
April 22, 2019
“As for me, I am tormented with an everlasting itch for things remote. I love to sail forbidden seas, and land on barbarous coasts.” Herman Melville, Moby-Dick
When talking about working with remote software development teams, productivity is one of the main concerns for those companies in the United States considering it as an option. Is it possible for distributed teams across countries to deliver the same results as fully co-located teams?
As a nearshore software development boutique from South America that works almost exclusively for clients in the US, we would like to share our perspective on the matter and provide some insight into how to effectively manage remote collaboration.
Common myths associated with remote work
To start off, let’s address some of the popular myths surrounding remote collaboration:
Myth #1: Local means better
The true measure of a great developer lies not in their geographical location, but rather in their commitment to quality and their ability to stay up to speed on the latest technologies. It’s also worth keeping in mind that hiring within your area, city or country does not really guarantee that you will get the most talented developers. As a result of talent shortage in the software development industry, local developers in the US are in high demand, so their rates may not always directly correspond to their skill level.
Myth #2: Skilled remote developers are hard to find
While it is true that the massive size of the market for remote development teams can definitely be overwhelming, as a general rule, smaller-sized boutique firms that provide staff augmentation services are the best way to go, as they tend to focus on quality and specialize in a set of specific technologies.
In addition to this, there are also great developers who may not be experts in a singular technology, but who have the ability to learn and excel at their craft. These full stack developers are generally very experienced in a range of different technologies and have a very short learning curve at the time of learning any new ones.
Myth #3: Culture, language and time zone differences hinder productivity
This is a valid concern, but in our opinion it mostly applies to the traditional offshore market overseas. The Nearshore Outsourcing market in Latin America significantly reduces all of these risks, as developers in these countries share both the time zones and cultural values of the US, and most are also English fluent, so integrating them to your team shouldn’t be an issue. It mostly comes down to finding the vendors with the best talent and processes.
Myth #4: Remote collaboration slows down delivery
Time spent by teams communicating remotely as opposed to in person can seem challenging. However, by focusing on having clear communication and documentation processes set in place, there’s no reason your development cycles should suffer at all. Regular check-ins and ongoing communication through Slack and other tools help distributed teams track productivity effectively.
The proper use of these communication tools allows teams to minimize idle times. This way, remote collaboration processes do no longer result in time loss or missed deadlines. By holding daily meetings, sharing constant updates of progress and completed work, and making that daily work visible, you allow the client to be in the loop of everything that’s happening within his project, as if he was sitting by our side.
Our top tips for successful distributed collaboration
Now that we’ve covered the main concerns associated with remote work, let us share some of the most valuable lessons and principles we’ve learned at Vairix by working with teams in the US.
Look for developers with previous remote experience
Ideally, you will want to hire individuals who have proven experience working in distributed team settings to ensure they can deliver results and also avoid any learning curves in areas like communication processes. A key indicator of a great remote developer is their ability to self-manage without needing ongoing supervision, which allows the rest of the team to focus on their own core tasks.
Replicate the in-house work environment
Treating remote work the same way you treat in-house work is crucial for effective collaboration, whether we’re talking about remote work from home, or within a remote co-colocated team. At Vairix we focus heavily on replicating our partners’ everyday work environment, and we go about this in a few different ways.
Not only is all our staff trained and experienced in remote collaboration with clients, but we also understand that a lot of knowledge is shared while being face to face with one’s teammates, which is why we focus heavily on internal communication and team support. This is one of the advantages of partnering with a boutique firm as opposed to an individual contractor or freelancer: our developers are there to support each other whenever needed, which helps advance their skill-learning process and overall performance.
We have a clear internal communication process, and an example of this is that we use Slack not only as a tool to communicate with our peers in the US, but also between ourselves. Using our own internal communication channels helps us assimilate the necessary habits and processes we then use with our partners abroad. We also share a “Rules of Engagement” playbook with our team so they know what is expected in terms of responsive communication with clients.
Have the right tools and processes in place
Both you and your remote contractor will greatly benefit from having an early-on agreement about what communication and project management tools you will be using throughout your collaboration process.
For any casual communication, Slack proves to be the best choice. This is where you can have an internal chat between all the team members and communicate daily during the course of the project.
As for project management, Trello is a great choice where you can work in an Agile environment using sprints. The client can load their own stories and then prioritize them. And it also allows you to track your team’s time spent on each task to measure productivity and be transparent with your client about your work.
It’s also very important to have defined meetings for the different roles involved in the project, such as daily meetings with the development team, planning meetings with everyone involved in the project to define work for the following weeks, and review meetings where progress is reported. Agreeing on this early on will help ensure that every member in the team will allocate time to attend the meetings they should be involved in, and for everybody to be aligned under the same methodology.
By setting up clear processes and choosing the right tools to carry them out, you will guarantee:
That the team is aligned with the goals of the project and the client
That the client can see and measure the progress of the work being done
That there is a record of all the work in tools like Trello, to avoid future miscommunication issues
This allows us to be a step closer to success in a software development project.
Teamwork success boils down to effective communication, and this applies to co-located and distributed teams alike. But in distributed team setups, remote developers should go out of their way to show they are contributing to the team by communicating on a regular and consistent manner. The best way to earn your teammates’ trust and respect is through what we call over-communication.
Let’s look at some examples of what over-communicating looks like in practice:
Be Visible and Available: replicate the routine of a physical office by letting your team know your status at all times. One way to do this is by using Slack (or any others) as a virtual office and greeting your team first thing when you start off every work day, when you break for lunch or any other needs, when you come back from those breaks, and when you finish your day. This way everyone can know when you’re available if they depend on your help, especially in settings where there isn’t much overlap time between distributed teams.
Be Responsive and Transparent: always acknowledge every message you receive from your peers, and provide an answer as soon as possible, like you would in any real life situation. When a person is working remotely and is asked a question they don’t immediately have a definite answer to, the first thing they should do is let their counterpart know, and ask them for the necessary time to solve the issue. A common bad practice is working on getting an answer first, and only then letting the other person know via Slack. The problem with this approach is that the whole process may have taken 15-30 minutes where your counterpart did not receive any answer at all. This is why using Slack as a virtual office is so important: whenever we get a question or get asked for help and we don’t have an instant answer to provide, we will answer back “Let me do some quick research and get back to you on that”, and then do the actual researching. This makes a big difference, as your teammate will know their message has been read and that we’re working on helping with their specific need.
Be Reliable and Predictable: this involves letting your team and clients know what they can expect from your work. They need to know you understand what you’re working on and how you’re going to execute it. A good way to do this is by doing a good job with your project management tool so that the status of the project can be assessed by both sides at any time. Properly reflecting the status of tasks and adding relevant comments to them helps everyone know what you’re working on. A key aspect here is that the client should always be able to understand what we’re going to do. For example, whenever you have a call or meeting with the client and some work gets defined as a priority, you should leave a record of what that decision involves in the appropriate story from your project management tool. This helps avoid any “He said, she said” kind of situations, and also helps improve the dynamic within the meetings themselves, where sometimes things are discussed there and are later forgotten or not clear.
All in all, successful delivery and productivity needn’t be a concern when considering remote collaboration, as long as you’re working with qualified teams and have the right tools and processes in place.
At Vairix we trust and stand by our remote communication process to successfully carry out all our projects and the challenges they entail. If you’re looking to scale your team and would like to try out remote collaboration with us, we can guarantee it will be as effective as having in-house staff by your side.
Get in touch to learn more about our workflow and how we are helping our US partners with their software development efforts.