[go: up one dir, main page]

Jump to content

Bus factor: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Add: year, pages, title, chapter, author pars. 1-4. Formatted dashes. | You can use this tool yourself. Report bugs here. | via #UCB_Gadget
Definition: revive one bluelink from the removed content
(42 intermediate revisions by 35 users not shown)
Line 1: Line 1:
{{Short description|Concept in risk management}}
The '''bus factor''' is a measurement of the [[risk]] 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 '''bread truck scenario''', '''lottery factor''', '''truck factor''',<ref>{{cite web|url=http://www.agileadvice.com/2005/05/15/agilemanagement/truck-factor/|title=Truck Factor|date= May 15, 2005|last=Bowler|first=Michael|publisher=Agile Advice}}</ref> '''bus/truck number''', or '''lorry factor'''.
The '''bus factor''' is a measurement of the [[risk]] 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''', '''truck factor''',<ref>{{cite web |url=http://www.agileadvice.com/2005/05/15/agilemanagement/truck-factor/ |title=Truck Factor |date=May 15, 2005 |last=Bowler |first=Michael |publisher=Agile Advice |access-date=April 9, 2014 |archive-date=April 29, 2021 |archive-url=https://web.archive.org/web/20210429072452/http://www.agileadvice.com/2005/05/15/agilemanagement/truck-factor/ |url-status=live }}</ref> or '''bus/truck number'''.{{Cn|date=February 2023}}


The concept is similar to the much older idea of [[Key person insurance|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 concept is similar to the much older idea of [[Key person insurance|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]], 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 [[software documentation|undocumented]], [[information silo|never shared]], [[encryption|encrypted]], [[Obfuscation (software)|obfuscated]], unpublished, or otherwise incomprehensible to others. 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.
The term was first applied to [[software development]], 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 [[software documentation|undocumented]], [[information silo|never shared]], [[encryption|encrypted]], [[Obfuscation (software)|obfuscated]] or [[Tribal knowledge|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==
==Definition==
Line 10: Line 11:
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.
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.
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. A bus factor of one is a [[single point of failure]].

There is a rare alternative definition for the bus factor, namely: the number of people who are indispensable for the project.<ref>{{cite book|last=Coplien|first=James|last2=Harrison|first2=Neil|title=Organizational patterns of agile software development|date=2004-07-26|publisher=Wiley}}</ref> In other words, it is the minimum number of people who are a [[single point of failure]]. 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==
==History==
An early instance of this sort of query was when Michael McLay publicly asked, in 1994, what would happen to the [[Python (programming language)|Python language]] if [[Guido van Rossum]] were to be hit by a bus.<ref>{{cite mailing list|last=McLay|first=Michael|title=If Guido was hit by a bus?|date=June 29, 1994|url=http://legacy.python.org/search/hypermail/python-1994q2/1040.html}}</ref>
In 1907, [[Joseph Conrad]] wrote in ''[[The Secret Agent]]'':


"Truck number" was already a recurring concept in the ''Organizational Patterns'' book published in 2004,<ref>{{cite book|last1=Coplien|first1=James|last2=Harrison|first2=Neil|title=Organizational patterns of agile software development|date=July 26, 2004|publisher=Wiley}}</ref> itself an evolution of the work published in the first book of the ''Pattern Languages of Program Design'' series in 1995,<ref>{{cite book|last1=Coplien|first1=James|last2=Schmidt|first2=Douglas|title=Pattern Languages of Program Design|date=May 12, 1995|publisher=Addison Wesley|chapter=Chapter 13, A Generative Development-Process Pattern Language|bibcode=1995plpd.book.....V}}</ref> 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''.<ref>{{citation|last=Coplien|first=James|title=Internal proceedings of PLoP 1994|place=Allerton Park, Illinois|date=August 4, 1994|publisher=unpublished.|chapter=A Generative Development-Process Pattern Language|url=https://sites.google.com/a/gertrudandcope.com/info/Publications/Patterns/Process/PLoPD1/section4|access-date=September 12, 2014|archive-date=September 12, 2014|archive-url=https://web.archive.org/web/20140912213259/https://sites.google.com/a/gertrudandcope.com/info/Publications/Patterns/Process/PLoPD1/section4|url-status=live}}</ref> The term was used{{clarify|date=August 2015}} in [[mental health]] in 1998.<ref>{{cite book|last=Simon|first=Robert|title=The Mental Health Practitioner and the Law: A Comprehensive Handbook|date=May 17, 1998|publisher=Harvard University Press|isbn=0-674-69721-9|page=69}}</ref> It was seen in engineering by 2003,<ref>{{cite web |url= http://proceedings.esri.com/library/userconf/proc03/p0559.pdf |title= Integrating GIS in the Engineering, Planning and Design Processes |first1= Matthew C. |last1= Redmond |first2= Paul |last2= Newton |year= 2003 |url-status= dead |archive-url= https://web.archive.org/web/20120312133941/http://proceedings.esri.com/library/userconf/proc03/p0559.pdf |archive-date= 2012-03-12 }}</ref> and the Debian project in 2005.<ref>{{cite mailing list|last=Reinholdtsen|first=Petter|title=Re: Resignation and uploads|date=November 11, 2005|url=https://lists.debian.org/debian-devel/2005/11/msg00801.html}}</ref>
{{Quote|text=But just try to understand that it was a pure accident; as much an accident as if he had been run over by a bus while crossing the street.}}


Studies conducted in 2015 and 2016 calculated the bus/truck factor of 133 popular [[GitHub]] 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.<ref>{{cite journal|last1=Avelino|first1=Guilherme|last2=Valente|first2=Marco Tulio|last3=Hora|first3=Andre|title=What is the Truck Factor of popular GitHub applications? A first assessment.|journal=PeerJ Preprints|date=September 10, 2015|url=https://peerj.com/preprints/1233/|doi=10.7287/peerj.preprints.1233v3|doi-access=free|access-date=December 4, 2015|archive-date=December 8, 2015|archive-url=https://web.archive.org/web/20151208134101/https://peerj.com/preprints/1233/|url-status=live}}</ref><ref>{{cite book |arxiv=1604.06766v1|doi=10.1109/ICPC.2016.7503718|isbn=978-1-5090-1428-6|bibcode=2016arXiv160406766A|chapter=A novel approach for estimating Truck Factors|title=2016 IEEE 24th International Conference on Program Comprehension (ICPC)|pages=1–10|year=2016|last1=Avelino|first1=Guilherme|last2=Passos|first2=Leonardo|last3=Hora|first3=Andre|last4=Valente|first4=Marco Tulio|s2cid=19238548}}</ref>
"Truck number" was already a recurring concept in the ''Organizational Patterns'' book published in 2004,<ref>{{cite book|last=Coplien|first=James|last2=Harrison|first2=Neil|title=Organizational patterns of agile software development|date=July 26, 2004|publisher=Wiley}}</ref> itself an evolution of the work published in the first book of the ''Pattern Languages of Program Design'' series in 1995,<ref>{{cite book|last=Coplien|first=James|last2=Schmidt|first2=Douglas|title=Pattern Languages of Program Design|date=May 12, 1995|publisher=Addison Wesley|chapter=Chapter 13, A Generative Development-Process Pattern Language|bibcode=1995plpd.book.....V}}</ref> 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''.<ref>{{citation|last=Coplien|first=James|title=Internal proceedings of PLoP 1994|place=Allerton Park, Illinois|date=August 4, 1994|publisher=unpublished.|chapter=A Generative Development-Process Pattern Language|url=https://sites.google.com/a/gertrudandcope.com/info/Publications/Patterns/Process/PLoPD1/section4}}</ref> The term had become commonplace in business management by 1998{{citation needed|date=October 2013}} and was used{{clarify|date=August 2015}} in [[mental health]] in the same year.<ref>{{cite book|last=Simon|first=Robert|title=The Mental Health Practitioner and the Law: A Comprehensive Handbook|date=May 17, 1998|publisher=Harvard University Press|isbn=0-674-69721-9|page=69}}</ref> It was seen in software engineering papers in [[Association for Computing Machinery]] and Information Systems Frontiers by 1999,{{citation needed|date=January 2013}} in engineering by 2003,<ref>{{cite web |url= http://proceedings.esri.com/library/userconf/proc03/p0559.pdf |title= Integrating GIS in the Engineering, Planning and Design Processes |first1= Matthew C. |last1= Redmond |first2= Paul |last2= Newton |year= 2003 |url-status= dead |archiveurl= https://web.archive.org/web/20120312133941/http://proceedings.esri.com/library/userconf/proc03/p0559.pdf |archivedate= 2012-03-12 }}</ref> and the Debian project in 2005.<ref>{{cite mailinglist|last=Reinholdtsen|first=Petter|title=Re: Resignation and uploads|date=November 11, 2005|url=https://lists.debian.org/debian-devel/2005/11/msg00801.html}}</ref>


The term is mostly used in business management, and especially in the field of [[software development]].{{Citation needed|date=July 2021}}
An early instance of this sort of query was when Michael McLay publicly asked, in 1994, what would happen to the [[Python (programming language)|Python language]] if [[Guido van Rossum]] were hit by a bus.<ref>{{cite mailinglist|last=McLay|first=Michael|title=If Guido was hit by a bus?|date=June 29, 1994|url=http://legacy.python.org/search/hypermail/python-1994q2/1040.html}}</ref>


==Improving the bus factor==
A recent study calculated the bus/truck factor of 133 popular [[GitHub]] projects. The results show that most of the systems have a small bus factor (65% have bus factor &le; 2) and the value is greater than 10 for less than 10% of the systems.<ref>{{cite journal|last1=Avelino|first1=Guilherme|last2=Valente|first2=Marco Tulio|last3=Hora|first3=Andre|title=What is the Truck Factor of popular GitHub applications? A first assessment.|journal=PeerJ Preprints|date=September 10, 2015|url=https://peerj.com/preprints/1233/|doi=10.7287/peerj.preprints.1233v3}}</ref><ref>{{cite book |arxiv=1604.06766v1|doi=10.1109/ICPC.2016.7503718|isbn=978-1-5090-1428-6|bibcode=2016arXiv160406766A|chapter=A novel approach for estimating Truck Factors|title=2016 IEEE 24th International Conference on Program Comprehension (ICPC)|pages=1–10|year=2016|last1=Avelino|first1=Guilherme|last2=Passos|first2=Leonardo|last3=Hora|first3=Andre|last4=Valente|first4=Marco Tulio}}</ref>
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.<ref>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?"</ref>


Several ways to improve the bus factor have been proposed:
The term is mostly used in business management, and especially in the field of [[software development]].


* Reduce complexity,<ref name="eight2late">{{Cite web|url = https://eight2late.wordpress.com/2008/09/03/increasing-your-teams-bus-factor/|title = Increasing your team's bus factor|date = 2008-09-03|access-date = 2015-12-04|archive-date = 2016-04-16|archive-url = https://web.archive.org/web/20160416081240/https://eight2late.wordpress.com/2008/09/03/increasing-your-teams-bus-factor/|url-status = live}}</ref>
==Increasing the bus factor==
In many software development projects, one goal is to share information in order to increase the bus factor to potentially the size of the entire team. A high bus factor is considered a good thing as it means that many individuals know enough to carry on and the project could still succeed even in very adverse events.<ref>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?"</ref>

Several ways to increase the bus factor have been proposed:

* Reduce complexity,<ref name=eight2late>{{Cite web | url=https://eight2late.wordpress.com/2008/09/03/increasing-your-teams-bus-factor/ |title = Increasing your team's bus factor|date = 2008-09-03}}</ref>
* Document all processes and keep that documentation up-to-date,<ref name=eight2late/>
* Document all processes and keep that documentation up-to-date,<ref name=eight2late/>
* Encourage [[cross-training (business)|cross-training]].<ref name=eight2late/>
* Encourage [[cross-training (business)|cross-training]].<ref name=eight2late/>

==See also==
* [[Organizational memory]]
* [[Missing stair]]


==References==
==References==
Line 41: Line 40:
==Further reading==
==Further reading==
* {{cite book|title=Extreme Programming Perspectives|author=Michele Marchesi, Giancarlo Succi, Don Wells, James Donovan Wells, [[Laurie Williams (software engineer)|Laurie Williams]]|publisher = Addison-Wesley|location = Boston u. a.|year=2003|isbn=0-201-77005-9}}
* {{cite book|title=Extreme Programming Perspectives|author=Michele Marchesi, Giancarlo Succi, Don Wells, James Donovan Wells, [[Laurie Williams (software engineer)|Laurie Williams]]|publisher = Addison-Wesley|location = Boston u. a.|year=2003|isbn=0-201-77005-9}}
* {{cite book|title =Pair Programming Illuminated|author=[[Laurie Williams (software engineer)|Laurie Williams]], Robert Kessler|publisher= Addison-Wesley|location = Boston u. a.|year=2002|isbn=0-201-74576-3}}
* {{cite book|title=Pair Programming Illuminated|author=[[Laurie Williams (software engineer)|Laurie Williams]], Robert Kessler|publisher=Addison-Wesley|location=Boston u. a.|year=2002|isbn=0-201-74576-3|url-access=registration|url=https://archive.org/details/pairprogrammingi0000will}}
* {{cite book|title = Extreme Programming. Das Manifest|author=Kent Beck|publisher= Addison-Wesley|location =s. l. |year=2000|isbn=3-8273-2139-5|language=German|author-link=Kent Beck}}
* {{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 ==
== External links ==
Line 48: Line 47:
* [https://web.archive.org/web/20011113013913/http://segfault.org/story.phtml?mode=2&id=38b40d78-087dd360 "What If Linus Torvalds Gets Hit by a Bus?" - An Empirical Study], a humour piece
* [https://web.archive.org/web/20011113013913/http://segfault.org/story.phtml?mode=2&id=38b40d78-087dd360 "What If Linus Torvalds Gets Hit by a Bus?" - An Empirical Study], a humour piece
[[Category:Computing terminology]]
[[Category:Computing terminology]]
[[Category:IT risk management]]

Revision as of 16:00, 10 September 2024

The bus factor is a measurement of the risk 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, truck factor,[1] or bus/truck number.[citation needed]

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, 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, obfuscated 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. A bus factor of one is a single point of failure.

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 to be hit by a bus.[2]

"Truck number" was already a recurring concept in the Organizational Patterns book published in 2004,[3] itself an evolution of the work published in the first book of the Pattern Languages of Program Design series in 1995,[4] 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.[5] The term was used[clarification needed] in mental health in 1998.[6] It was seen in engineering by 2003,[7] and the Debian project in 2005.[8]

Studies conducted in 2015 and 2016 calculated the bus/truck factor of 133 popular GitHub 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.[9][10]

The term is mostly used in business management, and especially in the field of software development.[citation needed]

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.[11]

Several ways to improve the bus factor have been proposed:

See also

References

  1. ^ Bowler, Michael (May 15, 2005). "Truck Factor". Agile Advice. Archived from the original on April 29, 2021. Retrieved April 9, 2014.
  2. ^ McLay, Michael (June 29, 1994). "If Guido was hit by a bus?" (Mailing list).
  3. ^ Coplien, James; Harrison, Neil (July 26, 2004). Organizational patterns of agile software development. Wiley.
  4. ^ Coplien, James; Schmidt, Douglas (May 12, 1995). "Chapter 13, A Generative Development-Process Pattern Language". Pattern Languages of Program Design. Addison Wesley. Bibcode:1995plpd.book.....V.
  5. ^ Coplien, James (August 4, 1994), "A Generative Development-Process Pattern Language", Internal proceedings of PLoP 1994, Allerton Park, Illinois: unpublished., archived from the original on September 12, 2014, retrieved September 12, 2014
  6. ^ Simon, Robert (May 17, 1998). The Mental Health Practitioner and the Law: A Comprehensive Handbook. Harvard University Press. p. 69. ISBN 0-674-69721-9.
  7. ^ Redmond, Matthew C.; Newton, Paul (2003). "Integrating GIS in the Engineering, Planning and Design Processes" (PDF). Archived from the original (PDF) on 2012-03-12.
  8. ^ Reinholdtsen, Petter (November 11, 2005). "Re: Resignation and uploads" (Mailing list).
  9. ^ Avelino, Guilherme; Valente, Marco Tulio; Hora, Andre (September 10, 2015). "What is the Truck Factor of popular GitHub applications? A first assessment". PeerJ Preprints. doi:10.7287/peerj.preprints.1233v3. Archived from the original on December 8, 2015. Retrieved December 4, 2015.
  10. ^ Avelino, Guilherme; Passos, Leonardo; Hora, Andre; Valente, Marco Tulio (2016). "A novel approach for estimating Truck Factors". 2016 IEEE 24th International Conference on Program Comprehension (ICPC). pp. 1–10. arXiv:1604.06766v1. Bibcode:2016arXiv160406766A. doi:10.1109/ICPC.2016.7503718. ISBN 978-1-5090-1428-6. S2CID 19238548.
  11. ^ 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?"
  12. ^ a b c "Increasing your team's bus factor". 2008-09-03. Archived from the original on 2016-04-16. Retrieved 2015-12-04.

Further reading