概要
- ソフトウェア開発における 見積もりの難しさと虚構 について解説
- 見積もりは 正確に行うことが不可能 であるという現実
- 見積もりの本当の役割は エンジニアではなくマネージャーのため である点を強調
- 見積もりが 政治的なツール として機能している実態
- より現実的な見積もりのアプローチとその理由を提案
ソフトウェア見積もりの虚構
- ソフトウェア業界では 「見積もりは難しいが不可能ではない」 という建前が存在
- 実際には 正確な見積もりは不可能 であるというのが経験豊富なエンジニアの共通認識
- Tシャツサイズ(S/M/L)での見積もりなど、 時間見積もりを避ける工夫 が現場で多用
- しかし結局、 マネジメント層で時間換算 されてしまう現実
- 「初期見積もりを2倍にしてさらに20%加算」など、 実質的に根拠のない見積もり手法 が横行
- 「見積もり自体をやめるべきか?」という問いの背景
見積もりが不可能な理由
- 小規模で 完全に理解された作業のみ は正確な見積もりが可能
- 大半の業務は 不明点や未知の作業 が多く、事前予測は困難
- 大規模システムでは 調査・既存調査・影響範囲の把握 など、研究的要素が多い
- 伝統的な「全作業を分解して小さくすれば見積もれる」は 実際には機能しない
- 未知の作業が90%を占める ため、見積もり精度は根本的に制限される
見積もりの本当の役割
- 見積もりは エンジニアの効率化には寄与しない
- 実際、高生産性のチームは 見積もりを行わず成果を出している 事例が多い
- 見積もりはエンジニアが作るものではなく、 マネージャーや経営層の意思決定材料
- プロジェクトの見積もりが長い場合、 上層部から短縮の圧力 がかかる
- 逆に短すぎる場合は バッファ追加や増額要請 が発生
- 見積もりは 組織内の政治的交渉ツール として機能
- 「技術的に不可能」な場合のみ、見積もりが 現実を伝える手段 となる
見積もりが仕事の内容を決める
- 通常は「作業内容→見積もり」だが、実際は 「見積もり→作業内容」 が現実
- 例:6ヶ月あれば大規模なPDF機能実装、1日なら簡易なアプローチを選択
- 締切や見積もりに合わせて 実装方法や品質が決定
- エンジニアは 多数の解決策から現実的なものを選ぶ裁量 を持つ
現実的な見積もり方法
- コードを見る前に 政治的背景や期待値 を把握
- プロジェクトへの プレッシャーの有無や重要度 を確認
- 既にある見積もりに合う実装方法 を逆算して検討
- 未知の要素が多いほど見積もりは大きくなる 傾向
- マネージャーには リスク評価や複数案 を提示
- 例:「X, Y, Z全てが順調なら1週間だが、どれかで遅れる可能性が高い」
- 複数プラン(機能削減、他チーム支援、リスク選択肢)を用意
- 「どれくらいかかるか」ではなく「この期間で何ができるか」 を提示
よくある反論とその回答
- 「不確実性の中で見積もるのは嫌だ」 という技術者心理
- しかし、拒否すれば より技術に疎い人が代わりに見積もる ことになる
- 「マネジメントと妥協するのは裏切り」 という意見
- 実際は 協調的に現実的な落とし所を探る方が価値がある
- 「自分はそんな圧力を感じない」 という技術者もいる
- それは 組織の目立たない部署にいる場合が多い ため、普遍的なアドバイスにはならない
まとめ:見積もりの本質
- 一般的な認識:「作業内容を決めてから見積もり」→ 現実は逆
- 見積もりは マネージャー同士の交渉や意思決定のための道具
- 本当に不可能な場合だけ、 見積もりが現実伝達の手段 となる
- 信頼関係があってこそ、現実的な見積もりやリスク共有が可能
この内容は、 ソフトウェア開発における見積もりの現実と本質 を理解するための指針を示すものです。