見出し画像

人月というアレな概念

人月という考え方になぜ問題があるのか?問題があるとしてではどうするべきか?という話をします。

人月とは

1人が1か月で行うことのできる作業量(工数)を表す単位
                          人月 - Wikipedia

で、人×時間で表す単位です。例えば、2人が2ヶ月稼働する作業量は 2人 × 2ヶ月 = 4人月というように計算します。この人月はソフトウェア業界では伝統的に使われる工数見積の手法です。

しかし、この人月という考え方には問題があります。それはソフトウェア開発の古典的な名著「人間の神話」に書かれているブルックスの法則が端的に示しています。

ブルックスの法則とは

「遅れているソフトウェアプロジェクトへの要員追加は、プロジェクトをさらに遅らせるだけである」

というものであり、何故これが言えるかというとブルックスは以下の3つを挙げています。

1. 新たに投入された開発者が生産性の向上に貢献するまでには、時間がかかる。
 ソフトウェアプロジェクトは、複雑な作業である。また、新たにプロジェクトに参加した人は、仕事に取りかかる前に、まず開発の現状や設計の詳細などを理解しなければならない。つまり、新たに人員を追加するには、その人員を教育するために、リソースを割かなければならないのである。したがって、人員の増加がチームの生産性に与える効果は、短期的にはマイナスになる。また、プロジェクトに慣れない間はミスを犯しやすいので、新たなバグが挿入されることが多くなり、その結果、プロジェクトがさらに遅れる可能性もある。

2. 人員の投下は、チーム内のコミュニケーションコストを増大させる。
 プロジェクトを進めるうえで、プロジェクトチームは、協力して同じ課題に取り組む必要がある。しかし、これを実現するには、調整のためのコストがかかる。一般に、 n人が協調して仕事を進めるためには、n(n-1)のコミュニケーションチャンネルを調整する必要がある。したがって、プロジェクトの人員に対してコミュニケーションコストは、n^2のオーダーで増加することになる。単純にいえば、開発メンバーを2倍に増やしたチームは、それに伴って4倍のコミュニケーションコストを負担するのである。

3. タスクの分解可能性には限界がある。
 ホテルの部屋の清掃のような分解可能性の高いタスクであれば、人員投入によってタスク全体の所要時間は短くなる(作業者同士の干渉が起きないかぎり)。しかし、分解可能性の低いタスクもある。1人の妊婦が9か月で赤ちゃんを出産できても、9人の妊婦が1ヶ月で赤ちゃんを出産することはできないのである。

                    ブルックスの法則 - Wikipedia

人月は人の熟練度を考慮していません。人は交換可能なものとして算定する概念なのです。したがって、ベテランのエース級エンジニアの1ヶ月も、新人エンジニアの1ヶ月も同じ1人月となります。

人月は管理コストを考慮していません。チームが成果を出すためにはチームをまとめる、まとまるコミュニーケーションが必ず必要ですが、それをゼロ算定しています。

人月はタスクを無限に分解可能としています。10人月かかるプロジェクトは1人で行えば10ヶ月かかるが、10人で行えば1ヶ月で行えるという考え方をします。しかし引用の通り、現実には1人の妊婦が9か月で赤ちゃんを出産できても、9人の妊婦が1ヶ月で赤ちゃんを出産することはできないのです。

人は交換可能で、増員による管理コストもかからず、タスクは無限に分解可能という思想が通底しているのが人月という概念です。ですので、プロジェクトに増員すれば遅れているプロジェクトが巻き返せるという発想になってしまうのです。どうかしています。

さて、ではこのように問題がある人月ですが、しかし、現在でも多くのプロジェクトで使われています。何故かというと、人月にとって代わる概念がないからです。FP(ファンクションポイント)法など、沢山の見積手法が提案されていますが、普及に至っていません。それは、人月計算ほど習得・理解が楽ではなく、自組織の過去データを積み上げる習慣がない組織では運用できず、よって普及しておらず、(もっとも大きい理由として)顧客に理解してもらえないから、です。

では、どうするか? 人月を「人」と「月」に分けた場合、「人」が含まれていることが問題なのだと気づきます。つまり、熟練度や管理コストや分解可能性の限界を無視してしまうのは「人」が単位に入ってきてしまうからなのです。実際には「人」はそんなに理想的なモノじゃない。

ですので、外部(つまり顧客)には人月ではなく、「月」で表現するのが次善の策となります。工数見積は人月で行います(例えば4人月かかるとする)。しかし、それを外部に提示する際には月で提示する(「当社が対応する場合は本プロジェクトは3ヶ月でご提供致します」)。

人気の工芸品などを注文してみるとわかりますが、有無を言わさず「半年後の納品になります」というように宣告されます。「6人月です」とは言いません。半年かかるといったらかかるのです。

人を交換可能とする概念は、実際には交換可能ではないことから、はじめから現実と乖離しているわけです。現実と乖離している概念を土台にした計画が計画通り行くはずがないのです。


この記事が気に入ったらサポートをしてみませんか?