Finding great developers to build a web or mobile application can be a daunting task. With all the coding bootcamps and online learning platforms, many businesses are still struggling to create highly effective teams in their home countries. Tech giants and startups alike have turned to more cost-effective strategies such as outsourcing to increase efficiency. Outsourcing doesn’t come without its challenges, and navigating those challenges exposes managers to a high level of uncertainty.
An emerging middle-path between recruiting and outsourcing is to hire talent from all around the world. More and more companies, ourselves included, have been experimenting with the idea of distributed (or remote) teams. Building and managing a distributed team has its own set of challenges, which we will address in this article. For the manager who seeks to find a cost-effective solution without compromising project management integrity, this might be the way for you.
What is a distributed team?
A distributed team is a team of people that work in different locations and communicate through the internet.
“A distributed workforce is a workforce that reaches beyond the restrictions of a traditional office environment. A distributed workforce is dispersed geographically over a wide area – domestically or internationally. By installing key technologies, distributed companies enable employees located anywhere to access all of the company’s resources and software such as applications, data, and e-mail without working within the confines of a physical company-operated facility.”
You could have a team of 3 developers working on your web application, a front-end developer living in Ann Arbor, Michigan, a back-end engineer from Denmark and a full-stack wizard from Denver, Colorado. In essence, this would be a distributed team, and if appropriately managed, could yield a serious return on investment.
So you see, you can hire anywhere, inside the U.S or outside. The key is that they work together effectively. We will be going in-depth on how to make that all possible.
Distributed teams vs. outsourcing
Hiring a remote team is different from outsourcing or freelancing because you are still hiring full-time employees. The only difference is that you have to manage them slightly differently than if they were local. By hiring global talent, you are still saving money due to the cost-of-living variances of different cities and countries while freeing yourself from dealing with app development agencies.
In short, you are taking back ownership of the development process instead of relying on a third-party. Great news if you are the hands-on type, but how do you go about finding the right developers to make up your team? Thankfully there are several ways to do just that.
How to build a distributed team
You can go about building a distributed team in two ways. One is to recruit talent manually, and the other is to find a staff augmentation firm. Let’s take a closer look at both options.
1. Recruit talent manually
Recruiting is a difficult task if your brand lacks the recognition to have talent gravitate towards your business. Many companies hire professional recruiters to do the leg work, which adds to your hiring costs upfront. Recruiters will take a percentage of their candidates first-year salary should they get the job.
The best way to put your job offering out there is to leverage remote job boards such as LinkedIn Jobs, RemoteOk, WeWorkRemotely. There are plenty of job boards which you can find with a simple google search.
Unfortunately, this approach isn’t the most effective way for small businesses looking to get their development operations off the ground. Some of the overhead costs associated with hiring employees are insurance, salary, and benefits, etc. Thankfully, there is a cost-effective alternative: staff augmentation.
2. Employing a staff augmentation firm
Manually recruiting talented developers is tricky, with hidden costs of hiring embedded into each process. An alternate approach is to employ a staff augmentation firm to supply a team of experienced developers. This method is precious for small to mid-sized businesses looking to kickstart their development capabilities without having to go through the hassle of hiring.
On the surface, this sounds a lot like outsourcing. Again, you are putting your trust into an agency to deliver value. Here are some significant differences between hiring a staff augmentation firm and an app development agency.
1. Staff augmentation firms allocate developers on a 1-to-1 basis.
App dev agencies must allocate time to multiple projects, which means that none of their developers engage with a single project. Staff augmentation firms allocate a developer to work with their client full-time for however long they need.
2. Staff augmentation firms let you manage your team
Agencies often spread themselves thin and sometimes fail to deliver on their promises due to project management issues or if engineering talent leaves the organization. These situations are not uncommon. Staff augmentation firms allocate developers to be a part of your workforce, allowing you to manage them and take ownership of your project timeline.
One company, Trio, a software engineering house based in Boston that caters to small businesses and startups looking to take their development departments to the next level by allocating engineers. Trio provides on-demand software engineering experts that seamlessly integrate into your organization to fulfill. You can learn more about how Trio can bring your vision to life here.
Managing distributed teams
We’ve gone through the different ways to build a distributed team, but how do you manage a distributed team effectively? Leading groups of bright and talented people is an art that few managers refine and if done poorly can end up with developers walking away from your project. Now add on the complexities of different time-zones, cultures, languages, and personalities. Finally, mix all of that in with project deadlines, bug fixing, testing, and other processes that are essential to the creation of a great application.
Whether you decide to build a distributed team on your own or leverage a staff augmentation firm to supply talent, you will need to navigate these complexities to maximize ROI. Managing highly diverse teams introduces several challenges, along with solutions, that project managers struggle with:
In-house vs. Remote
Companies with in-house developers run the risk of developing an “us vs. them” mentality against remote teams. It’s hard to bond with people we never see unless there are active systems in place that foster developing those bonds. Over time, the collaboration between the two teams will begin to struggle and eventually deteriorate. The result is a decrease in quality output.
Solution: Build One Team
The tale of two teams problem arises due to cultural, language, and personality differences that are amplified by the lack of connection caused by distance and time-zone differences. Within cultures and personalities are behaviors, attitudes, and beliefs that define the day-to-day social interactions and take-aways that occur between team members.
As a manager, your job is to mitigate friction by being connected with your team. That means understanding what they think and feel towards each other and establishing methods of assessing the status quo to find ways to improve it. No, this is not where an “open-door” policy comes in.
Managers must actively find ways to gather information from their team members in ways that allow them to speak their truth without fear of causing friction. Such techniques involve anonymous feedback, which is then reviewed together as a team in what is called a retrospective. A tool that makes running retrospectives easy is Retrium.
Product Knowledge Gaps
How much quality can you expect from a developer that has little to no emotional stake in your product or even intimate knowledge of its purpose for that matter? Developers must be on-boarded properly so that they understand the product beyond the code and gain an affinity towards it. They must be able to tap into the voice of the customer to gain insights on the work they are doing. Otherwise, they can’t truly take pride in their work because they do not fully understand the value of the product which they are building.
Solution: Knowledge Transfer Protocols
Communication is key here. There are several ways managers can allocate time to help developers gain a deeper connection with what they are building. Managers have plenty of responsibilities to fulfill and often struggle to find time to pass the information along to the team.
Leveraging project management tools and wikis to pass along valuable information about the product (vision, roadmaps, user feedback, and documentation) can improve communication. Weekly meetings in the form of video conference calls can also be useful but may feel a bit forced if your team works across time-zones.
When onboarding new developers, it’s better for them to learn by actively participating than to read through the documentation. The same goes for learning about different cultures; hands-on experience trumps theoretical knowledge.
Lack of Communication
Communication issues can arise for many reasons. In the case of distributed teams, it is easy to assume that the single point of error lies in the fact that developers work remotely. If you take a moment to consider how miscommunication can occur even in co-located environments, it’s difficult to ignore that reactive-behavior plays a significant role.
If there is no culture of responsibility, how can you expect workers to own their work? If there are no tools to communicate effectively across different time-zones, how can you expect better communication and camaraderie? The issue of poor communication can detrimental to companies in unforeseen ways such as security vulnerabilities, code-smell, bug backlogs, missed deadlines, loss of moral, cognitive dissonance, etc.
Solution: Establish a Culture of Communication
Managers can take the initiative and facilitate communication protocols that guide teams through iterative cycles more effectively. In many cases, project management software and video conference tools accomplish this, but it doesn’t stop there. There are also cultural differences to address before a team starts working together.
Managing cultural differences is a soft-skill with a few things to consider in regards to working with distributed teams. For one, English should be the primary language spoken by all members of the group. Should you have a talented engineer that needs English training, supply it if you can. More importantly, developers come and go, and the onboarding process for new developers must be well-thought.
Some factors to consider when bringing on someone new are:
– Does our application have proper documentation to refer to during work?
– Is the team available to support new developers if they ask for help?
– Is there a group chat for ease of communication?
– Are there clear stages of developer contribution over time?
Trio, the staff augmentation agency of choice for many small to mid-sized businesses, manages your project for you with an added twist. You get to work directly with the developers they allocate with the added support of Trio’s project managers to offer insights and assistance when you need it. If you are integrating them with a pre-existing team, you will need to have a good onboarding strategy.
Lack of Process
Distributed teams can still suffer even with excellent communication if they lack the process to get things done effectively. We’re going beyond project management and deeper into process management territory. In a way, communication and process go hand in hand. Teams that do not leverage the proper tools and methodologies to build applications will find themselves swimming upstream. Things become more complicated as the codebase grows and matures and bug fixes become a day-to-day activity.
Solution: Define Processes and Methodologies
Managers can improve the effectiveness and efficiency by which distributed teams accomplish their tasks by implementing methodologies, tools, conventions, and working patterns into their work. Let’s explore each of these elements in detail.
Software Development Methodologies
When building a distributed team, you will have to choose which methodology to use when developing your application. Choosing the right one requires a deep understanding of your organization to determine which one is best suited for your needs. It’s about striking the balance of what works for you and your team.
Wikipedia describes agile as a “set of values and principles for software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams.”
In plain English: Agile segments development into small time-cycles called increments to allow the flexibility to edit, revise, and refine at any stage with minimal-risk.
Agile follows four principles:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to Change over following a plan
There are two primary schools of Agile-thought: Kanban, Scrum and Extreme Programming (XP), and more. Each one has trade-offs that you, the manager, should consider. Blueprint has a great article on the topic that’s worth reading.
Deciding on which model is best for you is requires some careful consideration. Thankfully, there is a great article written by the guys at Visual Paradigm that explores the differences between Scrum and XP in depth. Keep in mind that one can cherry-pick aspects of a specific methodology to meet specific needs.
Along with picking a software development methodology, developers must agree on a consistent code style. It is perhaps the most critical element to maintain a clean and robust codebase and relies on optimal knowledge transfer protocols to implement correctly.
Wikipedia’s article on code conventions outline the following points:
- 40%–80% of the lifetime cost of a piece of software goes to maintenance.
- Hardly any software is maintained for its whole life by the original author.
- Code conventions improve the readability of the software, allowing engineers to understand new code more quickly and thoroughly.
- If you ship your source code as a product, you need to make sure it is as well packaged and clean as any other product you create.
Distributed Team Working Patterns
So you have your team, you’ve set up knowledge transfer protocols, reinforced communication capabilities with a chosen set of tools, and established methodologies along with coding conventions. Your team asks, “So how do we work together day-to-day?”.
Working patterns are the answer and serve to bring co-located teams closer together, and there are plenty of ideas around that. Distributed teams have to employ methods of communication with the tools given to them. Those tools must also be configured appropriately and readily accessible so that patterns such as sprint planning, sprint reviews, and retrospectives can work.
Other patterns, such as a shared community, a knowledge base that serves as a single source of truth for all developers on the team help keep things centralized. Instead of having to send a message to a senior developer, informational is readily accessible.
To learn more about successful distributed team working patterns, check out this whitepaper from SolutionsIQ.
Tools for Distributed Teams
To help managers get their connectivity stack figure out, we have compiled a list of the most popular tools used by developers to do their jobs.
Project Management Software
Jira is an issue & project tracking software by Atlassian, creators of Bitbucket. This tool is most tailored to developers and provides a number of different ways to plan and track projects. As Jira is made by developers for developers, they provide a number of different integrations that fit various agile workflows while allowing you to tailor your personal workflow.
Trello is another web-based application from from Atlassian that focuses more on managing the big picture of a project. It boasts an easy to use interface that allows ideas to be organized in a kanban style interface allowing managers to work with perspective. Atlassian recommends using both together to manage different aspects of your development as Trello is streamlined more for project managers, but it can really be used for any team. Learn more about how Trello and Jira interact together here.
Slack is a popular collaboration tool that connects teams in a unified chat. It offers features such as chat rooms (channels) which can be organized by topic, private groups, and direct messaging. Slack also features integrations with many other products such as Google Docs, Zoom, Jira, and many others across a wide range of categories. These app add-ons allow for extended functionality allowing your conversations with teammates to turn into actionable decisions straight from Slack.
Microsoft Teams is a communications platform that combines chat, video and file storage capabilities into one. Part of the Office 365 suite, Microsoft Teams integrates seamlessly into their other applications and features various integrations with non-Microsoft products. As with other products of Office 365 it operates both in the browser and as a desktop application. Teams is a solid choice for those already using Windows machines with a software ecosystem that finally plays nice with others.
Video Conference Tools
Google Hangouts operates as a platform agnostic app and Google Chrome extension bringing video chat and screen sharing capabilities to their users. Hangouts is enterprise ready and integrates with G Suite. With G Suite, users are able to use Hangout Chats for free as a desktop application. This option is not available for 32-bit systems currently. Hangouts is a strong alternative for those who don’t wish to pay for Office 365.
Zoom is a popular video conferencing and screen sharing application. It has become an attractive alternative to services like Skype and Google Hangouts and allows for businesses to improve communications internally in an easy to use manner. As of July 2019, there have been issues regaring a zero-day vulenrability allowing a website to force a user to join a Zoom call and activate their camera without permission. On July 10, Apple pushed a silent update removing Zoom’s hidden web server that allowed itself to be reinstalled on client machines.
So here we are. The ultimate guide to building and managing distributed teams. How will you go about building yours?
There is no right or wrong when deciding between doing everything in-house or hiring a staff augmentation agency. Staff augmentation agencies like Trio supply you with vetted talent that is ready to integrate seamlessly into your organization.
Now go forth and make your team a reality, then get to building your application!