法則一覧

第94条組織

バス係数

システムを動かし続けられる人が少ないほど、その将来は一人ひとりが辞めずにいることにかかってくる。

心得

一人しかできないことは、いま潰すべきリスクだ

どうするか

一人しか変更も運用もできない箇所を洗い出す。それぞれについて、誰も読まない引き継ぎ文書を書くのではなく、次の実際の変更で二人目をペアにつける。オンコールとコードレビューを持ち回りにして、普段の仕事のついでに知識が移るようにする。予定された不在は訓練として扱う。一週間の休みでシステムが止まるなら、誰かが本当に辞める前に直す。

なぜ起きるか

知識は放っておくと偏りやすい。ある部分を書いた人が一番速く直せるので、次の変更もその人に回り、そのたびに差が開く。誰か一人を欠かせない存在にしようと決めた人はいない。その都度いちばん安い選択をした結果で、そのリスクは本人が辞めるか、病気になるか、ただ休暇を取るまで見えない。Avelino らが GitHub の人気プロジェクト133件を調べたところ、65%はトラック係数が2以下だった。開発者が一人か二人抜けるだけで、大半のファイルを書いた人がいなくなる。知識を広げるのは、来ないかもしれない損失に備えて今の時間を使うことなので、誰かがはっきり目標に掲げない限り、スケジュールの議論ではたいてい負ける。

当てはまらなくなるとき

所有の深さ:ある領域を持つ専門家は、少しずつ知っている人の持ち回りよりずっと速く動き、問題にも多く気づく。小さなチームがあらゆる知識を二人目にも持たせようとすると、ない時間を使うことになる。

出典

出所は口伝。主要人物が「バスにはねられたら」プロジェクトはどうなるのかという問いは 1994 年には出回っており、この年 Michael McLay が Python のメーリングリストに「If Guido was hit by a bus?」を投稿している (1994 年 6 月 29 日。python.org のメーリングリストアーカイブ python-1994q2 の 1040 番)。計測は Guilherme Avelino, Leonardo Passos, Andre Hora & Marco Tulio Valente『A Novel Approach for Estimating Truck Factors』(ICPC, 2016)。トラック係数の定義 ("the minimal number of developers that have to be hit by a truck (or quit) before a project is incapacitated") と、"the majority of our target systems (65%) have TF ≤ 2" という結果の出典。

原典を読む

引用するとき

Hammurabi『第94条 バス係数』 https://kanywst.github.io/hammurabi/ja/laws/bus-factor/

BibTeX
@misc{hammurabi-bus-factor,
  title  = {バス係数},
  author = {{Hammurabi contributors}},
  note   = {Hammurabi, § 94},
  url    = {https://kanywst.github.io/hammurabi/ja/laws/bus-factor/}
}

本文は CC BY-SA 4.0 です。Hammurabi の名前と記事へのリンクを添えてください。

XBlueskyはてブLinkedIn

コラムで読む

関連する法則

GitHub で誤りを指摘する