The term "bus number" is sometimes used by project managers in the information technology (IT) field when making estimates about the stability of the team working on a given software development project. It refers to the number of involved programmers who could be hit by a bus without placing the project in serious jeopardy. Estimating a bus number is a way to quantify the risks of a project while it is in a vulnerable state of development.
Writing programs for complex software is often a team effort. Numerous programmers and system engineers may work together to develop the various sub-systems and utilities for a specific piece of software. Often, these programmers work alone or in small groups on one particular facet of the program. As the project proceeds, the programmers become indispensable, because no one else working on the project would be readily able to understand and complete the code they've started.
To envision the complexity of the problem, imagine the scale of developing a full operating system. If a single team were responsible for developing every single utility for the system, it would take years to complete the project. Instead, a company might have one team work on networking components, another on the graphical interface, and so on. In most cases, these individual teams would rarely collaborate in any meaningful way; their contributions would only be combined once the final product was ready to assemble.
Thus, each team essentially operates blind. As the different autonomous teams have little to no knowledge of the coding structure or programming design being used by the others, each individual team becomes more crucial to the outcome of the project. If enough of those team members quit the project — or get hit by a bus — it could doom the entire project to serious setbacks, or even failure. Estimating the bus number of a particular project allows management to know how secure the project is, and establishes how expendable any particular programmer is to the project.
The goal of management is to organize the structure of a project to maximize the bus number, thus minimizing risk. Programming in teams helps to increase the bus number, as each person on the team can develop enough understanding of the overall system to continue with the project if something happens to a few of the programmers. Code review provides another method to increase the bus number: teams can study and analyze the code written by others working on the project, spreading knowledge of the system. A final method for increasing the bus number is utilizing documentation by leaving comments within the actual code, explaining how and why the code works and what the intentions and methodology of the programmers is. In general, any techniques used to diversify knowledge of the programming codebase will increase the theoretical bus number, increasing the security of the project.