フューチャー技術ブログ

人月の神話を読んでみた

TIGの伊藤真彦です

この記事は秋のブログ週間の2記事目です。

この前新宿で複数の用事を済ませていた際、隙間時間が暇になったため人月の神話を買ってみました。紀伊国屋新宿本店の技術書コーナーはほぼ全ての技術書が置いてあるのではと感じるほどの物量があるのでおススメです。

名著として名高い事は知っており、タイトルに惹かれて読んでみましたがとても良いものでした、読書の秋におススメの一冊として紹介します。

人月の神話とは

image.png

皆さんは「人月の神話」という書籍をご存じでしょうか。

ITの世界には名著と呼ばれる書籍がいくつかあります。人月の神話はそのうちの一冊です。フレデリック・ブルックスによるソフトウェア工学、およびプロジェクトマネジメントに関する書籍です。

最初の刊行はなんと1975年、実に40年以上の時を経て未だに読まれている書籍です。進歩が速く、常に新しい知識が求められるイメージのIT業界において、これ程の期間変わらず支持されている書籍がどんなものか読んでみたくなりました。

書籍の概要

フレデリック・ブルックスの自身の経験に基づいた、プロジェクトの成功、失敗に関する分析、タイトルの通り人月という単位での計算をもってプロジェクトを見積もったり、遅延を解消できるという見通しが誤りであることが神話という表現を用いて展開されます。

私たちが使っている見積もり手法は、コスト計算を中心に作られたものであり、労力と進捗を混同している。人月は、人を惑わす危険な神話である。なぜなら、人月は、人と月が置き換え可能であることを暗示しているからである。

各章がどのようなトピックで記載されているかはwikipediaにもまとめられています。

人月の神話の何が良いのか

この書籍を読むことでプロジェクトが失敗する事のない最強のノウハウが手に入るわけではなく、プロジェクトが上手くいかない経験を積み重ねた人生経験を追体験するような読後感を得ることができます。

20周年記念に追記された「銀の弾などない——ソフトウェアエンジニアリングの本質と偶有的事項」といった章題からも冷静な分析眼が伺えます。

この書籍の素晴らしい所は、フレデリック・ブルックスがエンジニアであり、またエンジニアの中でも極めて難しい課題を経験してきた事から産まれる着眼点をもって執筆されている所にあると私は感じています。

エンジニア的着眼点

この書籍では、難航するプロジェクトを第1章でタールの沼と表現しています。

太古の昔から、タールの沼に落ちた巨大な獣が死にもの狂いで岸に這い上がろうとしている光景ほど、鮮烈なものはない。恐竜やマンモス、それにサーベル・タイガーが、タールに捕らえられまいとしてもがく様が目に浮かぶ。激しくもがけばもがくほど、タールは一層絡みつき、どんなに力強い獣でも、また賢く器用な獣でも、ついには沈んでいってしまう。
 大規模システムプログラム開発は、過去十年以上もの間そうしたタールの沼のようなものだった。そして、多くの強大な獣たちが、その中へ乱暴に突き落とされてきた。たいていは稼働システムを作り、這い上がってきたものの、目標とスケジュール、それに予算にかなったものはほとんどなかった。

また、同じ章でエンジニアとしての仕事の楽しみを、作る喜びと称して下記のように説明しています。

なぜプログラミングは楽しいのだろうか。プログラミングする人は、一体どんな満足を得ようとしているのだろう。
まず言えることは、物を作り上げる純粋な喜びがあるということだ。子供が泥団子ではしゃぐように、大人は物を組み立てること、特に自分でデザインしたものを作り上げることを楽しむ。

この1章の時点で作者が書籍執筆業で生きるために本を書いている人物ではなく、生粋のエンジニアである事が感じられます。以降の章で語られるプロジェクトの経験談も刺さる人にとっては共感できる内容の塊です。

プログラミング自体が楽しく創造的なものであることは同じく名著として名高い「ハッカーと画家」でも語られていました。

こうしたマインドセットの持ち主から、人月の神話はバイブルとして長らく支えられてきたのでしょう。

フレデリック・ブルックスの経験値

フレデリック・ブルックスが携わったプロジェクトはIBM のメインフレームである System/360 およびそのオペレーティングシステム OS/360の開発が大きな業績として挙げられています。

OSを作るということは、製品の用途は無限とも思えるほど膨大であり、用途、ユーザーが定義できるシステムと比べ途方もない労力が必要になることが想像できます。実際OS/360は1000人規模のチームが5年かけた5000人年のプロジェクトだったようです。

それが如何に難しいプロジェクトであるかは書籍の中でも、プログラム、プログラミング製品、プログラミングシステム、プログラミングシステム製品、という表現で説明されています。

  • プログラム: 作成者によって実行可能な完結したプログラム
  • プログラミング製品: 誰でもテスト、修正、拡張が可能なものとして信頼性を高め、ドキュメントを整備したプログラム
  • プログラミングシステム: 相互に関連するプログラムが調整され、形式が統制され、大きな仕事をするために集まったもの
  • プログラミングシステム製品: プログラミングシステムをプログラミング製品として整備するもの

OSは言うまでもなくプログラミングシステム製品の中でも究極的に大きなものです。

製品としての高い評価を得る品質を満たすためには、あらゆる入力へのテストケースを網羅し、信頼性を充分なものにする必要があります。膨大なプログラムのシステム間連携により膨れ上がった組み合わせは幾何学級数的に増えていき、単純なプログラムの9倍の労力が必要であると書かれています。

大抵は特定のユーザーに向けた用途の決まったシステム開発を経験する事の方が圧倒的に多く、業務としてこのレベルで複雑なシステムを経験する事は少ないはずです。そんなOS開発者がタールの沼に沈み苦しんだ経験であれば人生の大先輩から得られる教訓としてはこの上ないものだと思います。

何故数十年にわたり読まれるのか

この書籍で語られている事は特定の技術、また開発手法にフォーカスしたものではありません。

普遍的な事が鋭く信頼できる精度で述べられています。例えば人工知能が人間の仕事を革命的に変えていく事はない、といったことが1995年の追記の段階で書かれるなど、先進的かつ2020年基準の現時点で見ても正解と言っても良いものが書かれています。

また執筆20年目の段階で、18章『人月の神話』の命題 -真か偽かが追記され、書かれた内容が正しかったか否かを著者本人が改めて分析すると同時にまとめを行っています。

普遍的なものであるため、読むことで明日から仕事ぶりが変わるようなものではありませんが、物の見方は変わると思います。そもそも銀の弾丸は無いと書いてある本を読むわけですからこの本を読んでも明日から劇的に何かが変わるわけではありません。銀の弾丸は無い事と、人を追加してもプロジェクトの進捗は良くならない事を知ることができるわけです、ベテランの視座が手に入る書籍です。

関わったプロジェクトが上手くいかない事に悩む時は誰にもあると思いますが、先にタールの沼に沈んだ人の経験談を読むことは精神衛生を保つうえで大きく役に立つと感じました。

まとめ

  • 人月の神話は40年経っても名著として評価されている
  • 信頼できる生粋のエンジニアが書いたものであり、読者がエンジニアであればきっと刺さる
  • 内容は普遍的であるため40年経っても風化しない

個人的にはプロジェクトマネジメントの教科書的な書籍はエンジニアの言葉で書かれていない物が多く、読んでも薄味で実りになるものが少ないと感じていました。
この書籍はそういった物足りなさを埋めてくれるものであり、今回お勧めしたいと思いました。

秋のブログ週間の2つ目でした。