page icon

経験主義的な見積りと計画

経験主義的な見積りと計画はなぜ重要か?

簡単に言うと、経験主義的な見積りと計画は「サッカーチームの試合分析」のようなものです。サッカーチームは試合後に必ずビデオ分析をしますよね。パス成功率、シュート本数、走行距離といった実績データを見ながら、「この選手のスタミナはこれくらい」「この戦術だと平均何点取れる」という過去の実績を元に、次の試合に向けた練習メニューと試合戦術を組み立てます。「気合いで頑張れば勝てる」という精神論ではなく、個人とチーム全体の実績データを元に現実的な目標と計画を立てるからこそ、着実に強くなれるのです。開発チームも同じで、過去のベロシティやリードタイムといった実績データを元に計画を立てることで、達成可能で信頼性の高いプロジェクト遂行ができるようになります。
もう少し正確に言うと、経験主義的な見積りと計画は過去のデータと実体験に基づいて将来の作業を予測し、現実的で達成可能な計画を策定するアプローチです。従来の理論的な計画手法とは異なり、実際に発生した事実とチームの実績を基盤とすることで、不確実性の高い現代のソフトウェア開発における予測精度を大幅に向上させることができます。このアプローチにより、楽観的すぎる前提や根拠のない見積りによるプロジェクト遅延や予算超過を防止し、ステークホルダーからの信頼獲得と持続可能な開発プロセスの確立を実現します。
具体的には、Standish Group CHAOS Reportによると、ソフトウェアプロジェクトの成功率は約30%程度にとどまり、約50%が予算超過や遅延などの問題を抱え、約20%が中止に至ると報告されています。また、スティーブ・マコネルが『ソフトウェア見積り』で紹介する「不確実性の円錐」モデルでは、プロジェクト初期段階の見積りは0.25倍から4倍の幅を持つとされており、この問題に対処する企業が増えています。Atlassian社では過去のベロシティデータを活用した見積り手法を提供しており、複数のスプリントを経ることでより正確な予測が可能になると報告しています。日本でも、サイボウズ社がスクラム開発を導入し、開発チーム全体でアジャイルな見積りと計画の実践を進めています。

ベロシティとバーンダウンによる予測可能性の向上

経験主義的な見積りの核心となるのが、ベロシティ(チームが一定期間で完了できる作業量)とバーンダウン(残作業の減少ペース)の測定です。これらの指標により、チームの実際のパフォーマンスを定量化し、将来の計画に活用できます。
スプリント計画ストーリーポイント完了ストーリーポイントベロシティ完了率
Sprint 125202080%
Sprint 222181882%
Sprint 325222288%
Sprint 424212188%
Sprint 526232388%
Sprint 622191986%
平均2420.520.585%
ベロシティの測定では、単純な平均値だけでなく、トレンドや変動要因の分析が重要です。チームの学習効果、技術的な複雑さ、外部要因の影響などを考慮して、より精度高く予測します。
重要なのは、ベロシティを個人やチームの評価指標として使用しないことです。ベロシティは計画立案のためのツールであり、パフォーマンス評価の手段ではありません。この点を明確にすることで、チームは正直で正確なデータを提供し、より良い計画につなげることができます。

プランニングポーカーによる集合知の活用

見積りの精度を向上させるためには、チーム全体の知識と経験を組み合わせることが重要です。プランニングポーカーは、個人の偏見を排除し、集合知を活用する効果的な手法です。

プランニングポーカーのプロセス

プランニングポーカーでは、フィボナッチ数列(1・2・3・5・8・13・21)を使用して相対的に見積ります。この手法により、細かすぎる区別を避け、適切な粒度での見積りが可能になります。また、全員が同時にカードを出すことで、影響力の大きなメンバーの意見に引きずられることを防ぎます。
見積りの際は、最高値と最低値を出したメンバーが理由を説明し、全体で議論します。この過程で、見落としていたリスクや複雑さが明らかになり、より精度の高い見積りにつながります。重要なのは、見積りの正確性よりも、チーム全体での理解の共有を重視することです。

不確実性への対応とリスク管理

経験主義的な計画では、不確実性を認識し、それに対応する仕組みを組み込むことが重要です。すべてを正確に予測できないという前提に立ち、変化に適応できる柔軟な計画を策定します。

不確実性の円錐モデル

コーンオブアンセルティンティ(不確実性の円錐)モデルを活用し、プロジェクトの進行に伴って見積りの精度が向上することを認識します。初期段階では0.25倍から4倍の幅(上限と下限の比が16倍)を持った見積りから始まり(例:本来10週間のプロジェクトが2.5〜40週間と見積もられる可能性がある)、情報が増えるにつれて精度を高めていきます。
バッファー管理も重要な要素です。個々のタスクではなく、プロジェクト全体やマイルストーンレベルでバッファーを設けることで、局所的な遅延が全体に与える影響を最小化します。また、リスクの識別と優先順位付けを行い、影響度の高いリスクに対しては事前の対策を講じます。

実験とプロトタイピングによる学習の加速

経験主義的なアプローチでは、大規模な計画を立てる前に、小規模な実験やプロトタイピングを通じて学習を加速させることが重要です。これにより、技術的な不確実性を早期に解消し、より精度の高い見積りが可能になります。
タイムボックス化された実験(例:2-5日のスパイク)を設定し、技術的な懸念事項を検証します。プロトタイプの成果物と所要時間を記録し、本格開発の見積りに反映します。実験結果は成功・失敗に関わらず学習として蓄積し、組織のナレッジベースに貢献します。
重要なのは、実験の目的と成功基準を明確にし、無制限に時間を費やすことを避けることです。「この実験により何を学びたいのか」「どのような結果が得られれば十分か」を事前に定義し、効率的な学習を実現します。

カテゴリ内クライテリアの解説

TEAM-6-1 チームのベロシティを把握しており、変化を計測し安定しているかどうかを確認できているか

  • 目的: 過去の実績データに基づく見積りにより、予測精度の向上と現実的な計画策定を実現すること
  • 実装のポイント: チームのベロシティを継続的に測定し、最低でも3-6スプリント分のデータを蓄積してから見積りの参考にします。季節性や外部要因の影響も考慮し、単純な平均値ではなく、トレンド分析を含めて予測します。データの収集と分析を自動化できるツールを活用し、継続的な改善を図ります。過去のデータだけでなく、チーム構成の変化や技術的な進歩も見積りに反映させます
  • 注意点: データは参考値であり、新しい技術や未経験の領域では補正が必要になることを理解しておくことが重要です

TEAM-6-2 見積りの際に、チーム全体で議論し、合意形成を行っているか

  • 目的: 集合知の活用により見積り精度を向上させ、チーム全体のコミットメントを確保すること
  • 実装のポイント: プランニングポーカーなどの構造化された手法を使用し、個人の偏見を排除した合意形成を行います。見積りの根拠と前提条件を明文化し、後から検証できるようにします。異なる意見が出た場合は、その背景にある仮定や懸念を探り、建設的な議論を促進します。見積りセッションでは十分な時間を確保し、急がされることなく議論できる環境を整えます
  • 注意点: 合意形成に時間をかけすぎることで、見積り作業自体が非効率にならないよう、適切な時間配分が必要です

TEAM-6-3 計画の立案時に、過去の類似プロジェクトの実績を参考にしているか

  • 目的: 類似プロジェクトからの学習により、計画の精度向上と同様の問題の回避を図ること
  • 実装のポイント: プロジェクトの特徴(技術スタック、チーム規模、複雑度等)をタグ付けして分類し、類似性の高いプロジェクトを特定できるデータベースを構築します。過去のプロジェクトで発生した課題とその対策も記録し、新しいプロジェクトの計画に反映します。定期的にデータベースを見直し、情報の鮮度を保ちます。類似性の判断基準を明確化し、適切な参考事例を選択できるようにします
  • 注意点: 表面的な類似性だけでなく、本質的な類似性を見極めることが重要で、過度な一般化は避ける必要があります

TEAM-6-4 作業の進捗が計画と乖離した際に、その原因を分析し、今後の見積りに反映しているか

  • 目的: 継続的な学習により見積り精度を向上させ、同様の問題の再発を防止すること
  • 実装のポイント: 計画と実績の乖離について、5つのなぜ手法などを用いて根本原因を分析します。技術的要因、人的要因、外部要因に分類し、それぞれに対する対策を検討します。分析結果は見積りガイドラインやチェックリストに反映し、ナレッジベースとして蓄積します。乖離の分析は個人の責任追及ではなく、プロセス改善の機会として捉えます
  • 注意点: 個人の責任追及ではなく、プロセス改善に焦点を当てることで、建設的な分析が可能になります

TEAM-6-5 不確実性の高いタスクについて、その不確実性を考慮した見積りや計画を立てているか

  • 目的: 不確実性を適切に管理することで、リスクの早期発見と対応を可能にすること
  • 実装のポイント: 不確実性の種類(技術的、要件的、外部依存等)を分類し、それぞれに応じたバッファーを設定します。3点見積り(楽観値、最頻値、悲観値)を活用し、期待値とリスクを明確にします。不確実性の高いタスクは早期に着手し、リスクの解消に努めます。不確実性の度合いに応じて、実験やプロトタイピングによる事前検証を実施します
  • 注意点: バッファーが過大になりすぎないよう、リスクの影響度と発生確率を適切に評価することが重要です

TEAM-6-6 計画の変更が必要になった際に、ステークホルダーと適切に調整を行っているか

  • 目的: 変更に対する適切な調整により、ステークホルダーの信頼維持と期待値管理を実現すること
  • 実装のポイント: 計画変更の影響範囲(スコープ、スケジュール、予算)を定量的に評価し、複数の選択肢を提示します。変更の理由と必要性を明確に説明し、ステークホルダーの理解を得ます。変更履歴を記録し、将来の計画立案に活用します。変更の際は早期に関係者に連絡し、十分な調整時間を確保します
  • 注意点: 頻繁な計画変更はプロジェクトの信頼性を損なうため、真に必要な変更に限定することが重要です

TEAM-6-7 短期間での実験やプロトタイプ作成を通じて、見積りの精度向上を図っているか

  • 目的: 実験とプロトタイピングにより、技術的な不確実性を早期に解消し、見積り精度を向上させること
  • 実装のポイント: タイムボックス化された実験(例:2-5日)を設定し、技術的な懸念事項を検証します。プロトタイプの成果物と所要時間を記録し、本格開発の見積りに反映します。実験結果は成功・失敗に関わらず学習として蓄積し、組織のナレッジベースに貢献します。実験の目的と成功基準を事前に明確化し、効率的な学習を実現します
  • 注意点: 実験の目的と成功基準を明確にし、無制限に時間を費やすことを避ける必要があります

TEAM-6-8 見積りと実績の差異について、定期的に振り返りを行い、チーム全体で改善に取り組んでいるか

  • 目的: 継続的な振り返りによりチーム全体の見積り能力を向上させ、組織学習を促進すること
  • 実装のポイント: スプリントレトロスペクティブで見積り精度を定期的にレビューし、改善点を特定します。見積りのパターンや傾向を分析し、チーム固有の特性を理解します。ベストプラクティスの共有と新しい見積り手法の試行を継続的に行います。見積り精度の改善を個人ではなくチーム全体の課題として捉え、協力的な改善文化を醸成します
  • 注意点: 見積り精度の向上は段階的なプロセスであり、短期間での劇的な改善を期待せず、継続的な取り組みが重要です

参考資料・ツール

参考書籍・記事

『アジャイルな見積りと計画づくり』(マイク・コーン著): 経験主義的な見積り手法の決定版です。ストーリーポイント、ベロシティ、リリース計画の具体的な実践方法が詳しく解説されています。
『ソフトウェア見積り』(スティーブ・マコネル著): 見積りの科学的アプローチと各種手法の比較分析が学べます。見積りの基本原理から応用まで幅広くカバーしています。
『リーン開発の本質 -ソフトウエア開発に活かす7つの原則』(メアリー・ポッペンディーク、トム・ポッペンディーク著、平鍋健児監訳、日経BP): 経験主義とリーン思考を組み合わせた効果的な計画手法について実践的な知見が得られます。製造業の手法をソフトウェア開発に適用した先駆的な書籍です。

関連するフレームワーク

Planning Poker: チーム全体での合意形成を促進する見積り手法です。集合知の活用と偏見の排除に効果的です。
Three-Point Estimation: 不確実性を考慮した見積り手法です。楽観値、最頻値、悲観値を用いてリスクを定量化します。
Cone of Uncertainty: プロジェクト進行に伴う見積り精度の変化を示すモデルです。適切なタイミングでの計画更新の指針になります。

経験主義的な見積りと計画のクライテリア