見積もり工数の精度をどう上げていくか(プランニングポーカー)

この記事について

本記事は、2023年6月に社内で実施した勉強会の資料を基に、社外向けに再編集したものです。
記載の情報は執筆当時のものであり、最新の仕様やベストプラクティスとは異なる場合があります。
実装にあたっては、必ず最新の公式ドキュメントをご確認ください。

目次

概要

本記事では、工数見積もりにおいて「予定通りに終わらない」という課題を、どのように回避できるかをテーマとしています。

見積もりの精度を高めることで、計画と実績の乖離を小さくすることを目指します。

精度を上げる方法

  • 見積もり時には、対象となる情報源を丁寧に確認する
    • どの程度まで確認すべきかの判断が難しい
    • 詳細に確認を進めると、そのまま実装を始めたほうが早い場合もある
    • 見積もりにかけられる時間にも限度がある
  • タスクを細分化する
    • 見積もりにかけられる時間にも限界がある…
・ボタン設置: x 分
・ボタンアクション: x 時間
・デザイン調整: x 時間
︙
  • ダブルチェック
    • 複数人で見積もり内容を相互に確認する
    • どの粒度まで複数人で確認すべきか
    • 見積もりにかけられる時間にも限界が……
  • プランニングポーカー
    • プロジェクトメンバー全員で見積もりを行う
    • 見積もりのばらつきを減らす
    • 見積もりにかけられ……

プランニングポーカーとは

  1. あるタスクに対して、各メンバーが個別に見積もりを考え(開示はしない)
  2. 全員が同時に見積もりの数値を提示する
  3. 各自、なぜその見積もりを出したのかを説明する
  4. 議論を経て、最終的な見積もりを確定する

プランニングポーカーはアジャイル開発手法の一つであり、本来は次のような流れになります。

  1. 過去の実績をもとに、1スプリントで処理できるストーリーポイント(SP)の目安を算出する
  2. プランニングポーカーで見積もったSPをもとに、次回スプリントの計画を立案する
  3. 消化可能なSPの見積もりは、継続的に見直し・改善を行う

このように、プランニングポーカーはアジャイル(特にスクラム開発)におけるベロシティ(チームが処理可能な作業量を示す指標)を測定するための手法として活用されます。

参考:Qiita – @e99h2121(Nobuko YAMADA) – オンラインでプランニングポーカーができる、Plapoが楽しかったので紹介する
https://qiita.com/e99h2121/items/2bc505415e1ccfd2ff95

プランニングポーカーをオンラインで実施できるツール例:
plapo
https://plapo.net

メリットとして、

  • 見積もり意識をチームで共有できる。
  • 懸念点などの共有ができる

が挙げられます。

実際にプロジェクトチームでプランニングポーカーを試してみた

  • 見積もりには大きな差が見られた
    • 例えば「13」「21」「34」「55」と、全員が異なる数値を提示
    • 「13と21で迷った結果13を選択」「21と34で迷った結果34を選択」などといったケースもあった

→ちょうど良い中間値が存在しないため、見積もりが分かれやすく、その結果として議論が活発になりました。
 これはフィボナッチ数列を用いる利点の一つといえます。

  • 仕様の認識に食い違いがあった
    • 「バリデーションチェックのみで十分」という考えのメンバーがいた一方で、「より高度な機能を実装する」という考え のメンバーもいた
  • 他のメンバーがどのように考えているのかを把握できた
  • 各メンバーの状況によっても見積もりに差が生じた
    • 最近そのタスクに対応しており、仕様やソースコードの状態を把握しているメンバーは、少なめに見積もる傾向にあった
    • 逆に、該当箇所に触れた経験がないメンバーは、多めに見積もる傾向にあった

メリット

  • メンバーごとに多様な観点が存在することを共有できる
    • 各メンバーがどの点に着目しているのか
    • どの作業に対して苦手意識を持っているのか

  • メンバー間の見積もりの差異をきっかけに、建設的な議論が生まれやすい
    • 「分からないまま見積もった」 → どの部分がわからないと思ったのか
    • 「簡単だと考えて少なく見積もった」 → なぜそのように考えたのか

  • 「この方法ならより改善できるのでは」といった前向きな意見が出てきた

  • 個人で見積もった場合に発生しやすい考慮漏れを防止できる

デメリット

  • 実施に時間を要した
    • 実施には約1時間を要し、4名参加だったため合計約4時間の工数となった
    • 対象となったタスクの実工数は、結果的に合計約80時間程度だった

→この見積もりに要した工数を請求対象とできるかは、プロジェクト次第かと思います。

  • すべてのタスク見積もりに適用するのは現実的ではない
    • 一方で、正式にアジャイル開発のスプリントを運用している場合には、定期的に実施することが望ましいと考える

プランニングポーカーを行う上での前提の話

  • 見積もりで考えた数値や内容は、そのまま正確に共有することが重要
    • 「少なめに見積もろう」といった意図的な調整はNG

  • 見積もりの妥当性に対しての否定的なコメントは避ける
    • 「その見積もりは間違っている」というコメントも避け、建設的な議論に焦点を当てる
    • 「なぜ見積もりが異なったのか」「どのように差異を減らすか」を検討する場として活用する

文章だけでは理解しづらいため、実際に試してみることを推奨します。

本筋から外れるが興味深いツイート

参考:kosakai(@Suzubotal)

役に立ったらシェアしていただけると嬉しいです
  • URLをコピーしました!
  • URLをコピーしました!
目次