开发者

Is it truck factor or bus factor? [closed]

开发者 https://www.devze.com 2022-12-19 01:51 出处:网络
Closed. This question is opinion-based. It is not currently accepting answers. Want to improve this question? Update the question so it can be answered with facts and citations by editing
Closed. This question is opinion-based. It is not currently accepting answers.

Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.

Closed 5 years ago.

Improve this question

It seems that bo开发者_运维技巧th 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?


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.


The Truck Number (or Truck Factor) is the number of people with key knowledge that you cannot replace i.e. if that number of people went simultaneously under a truck you wouldn't be able to carry on developing.

I believe that certain chemical companies forbid key members of staff from travelling together for this very reason...

Discussion here: http://c2.com/cgi/wiki?TruckNumber

Here's a story about Bill Atkinson being the one key person in the Mac's truck factor - one of the key people that worked on QuickDraw during the early days of the Mac. Had a car accident apparently and people were concerned that he wouldn't be able to finish his work on the Mac's graphics software:

http://folklore.org/StoryView.py?project=Macintosh&story=I_Still_Remember_Regions.txt

A high truck number is better - i.e. it's harder to wipe out that many critical people at once...

A low truck number is worse - i.e. there is a greater risk that a few critical people could be ill, or leave or die, leaving the project in a state of unrecoverable collapse.

Pair progamming is a good way to distribute critical knowledge around a team so that the truck number is as high as possible.


The principal is the same, whether you call it:

  • bus number
  • truck number
  • bus factor
  • truck factor
  • et al

Also, the principal is the same whether or not you describe it using a higher number as being better, or a lower number being better:

  • A high bus number is good if you are describing the number of project members who could be hit by a bus and have the project survive;
  • A low bus number is good if you are describing the number of project members who survive a bus crash and have the project survive.

I did look into it once upon a time, but I don't recall which came first (see @Paolo's answer). Regardless of which came first, I have experienced enough confusion about it that I make sure all parties are using the same version of the number, high or low. ;)

0

精彩评论

暂无评论...
验证码 换一张
取 消