HOME

TheInfoList



OR:

The bus factor is a measurement of the
risk In simple terms, risk is the possibility of something bad happening. Risk involves uncertainty about the effects/implications of an activity with respect to something that humans value (such as health, well-being, wealth, property or the environme ...
resulting from information and capabilities not being shared among team members, derived from the phrase "in case they get hit by a bus". It is also known as the bus problem, lottery factor, truck factor, beer truck factor, bus/truck number, or lorry factor. The concept is similar to the much older idea of key person risk, but considers the consequences of losing key technical experts, versus financial or managerial executives (who are theoretically replaceable at an insurable cost). Personnel must be both key and irreplaceable to contribute to the bus factor; losing a replaceable or non-key person would not result in a bus-factor effect. The term was first applied to
software development Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development inv ...
, where a team member might create critical components by crafting code that performs well, but which also is unavailable to other team members, such as work that was undocumented, never shared,
encrypted In cryptography, encryption is the process of encoding information. This process converts the original representation of the information, known as plaintext, into an alternative form known as ciphertext. Ideally, only authorized parties can decip ...
,
obfuscated Obfuscation is the obscuring of the intended meaning of communication by making the message difficult to understand, usually with confusing and ambiguous language. The obfuscation might be either unintentional or intentional (although intent u ...
or not published. Thus a key component would be effectively lost as a direct consequence of the absence of that team member, making the member key. If this component was key to the project's advancement, the project would stall.


Definition

The "bus factor" is the minimum number of team members that have to suddenly disappear from a project before the project stalls due to lack of knowledgeable or competent personnel. The expression "hit by a bus" describes a person either dying or more generally disappearing suddenly from the project. It is used to describe hypothetical future disappearances in a darkly humorous way. Team members do not literally have to get "hit by a bus" for the "bus factor" to apply—any number of events could occur in which a team member could be suddenly and substantially prevented from working on the project. This could include a person taking a new job, going on parental leave, or changing lifestyle or life status. For instance, say a team of 30 people produces bread in three necessary steps: mixing ingredients, kneading the dough, and baking. Ten people know how to mix ingredients, all 30 people know how to knead the dough, and 5 people know how to bake. If all 5 people who know how to bake disappear, then the team cannot produce bread, so the team's bus factor is 5. There is a rare alternative definition for the bus factor, namely: the number of people who are indispensable for the project. In other words, it is the minimum number of people who are a
single point of failure A single point of failure (SPOF) is a part of a system that, if it fails, will stop the entire system from working. SPOFs are undesirable in any system with a goal of high availability or reliability, be it a business practice, software appl ...
. If using this definition, then a high bus factor is considered a bad thing (since the loss of any person included destroys the project), and zero is considered the ideal bus factor.


History

An early instance of this sort of query was when Michael McLay publicly asked, in 1994, what would happen to the Python language if Guido van Rossum were hit by a bus. "Truck number" was already a recurring concept in the ''Organizational Patterns'' book published in 2004, itself an evolution of the work published in the first book of the ''Pattern Languages of Program Design'' series in 1995, which was the publication record of the first Pattern Languages of Programs conference in August 1994, where it was referenced in patterns including ''Solo Virtuoso''. The term had become commonplace in business management by 1998 and was used in
mental health Mental health encompasses emotional, psychological, and social well-being, influencing cognition, perception, and behavior. It likewise determines how an individual handles stress, interpersonal relationships, and decision-making. Mental hea ...
in the same year. It was seen in software engineering papers in
Association for Computing Machinery The Association for Computing Machinery (ACM) is a US-based international learned society for computing. It was founded in 1947 and is the world's largest scientific and educational computing society. The ACM is a non-profit professional member ...
and Information Systems Frontiers by 1999, in engineering by 2003, and the Debian project in 2005. Studies conducted in 2015 and 2016 calculated the bus/truck factor of 133 popular
GitHub GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, co ...
projects. The results show that most of the systems have a small bus factor (65% have bus factor ≤ 2) and the value is greater than 10 for less than 10% of the systems. The term is mostly used in business management, and especially in the field of
software development Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development inv ...
.


Improving the bus factor

In many software development projects, one goal is to share information in order to improve the bus factor, potentially to the size of the entire team. A good bus factor means many individuals know enough to carry on and the project could still succeed even in very adverse events.James Coplien, ''Pair Programming Illuminated''. Quote: "How many or few would have to be hit by a truck (or quit) before the project is incapacitated?" Several ways to improve the bus factor have been proposed: * Reduce complexity, * Document all processes and keep that documentation up-to-date, * Encourage cross-training.


See also

* Organizational memory


References


Further reading

* * * {{cite book, title = Extreme Programming. Das Manifest, author=Kent Beck, publisher= Addison-Wesley, location =s. l. , year=2000, isbn=3-8273-2139-5, language=de, author-link=Kent Beck


External links


Poisonous People
a talk that includes (among other topics) discussion of bus factor and how to increase it
"What If Linus Torvalds Gets Hit by a Bus?" - An Empirical Study
a humour piece Computing terminology IT risk management