未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

ブルックスの法則

ムーアの法則(18ヶ月で半導体の能力が2倍になる)というのは有名だが、それに比べてブルックスの法則は知られていない。

http://commons.wikimedia.org/wiki/File%3AFred_Brooks.jpg *1
ブルックスは1960年代、IBM System/360用オペレーティング・システムOS/360の開発責任者で、後にそのときの経験をもとに人月の神話という本を書いた。
大規模ソフトウェア製品開発の難しさを書いた画期的な書物である。IT産業に従事しているなら必読の書である。ソフトウェア開発あるいはプロジェクトマネジメントに関わる人はだまされたと思って読んだ方がいい。わたしの日記でも何度となく紹介している。
それはともかく第二章人月の神話だ。次のような例題がある。12人月かかると見積もられた仕事があるとして、3名で4ヶ月でその作業を完了すると考えた。そして一月毎にチェックポイントA/B/C/Dをもうけた。
さて、一月で終わると考えていたAが二ヶ月かかって完了したとする。当初の予定ではあと二ヶ月である。どうするか。管理者が取るべき方法は次である。

  1. 当初の見積もりは正しかったのだけど、最初の工程だけが間違っていた。すなわち残りは9人月であると推定する。9人月分の作業があるので、それを2ヶ月で完了するには9/2=4.5人が必要になる。3人に加えて2名追加する。
  2. 当初の見積もりが間違っていて、12人月ではなく24人月必要であった。すでに6人月分作業をしているので残り18人月の工数が必要になる。2ヶ月で完了するためには18/2=9人が必要になる。当初の3人に6名追加する。
  3. 線表(スケジュール)を立て直す。新しい計画では時間を十分にとる。
  4. 作業目標を調整する。仕事を減らす。

さて、どの方法が取るべき方針か。最初の2つのケース、作業目標とスケジュールを変更しないで当初の目標通り4ヶ月で完了しようとするのは破滅的である。
仮に2名追加するとして、その人たちの教育のコスト、3名でやっていた作業を5名でやるので、作業のやり直し分割のコストなどがあらたに発生し、それらのコストはあらかじめ見積もられていなかったので、結局期日通りに完了はしないのである。6名追加する場合は、さらにそのコストは増加する。
ここで、ブルックスの法則である。「遅れつつあるプロジェクトに人を追加するとさらに遅れる
ブルックスが書いている通り、スケジュール通りに完了したければ、作業目標を減らす(実装するものを減らす)しかないのである。
これはソフトウェア製品開発において50年以上前に発見され今なお正しいのである。しかし、ほとんどの現場ではブルックスの法則は知られていないし、仮に知られていたとしても実践されていない。
遅れつつあるプロジェクトに人を追加するというのは、火に油を注ぐようなものである。この法則を理解していない諸氏は、人月の神話を読んだ方がいい。ともかくだまされたと思って読んでください。プロジェクトマネジメントがどうだこうだ言う前の共通知識、語彙の形成のため、皆で読んだ方がいい。その上で各プロジェクトの特殊性などを勘案して作業をすすめる。
あなたの上司は人月の神話を読んだことがあるのだろうか?聞いてみよう。

*1:By Copyright owned by SD&M (www.sdm.de) [CC-BY-SA-3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons