tags:

views:

249

answers:

4

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?

+5  A: 

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.

Paolo
The corollary is that a higher truck factor leads to employees that feel more expendable and replaceable - after all, the project will probably go on even if they're creamed by a truck.
FrustratedWithFormsDesigner
In some parts of America, it's a "Bus Factor" because we worry more about being hit by a bus than by a truck. No good reason for that. Any more than there's a good reason for Apple Pie being the "America" dish. But "Bus Factor" would be slightly more common to Americans than "Truck" factor.
S.Lott
@S.Lott -- haha, I love the reasoning. :)
jtsnake
Well, I have yet to hear of a "Lorry Factor".
FrustratedWithFormsDesigner
I thought McDonald's was the American dish!
trinithis
@trinithis: From outside it may look that way. And all the objective evidence may point that way. But the phrase is "Mom and Apple Pie".
S.Lott
here, it seems to be a higher probability of being hit by a taxi/cab...
icelava
+1  A: 

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. ;)

JMD
+1  A: 

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, German 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.

cartoonfox
+1  A: 

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.

JeffH