見出し画像

あなたは「人月の神話」を知っていますか?

人月の神話が意味する「」と「時間」が相互に交換可能な世界
は幻想である。

これはIBMでOS/360の開発グループマネージャを務めた、
フレデリック・ブルックスのソフトウェア開発における注意書きのようなものです。
今回は個人の話ではなく、プロジェクト規模の話であることを前提に聞いて頂きたい思います。
具体的に「個人」とはプログラミングスキルの上げ方やリーダーシップを身につけるためには?といったことに対し、
「プロジェクト」は”プロジェクトを成功させること”だけを焦点に置いた
話であるということになります。


【失敗するプロジェクト】

まず、何故プロジェクトが失敗するのでしょう。
これは
偶有的(アクシデンタル)な困難が約9割を占めているから”。
ソフトウェア開発は、

・本質的(エッセンシャル)な作業
・偶有的(アクシデンタル)な作業

の2種類に分類することができます。

本質的作業:ソフトウェアの性質に固有のもの(技術等)
偶有的作業:ここでは人やコストのことを表す

一つのケースでは、
スケジュールの押したプロジェクトがあり、そこでPL(プロジェクトマネージャ)は人員の投入を決定しました。
結果、そのプロジェクトは本来の遅れを取り戻すことなく、赤字となって終了したそうです。
つまり、プロジェクトが遅れた段階での人員追加は更に遅らせるだけだということになります。
人員追加するなら早いに越したことはないのです。


【ソフトウェア開発とは】

ではソフトウェア開発とは一体どのような概念なのか説明しましょう。

1 「創作活動であること」
ソフトウェアとは概念構造体(構造が目に見えない)であるが故、クリエイティブな活動となります。
英国の作家ドロシー・セイヤーズは全ての創作活動を


・概念構造体の定式化
・実際のメディアでの実装(インプリメンテーション)
・実際の使用による利用者との会話

だと述べています。これらはソフトウェア開発にも当て嵌まります。

2 「構築ではなく育てる」
一見、建築のプロセスにも似たソフトウェアの構築は概念構造体が複雑すぎて、前もって正確に指定することができません。
それは人間の脳同様、ソフトウェアが育てるものだからです。
更に言えば、創造的プロセスによって生み出されるもので、優れたものは優れたデザイナーから成ります。


【ソフトウェア開発手順書】

以上のことを踏まえてた上で、ソフトウェア開発における注意点がいくつかあります。

1 「仕様書」
仕様書は飽くまで「正確性」と「一貫性」を要されるものです。
正確性には、仕様書が形式的定義であることが求められます。ハード、ソフトウェアシステムの具体化、実装が記述されています。外部仕様に対してのみ使われることを想定すべきです。
一貫性を保持するために、まとめる作業は1人か2人がちょうど良いでしょう。


2 「大規模プロジェクト」

プロジェクトの規模に応じて各要素を調整しなければなりません。小規模であれば、4〜5人のチームが最適です。
しかし大規模になると、必要になる「コミュニケーション」と「調整作業の量」を減らさなければなりません。
作業の分割”と”機能の専門化”が必須となります。


3 「セカンドシステム症候群」
1つ目のプロダクトの課題点を全て2つ目のプロダクトに詰め込んでしまうという傾向。無駄な部分が増え、未熟なプロダクトとなることが多く見られます。


4 「会議」
週次の半日会議が必要です。
○流れ
→ 提案内容は予めミーティングに前に文書で配布しておく 
→ 解決策を多数提案 
→ そのいくつかがアーキテクトに渡され吟味 
→ 作られた修正案が利用者や実現者に渡され賛否両論が十分に書き込まれる  
→ 最終的にはチーフアーキテクトが決定

○参加者
・アーキテクト(マネージャやチーフ)全員
・ハードウェア実現者の代表
・ソフトウェア実現者の代表
・市場参加者

○メリット
・現状を説明する時間が節約
・メンバー全員が関心を寄せ、全員が権限を持っていると認識
・内部と外部の解決策が提案される
・チーフアーキテクトの意思決定権が遅延を回避


5「費用対効果」
ソフトウェアは買った方が安く済むことが多いです。
ツールや環境といったものはプログラマ一人年ほどの費用であれば、ゼロから作るよりも圧倒的に効率が良いものになります。


【最後に】

余談ですが、数々のソフトウェア開発に携わってきた私は
以上のことがプロジェクト成功の氷山の一角であると考えています。
個人で全てを把握するのはほぼ不可能ですけれど、
焦点を絞ることで皆さんがプロジェクトに更なる貢献ができることを願って記述致します。
1「個人のスキル」
2「チームとしての役割」
3「プロジェクトの成功」
4「プロジェクト外での背景」

要するに個人の主観だけでプロジェクトは成功しないということ。
どうかあなたが神話とならんことを。

いつもご覧頂きありがとうございます。もし宜しければコメント等で反応いただけますと、私が喜びます。跳ねて喜びますので反応してください。