「ソフトウェア見積もり」を読んだ

概要

「ソフトウェア見積もり 人月の暗黙知を解き明かす」

https://www.amazon.co.jp/ソフトウェア見積り-人月の暗黙知を解き明かす-スティーブ-マコネル-ebook/dp/B00KR96M6K

を半分程度読んだのでノウハウについて章ごとにメモする。

残り半分を読んだ段階で記事を更新する予定。

第1部 見積もりの考え方

第1章 見積もりとは

  • 「見積もり」「ターゲット」「コミットメント」の違いを意識する
    • 見積もり:そのままの意味
      • 「この機能の実装は何人日」
    • ターゲット:実現したいビジネス上の目標
      • 「何日までにこの機能を提供したい」
    • コミットメント:機能を一定のレベルで期日までに納品するという約束
      • 「何日までにこの機能を提供します」
  • 見積もりと計画の違いを意識する
    • 見積もりは正確性が重要
    • 計画は結果が重要
    • 偉い人にターゲットを達成するための計画を聞かれているのに見積もりを単に答えてはいけない
      • 「このプロジェクトは何人月?期限は3ヶ月なんだ」
      • 「見積もってみたところ5ヶ月かかります」
      • 「ふざけるな!」
    • 開発と期日どちらが優先かどうか尋ねる
  • 良い見積もりとは偉い人の意思決定に寄与する見積もりのこと

第2章 見積もり能力のチェック

  • 直感で「90%確か」な見積もりは、実際には「30%確か」
    • なので直感で90%とか言ってはいけない
  • 見積もりなんて幅があって当然。無理に狭めようとしない

第3章 正確な見積もりの価値

  • 意図的に過小に見積もることはすべきではない
    • 過大見積もりよりも深刻な被害が起きる
    • では過大にすれば良いかというとそうでもなく、それなりに大きくしてあとは計画とコントロールで対処せよ

第4章 見積もり誤差はなぜ起きる?

  • 見積もり期間を増やしても見積もりの不確実性は上がらない
    • プロジェクト自体があやふやなのではどんなに頑張っても上がらない
    • 見積もり期間を増やすのではなく、要件定義や設計を固めることでしか上がらない
  • 休暇、病欠、トレーニング、ミーティング等は必ず発生する。そのためのゆとりをもたせる
  • 開発者の見積もりはすでに必ず楽観的であるので削ってはいけない
  • 見積もりに「コントロールノブ」を持たせてはいけない
    • コントロールノブとは見積もりに入れる主観的判断のこと
    • 見積もりの客観性と共に正確性も落ちる
  • 即興の見積もりはしない
    • たった15分の見積もりでさえもっと正確になる

第2部 見積もりの技法の基礎

第7章 数えて、計算して、判断する

  • できるときはまず何かを数える
  • 数えられない場合にのみ計算する
  • 計算すらしないのは最終手段

第9章 専門家の判断

  • タスクで分解して見積もるときは長くても2日程度の粒度にする

感想

「技術者の見積もりは常に楽観的」というのはその通りだと思った。
幅がある見積もりの中で最小の部分を提出する傾向があるような気がしているし、
実際過小に見積もる圧力があるということも書かれていた。

一方で、数えるだけの方がよほど正確に見積もれるというのは不思議だった。さすがにコード行数で数えるのはどうかと思うが。

過去の開発にかかった工数と関連データの保存および可視化が出来ていないと不可能な手法ではあるので、これらの重要性はかなり高い。

生産性向上とか言っておいて生産性を測る指標を可視化していないなんてことがザラにある状態では正確な見積もりなんて望めないということかもしれない。