人月の神話を読んでみて
こんばんわ!
この前、「人月の神話」という本を読んでみました。
が、なかなか難しい内容だったので、簡単に所々まとめてみました。
「人月の神話」は、ソフトウェアエンジニアリングとプロジェクト管理に関する有名な本で、フレデリック・ブルックスによって書かれました。この本では、ソフトウェア開発の困難さと複雑さを説明するために、多くの比喩が使われています。
それでは書いていきます~
タールの沼
「タールの沼」は、ソフトウェア開発プロジェクトが遭遇する可能性のある困難や問題を象徴するものと言えます。タールの沼は、見た目は無害そうに見えますが、一度中に入ると抜け出すのが非常に困難な場所です。これは、ソフトウェアプロジェクトが始まった当初は簡単そうに見えても、深入りしていくと予想外の困難や複雑さに直面することを表しています。
例えば、新しい機能を追加するためにコードを変更すると、それが他の部分に予期しない影響を及ぼす可能性があります。これは「タールの沼」に足を取られ、抜け出すのが難しくなる状況を象徴しています。また、プロジェクトの規模が大きくなるにつれて、その複雑さと管理の困難さも増す傾向があります。これもまた、「タールの沼」が深く広がっていく様子を表しています。
人月の神話
本書の主要なテーマの一つは、「人月の神話」です。これは、ソフトウェア開発の「単位」である「人月」という概念が、神話に過ぎない(つまり、意味をなさない)という悲しい真実を軸に、ソフトウェア開発が如何に困難を伴うものであるかを説いています。
「人月」とは、1人が1ヶ月働くことで達成できる作業量を指します。しかし、ブルックスは、人と月が交換可能であるという考え方は誤りであると主張しています14。つまり、10人月の仕事=1人で10か月かかる仕事は、「人月という単位が絶対であれば”10人で1ヶ月”でできるハズ」だが、そんなことは起こりえない、というのが「人月の神話」です。
このように、「人月の神話」は、ソフトウェア開発の困難さと複雑さを理解するための重要な概念を提供しています。それは、見かけ上の簡単さの背後に潜む困難さと複雑さを、我々に思い起こさせます
セカンドシステム症候群
この症候群は、最初に開発されたシステムが成功した後、次に開発されるシステムが過剰な機能追加や複雑化によって失敗する現象を指します。開発者が初回の成功に自信を持ち、その結果として次のプロジェクトで過剰な機能や複雑な構造を追加しようとする傾向があります。
セカンドシステム症候群の主な原因は、開発者の過信や、ユーザーからの過剰な要求、そして管理層の期待の高さなどが挙げられます。これらの要素が組み合わさると、システムは必要以上に複雑になり、結果として開発が困難になり、失敗する可能性が高まります。
この問題を解決するための一つの方法は、開発者が自己制御を強化し、必要な機能だけを追加することです。また、プロジェクトの初期段階で明確な目標を設定し、全てのステークホルダーからのフィードバックを収集し、計画に反映させることも重要です。
プログラムメンテナンス
プログラムメンテナンスの基本的な問題は、欠陥の修正が実質的には別の欠陥を生み出す可能性(20~50%)を秘めていることです。つまり、この過程は全体として、2歩進んで1歩下がるとなります。
また、広く利用されているプログラムをメンテナンスするコストを合計すると、典型的には開発コストの40%以上になるとされています。これは、副作用の見落としなどにより、ある不具合の修正が別の不具合を生むことがままあるからです。
さらに、ソフトウェアの構造がまったくきれいなままだったり、ドキュメントが非常に良かったりでもしない限りは、遠くに及ぶ副作用には見落としが発生するだろうと指摘されています。完璧な回帰テストは理想だが、それを実現するためのコストはとても高いとも述べられています。
したがって、「人月の神話」におけるプログラムメンテナンスは、ソフトウェア開発の困難さと複雑さを理解するための重要な概念を提供しています。それは、見かけ上の簡単さの背後に潜む困難さと複雑さを、我々に思い起こさせます。
破局を生み出す
これらの原則を適用することで、プロジェクトの遅延を防ぎ、より効率的なプロジェクト運営を行うことが可能になります。
スケジュール無くして、スケジュール遵守は無い
「スケジュール」が無ければ遅延することはありませんが、同時に「スケジュール」が無ければスケジュールが順守されることもありません。
確固たるマイルストーンを置こう
マイルストーンを鋭利な刃のようにあいまいなところをなくすことは、上司が確かめられるようにすることより重要です。
遅れは悪だと認識せよ
遅れてよい物事はありません。遅延=悪だと強く心に刻み込みましょう。
そして、隠すな!
遅延は起こるものです。しかし、それは「まあいいや」ではなく、「起こるべからざることが起こっている」という認識で、周囲に共有され、必要に応じ、然るべき対策が講じられるべきなのです。