It seems that both these terms get thrown around a lot. Both, I think, describe the same idea. Which was established first?
Also, it seems like some people describe it as a good thing to have a low x factor, while others describe it as a good thing to have a high x factor. Which is it?
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.
The simple explanation for calculating a project or team's bus factor is to say: “What is the minimum number of people that, if absent, would prevent work from continuing?” If a project cannot continue because a specific person is unavailable, you have a bus factor of 1.
Good communication within a team ensures that information is shared, and further reduces bus factor. Practices like daily stand-ups, as well as frequently switching which other team members individuals work with (whether pairing or not), can help ensure knowledge is shared among all team members.
A high bus factor means that there are several individuals who know enough to successfully complete a project if an adverse event were to occur, such as a colleague falling ill, resigning, or going on maternity leave. Teamwork increases the bus factor for any project, and therefore reduces risk.
You want a high truck/bus factor:
Truck Factor (definition): "The number of people on your team who have to be hit with a truck before the project is in serious trouble"
(From: http://www.agileadvice.com/archives/2005/05/truck_factor.html)
i.e. you don't want parts of the code that only one person knows how it works or only one person can extend/maintain. Knowledge should be spread amongst the whole team via things like wiki info and pair-programming.
Wikipedia says bus number is "more commonly known as truck number" But in the US, "hit by a bus" is practically an idiom, while "hit by a truck" is not (although either phrase is easily understood.) Regarding high/low being good, the wikipedia article says:
"High bus numbers are good (with the best case being equal to the number of developers on a project). This means all developers understand the codebase more or less equally. A low bus number (especially, one) represents a high risk."
I'd add to what @cartoonfox said: Promiscuous pair progamming is a good way to distribute critical knowledge around a team so that the truck number is as high as possible. If you don't swap pairs often and with many different team members, knowledge isn't distributed very quickly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With