未来のいつか/hyoshiokの日記 このページをアンテナに追加 RSSフィード Twitter

2013-02-03

人月の神話を再読した。

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

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

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

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

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

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

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

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

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

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

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

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

PC70年代後半に登場し、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周年版はソフトウェアサービスを作る観点からの議論が追加されることを期待している。