人月の神話
カレンダーの時間が足りなかったせいで失敗したプログラミング・プロジェクトは、その他のすべての原因で失敗したプログラミング・プロジェクトよりも多い。 More programming projects have gone awry for lack of calendar time than for all other causes combined.
私たちが使っている見積もり手法は、コスト計算を中心に作られたものであり、労力と進捗を混同している。人月は、人を惑わす危険な神話である。なぜなら、人月は、人と月が置き換え可能であることを暗示しているからである。 Our estimating techniques, built around cost-accounting, confuse effort and progress. The man-month is a fallacious and dangerous myth, for it implies that men and months are interchangeable.
多数の人々の中で、仕事を再配分することによって、さらなるコミュニケーションの労力が発生する。すなわち、教育と相互連絡である。 Partitioning a task among multiple people occasions extra communication effort ― training and intercommunication.
ブルックスは、パイロットプラントという考え方を紹介する。
そして、ブルックスは、その考え方をソフトウェア・プロジェクトでも活用するべきであると主張する。
ブルックスによると、最初に作られるシステムは、粗悪である。
ブルックスは、そこから次のように主張する。
そのため、次のようなことが起こる。
ファーストシステムが捨てられた後に開発されるシステムをセカンドシステムという。このセカンドシステムは、ファーストシステムより洗練されている。このセカンドシステムを製品として納品するべきである。
ソフトウェアは、目に見えない。そのため、新しいシステムは、それが完成したときには、まだ十分に理解されていない。利用者がそれを使うようになったときに、初めて理解されるのである。つまり、利用者は、新しいシステムを使うことを通して、そのシステムを深く理解するのである。そして、システムについての理解が深まると、利用者は、システムに異なる要求をするかもしれない。そして、システムは、利用者が変更した要求に合わせて、変更されるべきである。システム要求の変更は、ある時点までは可能であるが、ある時点を境にして、コードが凍結されるべきである。なぜなら、そうしなければ、システムは、永久に完成しないからである。そして、そのとき受け入れられなかった変更要求は、そのシステムの次のバージョンまで延期される。