【アジャイルFAQ 番外編(見積りの、理屈っぽい話)】属人性を排した見積りのはずなのに、ストーリーポイントは人によって違う

| 6 min read
Author: tomohiro-fujii tomohiro-fujiiの画像

 この記事を読んでいただきありがとうございます。アジャイルグループに所属する、藤井智弘です。
 第9回(人日換算)を書いていたら、「そもそもストーリーポイントは何を測った数なのか」というところで話が膨らんでしまい、本編に収まらなくなりました。急遽、番外編として切り出します。いつもの質問と回答の形は取らず、一つの疑問を最後まで追いかける、理屈っぽい回です。
 でも、好きなんです、そういうの、わたし。

引っかかっていた疑問

#

 ファンクションポイント(FP)を使っていた現場から来た方に、何度か同じことを聞かれました。「FPは属人性を排した客観的なサイズで、計数規則に従えば誰が数えてもほぼ同じ値になる。ストーリーポイントも相対値で属人性を排すと聞いたのに、同じ項目でメンバーによって3と8に割れる。属人性を排した見積りのはずなのに、見積値が人によって違うのは、何かが間違っているのではないか」。

 白状すると、私自身がこの疑問を長いあいだ持っていました。研修ではこう説明されます。「人日は人によって違うが、大きさの比は誰が見ても同じ。だから相対値で見積もれば属人性を排除できる」。それなら、なぜプランニングポーカーで値が割れるのか。割れるのが前提なら、「属人性を排した」とは何を排したのか。FPのように規則で数えれば割れないのに、なぜそうしないのか。

 答えを先に言うと、二段あります。一段目は、「属人性」という言葉が二つの違うものを指していて、ストーリーポイントが排しているのはその片方だけだ、ということ。二段目は、そもそもアジャイルの計画づくりは、見積りの時点での精度に賭けていない、ということです。一段目から順に追います。

属人性は一つではない

#

 一つ目は、作る人への依存です。同じ項目が、Aさんなら2日、Bさんなら6日かかる。二つ目は、見積もる人への依存です。同じ項目を、Aさんは3、Bさんは8と見立てる。

 FPは、この両方を排除しようとした測定法です。外から観察できる機能(入出力、照会、内部ファイル、外部インタフェース)を規則で数えるので、誰が作るかに依らず、訓練された計測者なら誰が数えても近い値に収束します。FPは「測定」であり、測定とは、同じ対象を同じ手続きで測れば同じ値が出ることを目指す営みです。

 ストーリーポイントは、一つ目の属人性だけを扱います。しかも排除するのではなく、逃がします。Aさんなら1日と2日、Bさんなら3日と6日。絶対値は3倍違っても、「後者は前者の2倍」という比は同じです。チームの誰が取るか分からない項目を見積もるとき、比だけを持っておけば、誰が取っても使えます。「相対値だから属人性を排せる」の実際の中身はこれで、期待しているのは比の不変性のことであって、絶対値の客観性ではありません。

 二つ目、見積もる人による違いは、最初から排除していません。ストーリーポイントは測定ではなく判断で、しかも「そのチームの目盛り」に基づきます。目盛りの原器は計数規則ではなく、基準ストーリー——「ログイン画面の修正を3とする」という実在の項目——です。だから評価者によって値が割れるのは欠陥ではなく、相対的見積りの仕様です。

図1: 二種類の属人性——作る人への依存と、見積もる人への依存

割れるのは、そういう設計だから

#

 プランニングポーカーが「全員が同時に出して、割れたら話す」という形をしているのは、割れそのものを情報として使うためです。3と8に割れたなら、片方だけが知っている地雷があるか、仕様の読みが食い違っているか、どちらかです。3を出した人は簡単な抜け道を知っていたのかもしれないし、8を出した人は前に同じ場所で痛い目に遭ったのかもしれない。それを出し合ってから一つの値に収束させる。評価者間のばらつきは、排除する対象ではなく、理解の差を見つける検出器です。そして収束させる手続きは、目盛りを校正する作業です(ああ、卒論の実験を思い出す…)。

 ここで割れを平均して5にすると、手早いのですが、割れが持っていた情報を捨てることになります。5は誰の見立てでもない数字です。一番詳しい人の値で決めるのも、たいてい正しい値には近づきますが、それは「その人の目盛り」であって「チームの目盛り」ではありません。その人が休んだスプリント、抜けた後に、目盛りは揺れます。規則表を作って「画面1つは3、テーブル1つは2」と数えれば割れはなくなりますが、規則に載っていない難しさ——古いコードの地雷、曖昧な仕様、初めての技術——が数字から消え、ポイントは客観的になった分だけ、このチームの実感から離れます。割れを消す方法はいくつもあり、どれも「ポイントは客観的な測定値であるべきだ」という思い込みから出ていて、どれも目盛りの校正を止めてしまいます。

図2: 3と8に割れたとき——平均するか、詳しい人に合わせるか、話して収束させるか

 ストーリーポイントが目指しているのは、客観性ではなく、チームの中での一貫性です。ただ、ここで「客観的でなくてよい」と言われても、FPを知る人は納得しないでしょう。客観的でない数字の精度を、どう担保するのか。この問いが、二段目に続きます。

正確さは、どこで作るのか

#

 見積りの産物は、数字ではなく判断です。ポイントを付けて決めているのは、「このスプリントに入れて大丈夫か」「分割するべきか」「先に調べるべきか」の三つで、それ以上のことはあまり決めていません。この判断に要る精度は粗くてよい。3か5かで判断が変わることはめったになく、3か13かなら変わります。だからポイントの目盛りは1、2、3、5、8、13と飛び飛びで、その飛び方が「この程度の違いしか見分けない」という宣言になっています。ポイントは、経験に基づく見立てを、判断の素材として数にしたものです。誤差があっても、判断を変えるほど大きな誤差でなければ、用は足ります。

 もう一つの用途、合計をベロシティで割って見通しを出すほうでは、個々の誤差は足し合わせるうちに相殺されます。3と見立てて5だった項目と、5と見立てて3だった項目は、合計では打ち消し合う。だからばらつきは構いません。構わないのは偏りのほうで、全員が一方向に盛る、インフレする、という偏りは相殺されずに合計に残ります。ベロシティを「安定させる」ために数字を盛るのが問題なのは、ばらつきではなく偏りを作るからです。

 では、粗い見立てで済ませて、誤差が大きくなりすぎないのはなぜか。ここがアジャイルの計画づくりの要で、誤差は見積りの手法ではなく、見積りの対象の大きさと、答え合わせまでの時間で決まります。項目が小さければ、8が80になることはありません。誤差は項目の大きさに比例し、不確実性に比例するので、項目を小さくし、リファインメントで不確実性を先に潰しておけば、見立てが粗くても誤差の上限は小さい。スプリントが短ければ、見立てが外れていたことが数週間で分かり、次の見立てに反映されます。一度に多くのことを手掛けないのも同じ理由で、同時に走る項目が少ないほど、一つの外れが他に波及しません。アジャイルは、見積りの精度を上げることではなく、見積りの外れが大きくなれない構造を作ることで、誤差を制御しています。

 この構造の話を抜きにして、見積りの手法や精度を論じても意味がありません。ここが、FPとストーリーポイントの対比の、一番深いところです。
 FPが見積りの時点での精度を必要とするのは、スコープを最初に固定し、あとから誤差を縮める仕組みを持たない前提だからです。見積りが外れたら、それを補う機会が後ろにない。だから前で精度を作るしかなく、誰が数えても同じ値になる規則が要ります。
 ストーリーポイントが粗い見立てで済むのは、精度を作る場所が見積りの時点ではなく、その周りの仕組み——小さい項目、短いスプリント、リファインメント、そして実績のベロシティ——にあるからです。
 FPとポイントの違いは、精度の高低ではなく、精度をどこで作るかの違いです。冒頭の「なぜ規則で数えないのか」への答えは、「客観性が要らないから」ではなく、「見積りの時点の精度に賭けていないから」です。

図3: 精度をどこで作るか——見積りの時点か、見積りの周りの仕組みか

属人性はどこへ行ったのか

#

 一段目に戻って、属人性は消えたのか、という問いに答えておきます。消えていません。置き場所が違うだけです。

 FPは、サイズを客観化した代わりに、工数に換える段階で様々な「特性の調整や生産性を反映した係数」——このチーム・この技術なら1FPあたり何時間——を別途必要とします。属人性は、この係数に追い出されています。サイズは客観、係数は属チーム、という分担です。

 ストーリーポイントは、見積もるチームと作るチームが同一であることを前提に、チーム固有の条件を見積りそのものに折り込みます。残った校正のずれは、ベロシティに吸収されます。目盛りが多少歪んでいても、ベロシティが同じ歪みで測られるので、予測は当たります。属人性は、ベロシティに追い出されています。サイズも目盛りも属チーム、だからベロシティも属チーム、という分担です。前の節で挙げた「答え合わせまでの時間」を短くする仕組みが、この吸収を毎スプリント回しています。

 どちらの方式でも、属人性は排除されたのではなく、置き場所が違うだけ。そう見ると、ストーリーポイントのほうが正直に閉じている、とも言えます。FPは「客観的なサイズ」と「属チームの係数」を別の人が別の場所で扱うので、係数のほうが放置されがちです。ストーリーポイントは、見積もる・作る・測るを一つのチームの中で閉じるので、歪みが自動的に相殺されます。

図4: 属人性の置き場所——FPは生産性係数に、ポイントはベロシティに

それで、ポイントは何を測った数なのか

#

 ここまで来ると、言えます。ストーリーポイントは、作るものの大きさ——量と複雑さと不確実性を合わせたもの——についての、そのチームの経験に基づく見立てを、チームの目盛りで相対値にしたものです。測定値ではなく見立てであり、数字そのものより、それを使って下す判断のほうが産物です。

 工数が「人が投入する時間」という投入側の量であるのに対して、大きさは作る対象の側の量です。この二つを結ぶのがベロシティで、「このチームなら、この大きさをこのペースで片づける」という換算係数を、事後の観測として持っています。だから、ポイントは「工数の別名」ではありません。かといって、FPのような「客観的なサイズ」でもありません。チームの中でだけ通用する、大きさの通貨です。

 冒頭の疑問に戻ります。ストーリーポイントは、属人性を排した見積りではなく、属チーム的な見積りです。排しているのは「誰が作るか」の絶対値だけで、それも比に逃がしているにすぎない。評価者間のずれは排除の対象ではなく、合意の材料。そしてこの方式が成り立つ条件は、客観性ではなく、見積もる・作る・測るが同じチームで閉じていることと、外れが大きくなれない構造が周りにあることです。

 閉じていない使い方をした瞬間に、目盛りの属チーム性が露出して壊れます。チーム間でポイントを比べる。別のチームが見積もって、別のチームが作る。換算表で外に出す。第9回で見た四つの型は、全部この「閉じていない使い方」でした。あの回で「換算値は項目の原価、ベロシティはチームの流量」と書いた違いの根も、ここにあります。流量はチームの中でしか意味を持たない目盛りで測られているから、外に出した瞬間に原価のふりをし始めるのです。

現場での、ささやかな心得

#

 理屈はここまでで、現場でやることは多くありません。

 目盛りの原器は基準ストーリーなので、実在の項目を2〜3本「これを3とする」と決め、見積りのたびに参照してください。メンバーが入れ替わったら、新しい人と一緒に基準ストーリーを見直す。目盛りは規則ではなく共有された記憶なので、記憶を引き継ぐ手続きが要ります。

 割れたら、平均ではなく話す。両端の人が理由を一言ずつ言うだけで、たいてい地雷か読み違いが出てきます。収束しなければ、項目を分割するか、調査を先に切る。

 見積りの精度を上げたくなったら、手法ではなく、項目の大きさとスプリントの長さを疑う。13以上の項目が常態なら、見積りの技法をいくら磨いても誤差は縮みません。先に割ってください。

 目盛りをチームの外に持ち出さない。外に出す数字は、第9回で書いたとおり、合計ポイントと実績のベロシティから導いた期間と金額です。

 そして、契約上どうしても属人性を排したサイズの根拠が要る場面では、ポイントを客観化しようとするのではなく、FPのような測定法を別途使ってください。ポイントは計画の道具、FPは契約の道具。兼用させると、どちらの役目も果たせなくなります。念のため付け加えると、FPの客観性も理念上のもので、実務では計測者間に1〜3割のばらつきが出るという報告が昔からあります。ただ「規則で数える」と「合意で決める」は理念として別物なので、違う目的の違う道具として、両方を持っておけばよいのです。

おわりに

#

 私たちの多くは、見積りとは「正しい値を当てる」ものだと教わってきました。FPはその文化の到達点で、誰が数えても同じ値になることを目指して作られています。この文化の中でストーリーポイントに出会うと、「客観的でない見積りは未熟な見積りだ」と感じるのは自然です。私もそうでした。

 けれども、アジャイルの計画づくりは、正しい値を当てることではなく、実績から予測を更新し続けることを目指しています。そのために大事なのは、値が客観的であることより、同じ目盛りで測り続けることと、外れが大きくなれない構造を保つことです。精度は、見積りの中ではなく、見積りを取り巻く仕組みの中にあります。チームの中でポイントが割れたら、それは属人性の露出ではなく、理解の差が見つかった瞬間です。そこで話せているか、そして項目は十分に小さいか。この二つが、このチームの見積りが道具として働いているかの、一番簡単な確認になります。

豆蔵では共に高め合う仲間を募集しています!

recruit

具体的な採用情報はこちらからご覧いただけます。