distribute software development among several vendors

How to Staff and Manage Distributed Software Teams: 4 Tips From Practitioners

As workplaces go digital, remote work gains traction. According to the international workspace provider IWG, up to 70% of professionals across industries work remotely at least once a week. An additional 53% work away from the office for at least half the week.

Surprisingly, remote workers tend to be 20-25% more productive than their office-based colleagues, so it makes sense for business leaders to embrace distributed software development teams and digital workplaces.

At 8allocate, we have first-hand experience building and managing dedicated/distributed development teams who help clients across continents jump fast on technology train and lead instead of lagging behind.

As the company’s CEO, I’m often asked questions such as: “How can we keep this project on track when we’re not even in the same country?” While this might sound daunting to someone who is used to a traditional business environment, the process of preparing to work with a distributed team is quite easy.

Distributed development teams have their own set of unique features and challenges. The good news is there are ways to overcome them and drive your business forward. Managing distributed teams is much easier for companies that use cloud computing, DevOps, Agile project management, strong communication, and collaboration tools.

You can use these 4 tips to staff and manage your distributed software development team more efficiently.

1. Start by Hiring the Right People

When companies aren’t able to hire tech talent with required skills at affordable rates, many turn to offshore or nearshore partners to find specialists abroad.

For example, if your company is hiring a dedicated team for a blockchain development project, you will need to find qualified blockchain developers to help you achieve your business goals.

Use a sales approach by considering each candidate as a lead. Your hiring strategy should rely on a combination of inbound and outbound lead generation and acquisition techniques.

At 8allocate, we help clients build teams of dedicated developers and project managers for software project development. Whenever we get a staffing request from a client, we ask them to fill out a brief questionnaire to help us choose the right hiring strategy.

Key questions we ask our prospective clients include:

  • How big is your in-house team, and what’s the seniority level of existing team members?
  • Which technologies/programming languages/frameworks does your in-house team already use?
  • Why are you looking to extend your in-house and/or onshore team offshore/remotely?
  • What are your project goals and challenges?
  • What growth opportunities can you offer developers? Why will your project be interesting for our candidates?
  • What’s your required command of the English language?
  • Will all candidates be required to work from one location, or can they work from different locations?
  • How do you plan to handle knowledge transfer sessions? 

These and other questions help companies refine their recruitment strategy, allowing them to determine the right mix of inbound and outbound approaches.

Inbound Helps Qualified Candidates Find Your Company

Inbound leads are an important driver of any sales pipeline. Companies with strong inbound pipelines are visible to leads who are likely to convert. When searching for a qualified distributed software team, you can use a similar approach.

Start by creating the candidate’s journey. Map out exactly where you’ll be looking for candidates and how you’ll engage them across all stages of a typical sales funnel:

  • Awareness of your brand, project, and current vacancy;
  • Consideration where interested candidates can research your company;
  • Interest from the qualified candidates, in the form of inbound outreach or online applications;
  • Conversion that occurs when you hire a qualified candidate.

To visualize this inbound strategy, I suggest creating a matrix by filling in the form below:

Picture1 2 1024x430 - How to Staff and Manage Distributed Software Teams: 4 Tips From Practitioners

To raise awareness of your project, you should think outside the box and get creative. For our blockchain example, you could deliver a speech at a blockchain conference in Eastern Europe, write an article about your future project for a popular website like Hackernoon, or even shoot a video demo for your project.

In order to attract the right talent, think like a marketer and explore all possible ways to spark interest in your project and company.

Develop an Outbound Strategy to Connect With Candidates

To shorten the time it takes to hire software development resources, companies can and should use an outbound recruitment strategy.

In this strategy, you can reach out to your existing pool of current and past candidates to let them know about new opportunities. In most cases, in-house recruiting teams won’t have access to large enough pools of talent.

If that’s the case for your company, an IT staffing agency can help. However, they normally charge up to 25% of each hire’s annual remuneration, which can kill the entire software development budget of a small startup. Using offshore recruitment consultants will cost you up to 70% cheaper.

2. Establish Clear Communication Processes

Communication is at the core of every successful team. When enterprises don’t make an active effort to compensate for the lack of in-person contact, distributed teams can quickly fall apart.

81b70a490e6f9b4881e83e198f5773d7 - How to Staff and Manage Distributed Software Teams: 4 Tips From Practitioners

Image courtesy of 8allocate

In order to encourage communication between teams or team members, it’s best to take a multi-pronged approach. Leverage a combination of communication tools such as:

  • Instant messaging, such as Slack or Telegram;
  • Email;
  • Video calls, such as Skype and Google Hangouts;
  • Screen sharing tools, such as TeamViewer.

These communication tools ensure that teams can connect in a variety of mediums depending on what they need to discuss.

To ensure collaboration and productivity across time zones, companies must also use project management tools.

For example,  Jira Softwarehelp software engineers manage projects using agile concepts.

staff 2 1024x407 - How to Staff and Manage Distributed Software Teams: 4 Tips From Practitioners

Image courtesy of 8allocate

Jira Software and project management tools like it make processes like planning, prioritizing, and scaling up or down during the software development cycle a seamless experience.

These tools will also keep conversations, documents, and files organized so they’re easy to find later.

3. Champion a Culture of Continuous Integration

Distributed software teams that adopt a culture of continuous integration (CI) build morale that helps them overcome obstacles. CI also helps teams divide responsibilities appropriately.

For example, a business might have security concerns that impact development. A distributed team might be asked to maintain two sets of code repositories that will be merged at a later date. This situation often occurs when enterprises refuse to release intellectual property on public cloud-based platforms.

Maintaining two separate code repositories is a bad idea because you’ll end up wasting a significant amount of time and resources to fix the fractured code.

Instead, it’s far easier and more secure to enhance communication within the distributed team and maintain a single code repository. This way, all members of the distributed team can work on the same code base, empowering them to deliver a stronger product.

There are two options for good CI tools. Among the free options, many companies use Jenkins, Go CD, GitLab, and Codefresh. Enterprises may need to use paid tools such as Atlassian Bamboo and TeamCity.

These tools offer both powerful functional features and flexible scalability.

4. Measure Team Performance and Productivity

To determine what your distributed team should focus on each day, week, and month, you should establish and track metrics at the beginning of each project.

At 8allocate, we prefer Agile/Scrum approaches to product development. No matter which system you’re using, it’s important to track key performance indicators (KPIs).

Take your software development project roadmap and include several KPIs for each initiative. Common KPIs include:

  • Process Status Metrics: Examples include the percentage of completed tasks, flow efficiency, the rate of time lost due to blockers, clustering of blockers
  • Release Metrics:Examples include eliminated errors and defects, success rate, release time, elapsed time since the last release, cost of release
  • Product Development Metrics: Examples include the product’s value for the end user or client’s business, risk management, market feedback analysis, product market forecasts
  • Technical Metrics: Examples include build time, test coverage, a density of errors, compliance, code review, crash score
  • Team Collaboration Metrics: Examples include satisfaction rate, opportunities for development, transparency, time of collaboration

You won’t necessarily need to measure all of these KPIs. The key is finding metrics that are the most relevant to your particular project and team.

I recommend that teams that are new to working in a distributed structure start small and scale with time. To start, two or three basic metrics may be sufficient, and the team can always add more as the project evolves.

Mature teams can use up to 7 metrics at the same time, but it’s highly recommended that the number of metrics tracked doesn’t exceed 7. As they say in IT, if you measure more than 7 KPIs simultaneously, you’re likely to run into “analysis paralysis,” in which over-thinking a challenge leads to no solution or action at all.

When establishing metrics, the entire team should make a collective decision. Metrics stop being effective when they become a goal that’s not tied directly to the end result of the project, so this approach avoids situations where teams measure something for the sake of measurement. All metrics should be well visualized so they can be used for data analytics and decision making.

Distributed Teams Can Help Companies Succeed

Distributed teams can support companies’ in-house resources to create successful development projects.

Make sure to staff your distributed team with the right people by using both traditional and innovative approaches to hiring. A mix of inbound and outbound leads can help you connect with the talent you need.

Once you’ve staffed your distributed team, cultivate CI while fostering effective communication within and between your teams.

Finally, verify your team is moving in the right direction by measuring as many KPIs as you believe are necessary to feel the pulse of your team’s work.

Today, many modern organizations outsource their development projects in order to access new talent pools and build long-term relationships with competent third party providers. As global tech giants such as Samsung, Microsoft, and Google rely on distributed teams all over the world, all companies can follow their example to embrace innovation better and faster. Are you one of them?

This article was originally published on Clutch.

8allocate team will have your back

Don’t wait until someone else will benefit from your project ideas. Realize it now.