『人月の神話』のアウトプット

はじめに

人月の神話を読みました。
この本は、40年も前に、「人」と「月」が交換可能である、という思想が『神話に過ぎない』と述べたソフトウェアの古典的名著です。印象的な部分をピックアップして自分用のメモアウトプットとして残しておきます。

参考リンク:人月の神話

タールの沼

プログラムを「システム」「製品」にするのは大変なこと

  • 個人利用目的のプログラムを「システム製品」にするには9倍のコスト
  • 一般的な作り方、テストカバレッジ、ドキュメント等に3倍のコスト
  • デザイン、コンポーネントの統合化等に3倍のコスト

これ、システム開発したことがない人からすると見えにくいコストですよね…。

デモとリリース製品にも同じことが言えると思っていて、「デモはサクッと作れたのに、きちんと作るとなるとそんなにかかるんだ!なんで?」とよく聞かれます。

しかも、ビジネスサイドから見ると、ドキュメントはまだしもコーディング規約の遵守やリファクタリング、テストコードなど『技術的負債』に関わるコストは、今目の前で動いている製品の挙動に何も変化がないので、重要性を実感できず相互理解が難しかったりします。これからもきちんとコミュニケーションしなくては、と感じる章です。

人月の神話

スケジュールに時間的余裕のないことが原因で失敗したソフトウェアプロジェクトはそれ以外の原因で失敗したプロジェクト全部を合わせたものよりも多い。美味しい料理に時間がかかるのと同じで、急かせない仕事がある。

人月は「人」と「月」が相互に交換可能ということを意味している危険な神話

  • 完全分割な仕事ならば1人で10時間が、10人で1時間になる
  • ソフトウェア開発は教育や進捗確認、会議などコミュニケーションコストがかかる
    • n人いれば、n(n-1)2 に比例して時間がかかる
  • 人を追加することが、スケジュールを長引かすことはあっても、短くすることはない

完全分割な仕事というのは、ビラ配りや物流倉庫の仕分け等の単純作業のことだと思います。

それとは異なり、チームでコミュニケーションを取りながら進めなければいけない仕事にソフトウェア開発があります。多くの知識労働は同じような特徴を持つのではないでしょうか?このように人と人がチームで相互に影響を及ぼしながら進む仕事では、単純に人を追加することは危険なわけです。

外科手術チーム〜貴族政治、民主政治、そしてシステムデザイン

規模が小さい場合は、少数精鋭の方が大量のメンバーで臨むより生産性が高い。
一方で、5,000人年の仕事に、10人の精鋭チームで取り組んだ場合、10年で完成する。これは「時間がかかりすぎている」と言わざるを得ない。

少数精鋭で取り組めば、生産性が高いのでトータルコストは低くなるが、開発期間が長くなりすぎる

そこで、コミュニケーション負荷を徹底的に削減し、少人数による製品コンセプトの完全性維持とサポートスタッフによる生産性向上を目指す。

コンセプトの完全性こそ、システムデザインにおいて最も重要な考慮点。
コンセプトの完全性を得るには、1人ないし少人数がコンセプトをコントロールしなければならない。これはエリートに集権する貴族政治といえる。


これは「議論は対等、意思決定は主従」の構造なんだと思いました。

貴族政治は、昨今におけるサーバント・リーダーシップやティール型組織、ホラクラシーと逆の忌み嫌われる思想ですが、ソフトウェア開発では「フラットな民主政治はコンセプトの崩壊」を意味します。船頭多くして船山に上る状態・いい兄貴状態はダメだということです。

数人で議論してコンセプトを固めないと、いつまでたっても何をやるのか決まらない。何かを決める行為は、ごく限られたメンバーが強い意志と責任を持って行う作業というメッセージだと感じます。しかし、行き過ぎると強権政治のようにもなります。このバランスが大事ですね。

バベルの塔は、なぜ失敗に終わったか?

  • 明白な使命あるいは目的があった
  • 要員は十分にあった
  • 材料であるレンガとアスファルトも十分にあった
  • 時間的制約をうかがわせる記述はなく、時間も十分にあった
  • 石工術の理解など技術も十分にあった

バベルの塔プロジェクトは、コミュニケーションとそこから生まれる組織がなかったために失敗した。

コミュニケーションを円滑化するためには、非公式の会話や技術的な定例会議、ドキュメントが効果的。

組織の目的は、必要となるコミュニケーションと調整作業の量を減らすことにあり、
コミュニケーションは、作業の分担機能の専門化で減らすことができる。


バベルの塔が失敗した理由をプロジェクト管理の観点から分析しています。その理由はズバリ、リソースや技術不足ではなく、コミュニケーション不足です。

創世記に登場するノアの箱舟に次ぐ、2番目に古いプロジェクトの失敗理由がコミュニケーション不足であり、今なお多くのプロジェクトが同じ理由で失敗しているので、不変の課題なんだと思います。

銀の弾などない

ソフトウェアのコストを急激に小さくしてくれる特効薬 銀の弾などどこにも見当たらない。
ソフトウェア開発は概念上の骨の折れる仕事であり、魔法のような解決先は身近にはない。

それは、ソフトウェア開発が4つの点で困難なものだから。

  • 複雑性
    • プログラムは非常に複雑
    • そのため、コミュニケーションが難しくなり、欠陥やスケジュール遅延につながる
    • 運用管理し続けることも難しい
  • 同調性
    • 組織構造や既存のルールに従わないといけない
    • この依存を作る人の意思にによるものなので難しい
  • 可変性
    • 物理的なものではなく思考の産物であり融通性に富んでいる
    • 状況に応じて簡単に変更し続けられることが期待されているので難しい
  • 不可視性
    • 目に見えないし、空間的に表現できるものでもない
    • そのため、複数の人間のコミュニケーションをひどく妨害する

人月の神話の結論は、ソフトウェア開発は本質的に難しいものである。これを認識して、向き合っていくしかない。ということなんだと思います。

また、何よりも重要なのは、エンジニアが行うソフトウェア開発もマネージャーが行う組織運営も本質的に一緒だということです。上の、複雑性・同調整・可変性・不可視性どれもが組織にも当てはまります。

「組織は人の問題だから難しい」とよく言われますが、その難しさを噛み砕いて定義してくれたのが人月の神話だと思います。

変化の速い不確実な時代と言われ始めた昨今で、マネージャーの仕事は難しいと言われていますが、ビジネスが高度経済成長期の大量生産で良かった時代から、ソフトウェア開発はその難しさである「複数人のコミュニケーション」に向き合い、様々は事例や法則、アンチパターンを見つけてきました。

現代に生きるマネージャーはソフトウェア開発の辿った歴史を学ぶことで組織活動のスループットを最大化しやすくなると改めて感じた書籍でした。

この記事の内容が役に立ったと思いましたら、SNSで記事を共有していただけますと幸いです。