人月の神話

投稿日:2007年03月28日 作成者:yasunaka

タイトルの「人月の神話」は知っている方も多いと思いますが、フレデリック.P.ブルックス,Jrが書いたシステム開発プロジェクトにおける古典的名著です。読んでおいて絶対に損はない本だと思います。そこにはその当時の大規模なプロジェクトを通して得たさまざまな知見が詰まっていて、現在でも通用する内容がいくつもあります。今日はその「人月」の問題について、です。

少なくとも日本国内では相変わらず人月単位の仕事が行われています。日経ITProで最近話題になった松原友夫さんの書いたオピニオン「日本のソフトウエア産業、衰退の真因」でも指摘されているように、システム開発の現場では裁量のない請負契約が相変わらず横行し、単なる人だしとなっているシステム会社が多いのが実体だと思います。しかしこんなことを繰り返していては、いずれ単価の安い外国のシステム開発会社に仕事を奪われるのは確実です。

3月26日に書いたプロジェクトを確実に破綻させる方法 その2において、投資額の上限を合意する方法というのを書いたのですが、日本のシステム開発ではこれを行うときに人で換算するのが、そもそもおかしいのです。これはシステム開発がタスク指向的に設計されるからだと思います。つまりシステムを開発するために必要なタスクに分解し、それぞれのタスクに必要な人数と日数を計算し、それを積み上げて…とやっているからです。これを繰り返している限り、日本のシステム開発会社はフラット化する世界との競合に敗れ、敗退するしか道がないのではないでしょうか。

デパートでオーダーメイドのスーツを買ったとします。そのときに支払う金額は、予め「生地いくら」「ボタンいくら」「仕立て工賃いくら」といったようにメニューができています。もちろんその中には最後の「工賃」のようなタスクに対する金額も含まれているのですが、デパートの場合、「今回のすそ直しには2人日かかるからいくらです」、とはいわずに、「すそ直しはいくらです」という形で値段が決められています。つまり工程を人日に換算するのではなく、その1つ1つのメニュー毎に値段が決まっているわけです。普通、物を売る場合にはこのようにメニューがあって、メニュー毎に値段が決まっているのが当たり前なわけです。

ところがシステム開発には一般的にそのようなメニューを持っている会社がない。それはタスク指向的に場当たり的にシステム開発が行われているからです。もちろんこのメニューは作るのが難しいのは当たり前です。メニュー化ができるということは、その先の開発において部品化が正しく行われているということ、そして開発工程が標準化されているということを示しているからです。つまり、このメニュー化ができた会社はフラット化する世界の中でも生き残ることができる会社になれるはずだと、私は考えています。