🐝

ストーリーポイントを工数に換算してはいけない - アジャイル開発推考

に公開

ベテランのSI屋さんが考えたことを書き残した雑記です。
SI屋さんにしか通じない単語を説明なしに使うので素人は要注意です。
いろいろな意見を欲しているので、つっこみは大歓迎です。

概要

  • ストーリーポイントを作業時間に換算するのはSIer伝統のアンチパターン
  • 見積もりの簡易化を目的とした総合的な相対評価として使うべし

1. はじめに

SIerのスクラムチームでは「この機能は3人日かかるから5ポイント」のようにストーリーポイントを作業時間として扱っている場合があります。まったくもって無意味です。なんのメリットがあるのでしょうか?考えることが1段増えるだけなので、素直に工数で数えた方が良いです。
この記事では、ストーリーポイントを工数換算してしまうことの問題点とカイゼン案について考えていきます。

2. 「1ポイント=n時間」の何が問題なのか

ストーリーポイントを工数換算することで発生する問題点は大きく以下の3つです。

  1. ベロシティが一定になりカイゼンが生まれない
  2. 見積もりに時間がかかり値も大きくなる
  3. 単位変換が単純に無駄である

問題1: ベロシティが一定になりカイゼンが生まれない

ベロシティは、チームの成熟度やスキルの向上、カイゼンによって変化するべきものです。例えば以下のような成長曲線が見えることで、「チームが良くなっている」「このカイゼンが効いた」という実感と根拠が得られます。

  • 初期: チームが不慣れで1スプリント20ポイント
  • 3ヶ月後: 相互理解が深まり30ポイント
  • 6ヶ月後: 技術的負債を返済してCI/CDが整い35ポイント

しかし時間換算してしまうと、どんなにチームが成熟しても、どんなにプロセスを工夫しても、稼働時間を上限とした安定した数値にしかならず、チームの成長やカイゼンの成果が一切可視化されなくなります。
これでは、生産性を上げるモチベーションが生まれにくく、カイゼンが行われない非アジャイルなチームになってしまいます。

問題2: 見積もりに時間がかかり値も大きくなる

ストーリーポイントを導入する大きな利点の一つとして見積もりの簡易化があるのですが、これも作用しにくくなります。
簡易な相対見積もりであれば「前回の○○画面と同等なんで3ポイント」と3秒で判断して、価値を生まない計画作業を最小限に抑えることができます。
しかし、1ポイント=n時間というルールは、正確に作業工数を考えるというSIerの計画思考と結びつきやすく、必要以上に細かい作業を考えることを促してしまいます。
また、「工数を出す」という感覚が無意識にバッファを持ちやすくなる方向にも作用して大きい値が出やすくなります。

問題3: 単位変換が単純に無駄である

ストーリーポイントを時間に換算してしまうと、結局「人月見積もり」と同じになります。それならば最初から人月で見積もればよく、わざわざポイントを使う意味がありません。ただただ無駄な変換作業を増やしているだけです。

3. 正しいストーリーポイントの使い方

ストーリーポイントは、手軽に雑にあつかえることがメリットであり以下のように使うべきです。

  1. 見積もりを簡易化する
  2. 精度を追求しない
  3. チーム内のみで使う

使い方1: 見積もりを簡易化する

ストーリーポイントを使用する最大の利点は、見積もりを簡易化できることです。
数値の刻みとして、大きいものを雑に扱えるフィボナッチ数で使ってざっくりと評価し、他のバックログを参考にして相対的に導出します。これにより、価値を生まない計画作業を最小限に抑えることができます。

使い方2: 精度を追求しない

ストーリーポイントは、あくまで「相対的な大きさ」の評価であり、正確な工数を表すものではないことをチーム全体で理解する必要があります。
外しても「しょうがない」ぐらいのマインドです。外してもチームを責めてはいけません。これは、ウォーターフォールの計画と違って、一定確率で外すことが前提です。時間をかけて精度を上げるのではなく、ちょっと失敗して学習することを選ぶのがアジャイルwayです。
スピードを維持したまま正確性が上がるカイゼンがあれば積極的にやるべきですが、時間をかけて正確性をあげる必要はまったくありません。

使い方3: チーム内のみで使う

ストーリーポイントは「そのチームにとっての相対的な大きさ」なので、チームが違えば同じ5ポイントでも意味が違います。したがって、他チームや個人間での比較や評価に使うべきではありません。あくまでチーム内での計画と改善のために使用します。
また、アジャイルの理解が低いステークホルダーに対して数字を見せるのも避けるべきです。誤解を生み、無意味な議論が発生するだけです。

4. 変革のステップ

あなたのチームが「1ポイント=n時間」という運用をしていて問題を感じているのであれば、以下のような流れでカイゼンしていくと良いでしょう。

  1. 理解のある人を変える
  2. チームを変える
  3. ステークホルダーを変える

ステップ1: 理解のある人を変える

この記事を読んでいるあなたは、正しいストーリーポイントを理解ているはずです。
まずは身近なチームメンバーにこの知識を伝え、共通理解を築くことから始めましょう。ryuzeeさんのQAあたりを使って問題提起するのが良いかもしれません。
また、スクラムマスターやアジャイルコーチなど、アジャイルの専門知識を持つ人がいる場合は、その人の助けを借りると効果的です。
彼ら/彼女らは間違いなく問題に気が付いていて、カイゼンするタイミングを伺っているはずです。

ステップ2: チームが変わる

チームがストーリーポイントの問題に気が付いたらカイゼンのチャンスです。
この段階では、基準にすべきバックログを選定したり、ストーリーポイントについての学習をしたりするのが良いでしょう。
ただし、ステークホルダーを巻き込むのはまだ早い可能性が高いです。今まで「1ポイント=n時間」でやってきたステークホルダーは、急に変わることを好みません。 このため、導出する数字が今までに近い値になるように調整するのが良いでしょう。

ステップ3: ステークホルダーが変わる

チームが新しいストーリーポイントの使い方に慣れてきたら、ステークホルダーに対しても説明を始めましょう。ストーリーポイントの本質と、なぜ「1ポイント=n時間」の運用が問題なのかを丁寧に説明することが重要です。

5. おわりに

ストーリーポイントは、うまく使えばチームの予測可能性を劇的に高めてくれる強力なツールです。しかし「1ポイント=X時間」という誤った使い方をしてしまうと、ただの効率が悪い人日見積もりになってしまいます。

GitHubで編集を提案

Discussion