Have you ever written important information down or sent it an email at work with the note, “Here’s some information you may need, in case I get hit by a bus!”? Or maybe you’ve put together a plan with critical information to share with your colleagues pre-vacation or post-resignation so they could carry work forward without you. All of these scenarios describe the idea of the bus factor (also known as the truck factor or lorry factor).
The concept of the bus factor can seem rather morbid on the surface, but it’s necessary for businesses to consider. Bus factor impacts teams of all sizes, industries, and specialties, but it’s a considerable risk for software development and engineering teams. In this article, we define the bus factor and offer eight ways to increase it, so you can build resilient project teams who thrive under changing circumstances.
What is a bus factor?
The business world defines the bus factor as the minimum number of team members that would cause a project to stall or fail in their absence (say, if a bus hit them). Some say it’s the number of people who, if incapcitated, would lead to a critical system failure. It measures the risk that results from loss of knowledge, skills, and resources associated with a team. Put simply, the higher your bus factor, the better.
Here’s a quick example: Suppose we compare two development teams side-by-side. Both teams have ten people on them. Team A has a low bus factor of two. So, if two people on the team were to get hit by a bus, resign, or go on sabbatical, the remaining eight team members wouldn’t be able to continue working on the codebase or would run into significant issues that put the project at risk.
Team B has a high bus factor of six. It would take six people to get hit by a bus, resign, or go on sabbatical to cause severe implications for the rest of the team. Which team sounds more stable and capable?
Undoubtedly, developers would rather be part of Team B. A low bus factor negatively impacts your developer experience and puts you at risk of high turnover.
Why does the bus factor matter?
A low bus factor is detrimental to teams and can cause operations to cease in the blink of an eye. Adopting a low bus factor is incredibly risky for businesses that provide software services or have business models centered around their development teams. In 2016, the Applied Software Engineering Research Group found that ten out of 25 popular open-source GitHub projects had a bus factor of one. Although the results were an estimation, they revealed a common issue of many software development projects — the show can’t go on without one key team member.
The bus factor is also crucial to startups’ success. Think about it — if a small startup has a bus factor of one and that developer leaves as the company grows, the team may have to start over entirely. Or worse yet, they might not be able to fill the gap that a key person left behind and have to pivot in a new project direction.
8 ways to increase a low bus factor
Do you want to increase your team’s bus factor but aren’t sure where to start? These eight tips will help boost your bus factor and increase your team’s capabilities.
1. Focus on documentation
While documentation might feel daunting, especially when drafting it for the first time, it’s a significant benefit for retaining valuable information and transferring it to new team members.
Fresh documentation serves to reduce duplicative efforts, improve quality and process control, improve onboarding, and provide a single source of truth. Key processes should always be well-documented and stored in an organized, accessible way. Establish a method for creating documentation, templates, and a storage repository. Establish and determine who will update documents and how frequently, as outdated documentation can hurt the team and cause rework.
2. Designate backups for each role
One of the biggest mistakes you can make, even as a small team, is forgoing designating backups for each role on the team. This practice is helpful in emergencies, such as an unexpected illness. It’s necessary for instances where a team member resigns, and a gap exists between the resignation and backfill.
Backups should be able to take over all critical functions and tasks for their counterpart for both short and long-term periods. Consider building this practice into your job descriptions and ensure that team members have time to serve as a backup if needed.
3. Cross-train your team members
On some development teams, each team member has a specialty or area of focus. Having specialized rock stars who can tackle common issues can speed up turnaround times when issues with code arise. But, it can also cause knowledge gaps and silos.
To close these gaps, develop a cross-training program that encourages knowledge sharing and group problem-solving. One way to achieve this is through pair programming (yes, you can even do pair programming remotely). Pair programming is an agile technique where two people write code together. It fosters teamwork, supports innovation, and provides a space for teammates to learn from one another. Another way to cross-train employees is by hosting regular knowledge-sharing sessions. Have developers sign up to present various topics to the development team.
4. Leverage automation to simplify processes
Not only does automation make developers’ lives easier, but automating processes removes the human element and reduces the amount of risk of lost knowledge. As you implement automation tools, be sure to draft supporting documentation so you can quickly catch your new hires up to speed and get them up and running. Examples of automation tools include Jenkins, Cucumber, Zapier, and Integrately.
5. Rotate roles on development projects
On episode 198 of The Rabbit Hole: The Definitive Developer’s Podcast, hosts recommend implementing team rotations to help boost the bus factor. Sometimes when something in the codebase breaks, coders are quick to fix it, since they wrote it and are familiar with it. The developer who wrote the code eventually becomes an expert and provides quick fixes every time. The problem is, no one else on the team learns that piece of the codebase, causing a significant knowledge gap.
If you rotate teams or specific assignments on projects, you’ll enable knowledge sharing by default and provide developers with opportunities to work in new, unfamiliar territories.
6. Exchange vital information during daily standups
Productive meetings provide opportunities for the team to connect and exchange mission-critical information. If your team conducts daily standups, consider reserving a few minutes for developers to ask questions and get help from one another in a group setting.
If your team doesn’t conduct daily standups, make sure there are other recurring team meetings and opportunities to connect and share project information in a meaningful way. Asynchronous communication methods, like project-specific Slack channels, can also be a great source of information sharing (and written documentation).
7. Strive for simplicity over complexity
Simplicity is a powerful tool for combatting a low bus factor. Sure, complex designs might seem more intriguing and fun to work on in the short term. The better long-term decision is to lean on the side of simplicity. The more specific and niche the code gets, the longer it takes for new team members to catch up and become comfortable with the codebase. This applies to the code itself, and supporting processes, systems, and tools that support daily work.
8. Invest in your team’s growth
One way to increase knowledge and capabilities across your team (and keep employees engaged) is by investing in their professional development. Plan and conduct training sessions, workshops, and classes to help them build their skills.
If budget allows, consider sending developers to conferences and other networking opportunities to help turn them into better problem-solvers with stronger technical abilities. In turn, you might also help team members grow into management and leadership roles and enable them to grow their careers. It’s a win-win for employees and the organization.
Go forth and increase your bus factor
Knowing your bus factor will allow you to identify a single point of failure. The higher your bus factor, the better. Proper documentation, cross-training, role rotation, and investment in professional growth and development are a few tactics you can deploy to increase your bus factor today. Always remember that you never want to have a bus factor of one!
Read next: What is a time orchestration platform?