未来のいつか/hyoshiokの日記

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

人月の神話を再読した。

何度読んでもその度に発見がある。

大阪出張のおり、行きの新幹線(帰りは大抵へべれけで寝ているので本は読めない)でぱらぱらめくってみた。

再読するきっかけは、大槻さんからご著書を頂いたからである。「ソフトウェア開発はなぜ難しいか」では、「人月の神話」を題材に、普遍的な問題を改めて平易に解説する。多くの注と参考文献の説明がついていて、初心者にとって便利な読書ガイドにもなっている。

「人月の神話」の歴史的背景を言えば1960年代はメインフレームの時代だ。コンピュータ業界はIBMに支配されていた。支配という言葉はちょっときつすぎるように若い人は思うかもしれないが、圧倒的な存在感をIBMは持っていた。

大規模ソフトウェア開発の本質的な困難さというのが、OS/360の開発によって認識されはじめた。まだソフトウェア工学と言う概念も確立していなかった。

OSという極めて複雑で大規模なソフトウェアをどのように構成するかという方法論は確立していなかった。いまでこそ、OS構成論などの教科書がいくつかあるが、当時はもちろんそのようなものは存在しなかった。コンパイラなどの構成方法も十分理解されていなかった。

このように対象に対する経験値不足は新しいものを作る以上さけて通れない。「人月の神話」の本質はそこではなくて、大規模ソフトウェアプロジェクトのプロジェクトマネジメントの側面に初めて注目した点だ。

遅れているプロジェクトに増員するとますます遅れると知られているブルックスの法則は、いまでも有効である。多くのデスマーチの現場で今日でも繰り返されている。我々は歴史から何も学んでいないのか。

妊婦を10人つれてくれば1月で子供が出来るかという例えはよく言われるが、「人」と「月」は交換可能ではない。

人月の神話が想定していたソフトウェア開発

1970年代のソフトウェア産業というのは、1)コンピュータベンダー、2)アプリケーションユーザー、3)注文アプリケーション開発者、4)市販パッケージ開発者という構成要素だった。日本では、3)がSIベンダーとして多数をしめている。

1995年に発表された20周年版で振返ってみると一番の大きな変化はまさにPCによる劇的な変化である。

PCが70年代後半に登場し、MicorsoftをはじめとするPCソフトウェアベンダーが勃興する直前である。

PC革命によって商品としての「ソフトウェア製品」が広く普及して、ソフトウェア開発の作り方も変えて行った。

20周年版で紹介されているMicrosoftの「毎晩構築」アプローチなどだ。

初版のころのヒーローはIBMだが、20周年版のヒーローはMicrosoftになる。そしてその民族誌は間違いなく、闘うプログラマだ。


40周年版

そしてさらに20年。40周年版を企画するとしたら、それは何になるのか。

この20年間の最も大きな変化はインターネットの普及において他ならない。1)のコンピュータベンダーがGoogleAppleになった。市販パッケージではなくインターネットサービスになった。ソフトウェア製品を作ってそれを配布するのではなく、ソフトウェアサービスを作ってそれを利用してもらう。

その変化は何を生んだのか。

ソフトウェア製品の場合、かつては、磁気テープ、フロッピー、CDROMなどの物理的な媒体で配布されていた。そのために、配布コストがかかったし、バージョンアップの頻度も年単位であった。バグが発見されるとその修正コストは高かったし、ユーザーにとってはすぐに修正を受けられないので、バグを回避するための余分なコストを払わなくてはいけない。

一方、Webで提供されるソフトウェアサービスであれば、配布のコストは原理的には発生しないので、機能の修正はソフトウェア製品に比べ格段に容易だ。そして素早い。

MVP (Minimum Viable Product)最低限の機能を持つ製品を早めに出荷し、顧客の反応をみながら、それを成長させていく。構築(build)して計測(measure)して学習(learn)するというプロセスを高速で回転し、どんどん学び改良していく。その変化のスピードが、ソフトウェア製品の場合、年単位、よくて半年単位だったのが、ソフトウェアサービスの場合、週単位、早ければ日の単位で高速に成長して行く。

A/Bテストとして知られる、データ重視のアプローチは、ソフトウェアサービスだからこそ低いコストで高速に実施でき、サービスを改良していく。

ソフトウェア製品の作り方も、インターネット時代になって、インターネットを前提とした配布になった。そのため、物理媒体で配布していたころと比較すれば、はるかに容易に利用実態を把握することができて、データ重視のアプローチをとりやすくなった。

また、OSSのようなコミュニティーベースのソフトウェア製品の作り方もインターネットを前提とした大規模ソフトウェア開発に影響を与えた。

ブルックスの法則が、未だに有効なのは、ソフトウェアは人が作るという当たり前のことが変わっていないからだ。いいソフトウェアは人が作る。

40周年版はソフトウェアサービスを作る観点からの議論が追加されることを期待している。