【アジャイルFAQ 第10回】ベロシティが安定しません。計画に使っていいの?
Back to Top この記事を読んでいただきありがとうございます。アジャイルグループに所属する、藤井智弘です。
第9回では、ポイントを人日に換算する代わりに、ベロシティの実績から幅つきの見通しを出す話をしました。換算表の問題は、動いている実績を一つの数字に固定することだ、とも書きました。番外編で見積りの理屈に寄り道しましたが、今回は第9回の続きで、その足元にあるベロシティそのものの話です。そして、同じ「固定」の問題が、別の顔で現れます。
質問
#スプリントごとのベロシティが20→35→18とばらついています。平均を取って次のスプリント計画に使っていますが、外れることも多く、チーム内から「安定するまでベロシティは当てにできないのでは」という声が出ています。安定を待つべきでしょうか?
回答
#この悩みを口にする方は、たいてい次の三つを同時に抱えています。
- ばらつくのは、うちのチームがまだ未熟だからか
- 何スプリント待てば、安定するのか
- ばらついたままの数字を、計画に使ってよいのか
順番に見ていきましょう。ばらつくのは未熟だからではありません。開始数ヶ月のチームのベロシティは、ばらつくのが正常です。見積りの基準も、チームの連携も、PBIの粒度も、まだ発展の途中なのですから。何スプリント待っても、「揺れない1つの数字」は来ません。そして、ばらついたままで計画に使えます。問題はばらつきではなく、ばらつくものを単一の平均値で扱おうとしていることです。平均ではなく幅で使ってください。「うちのベロシティは18〜35」という言い方に変えるだけで、ベロシティは計画の道具になります。ただし幅が頼れるようになるのは実績が5スプリントほど貯まってからで、それまでは記録に専念する期間です(処方で詳しく述べます)。
要点を二つに絞るなら、「ばらつきを情報として読むこと」と「安定させることを目標にしないこと」。
「ベロシティは安定してくるものです」という教え、信じられましたか?
#研修や書籍で、「ベロシティは数スプリントで安定してきます」「安定したベロシティが計画の基礎になります」と教わった方は多いと思います。そのとき、こんな疑問を持ちませんでしたか?
- うちは半年経っても安定しない。何かが間違っているのか
- 休暇も障害も割り込みも毎回違うのに、安定するほうがおかしいのでは
- 安定しないものを、上司にどう説明すればいいのか
私も、研修を受けた側だったころは同じ疑問を持っていました。答えを先に出すと、「安定する」の意味の取り違えです。安定するのは1つの数字ではなく、幅のほうです。ばらつく理由が毎回違うのはその通りで、だからこそ幅で持つ。そして上司には、幅のまま説明できる。ただ、ここで終わると標語のままです。ベロシティがどんな扱われ方をしがちかを先に見て、それから腰を据えて考えましょう。
ベロシティのアンチパターン
#ばらつきに悩むチームには、いくつかのアンチパターンがあります。自分のチームの数字の扱いと、見比べてみてください。
その1:様子見型——「安定するまでベロシティは使わない」と決め、計画は勘と気合で立てている型です。記録はしているが、見てはいない。安定は待っても来ないので、この様子見は永遠に続きます。
その2:帳尻合わせ型——ベロシティを「安定させる」ことが目標になった型です。入口はたいてい、マネジメント層が「先月35だったのに、今月はなぜ18なのか」と理由の報告を求め始めることで、ベロシティが評価やチーム間比較に使われ始めた組織では、ほぼ確実に起きます。以降、チームは数字を下げないことに注意を払うようになり、見積りを大きめに盛る、終わりそうな項目だけ選ぶ、持ち越しをこっそり完了扱いにする。数字は美しく安定し、実態は何も良くなりません。第9回で見たグッドハートの法則が、ここでも待ち構えています。番外編で、見積りのばらつきは構わないが偏りは合計に残る、と書きました。帳尻合わせが作るのは、まさにその偏りです。
その3:原因不明型——数字は記録しているが、そのスプリントに何があったかを残していない型です。半年分の数字を眺めても、「35のとき何が良かったのか」「18のとき何が起きたのか」が分からない。ばらつきは、原因が分からない限りただの雑音です。
ばらつきを巡る思い込み
#顔つきは違っても、三つの型も、質問者の「平均で積む」も、同じ思い込みから出ています。ベロシティは精密な測定値だという前提です。この前提に立つと、ばらつきは測定誤差であり、平均を取れば真の値に近づき、安定していない数字は使えず、下がった数字には説明が要る、という判断がすべて自然に導かれます。どれも、この前提の素直な実践です。第9回の換算表が動く実績を一つの係数に固定したように、平均はばらつきを一つの数字に固定します。顔は違っても、起きていることは同じです。
それでは、三つの疑問を順に片づけます。
まず、半年経っても安定しないのは、何かが間違っているのか。間違っていません。ベロシティは物理定数ではなく、チームという生き物の観測記録です。メンバーの休暇、割り込みの多寡、PBIの粒度の不揃い、見積り基準の揺れ…これらすべてが数字に映り込みます。半年経っても揺れるのは、半年経ってもチームが生きている、というだけのことです。安定してくるのは、揺れの「幅」のほうです。18〜35という幅は、実績が貯まるほど信頼できるようになり、原因を潰すほど狭まっていきます。
次に、理由が毎回違うのに、安定するほうがおかしいのではないか。その通りです。だから、ばらつきを消そうとするのではなく、ばらつきを含んだまま予測に使う方法を採ります。それが幅です。幅で語ることは、precision(精密さ)を落としてaccuracy(正確さ)を上げる交換です。狭い幅で外すより、広い幅で当てる。計画に必要なのは後者です。そしてもうひとつ、ばらつきの原因を観察し、対処できるものだけ対処します。休暇や突発障害は幅として受け入れ、割り込みの受付方法やPBIの粒度は改善する。この仕分けができると、「ばらつくから使えない」という議論は「この原因は潰せるか」という議論に変わります。
そして、安定しないものを上司にどう説明するか。幅のまま説明します。第9回で見た幅つきのリリース予測は、まさにこの最悪値と最良値から出ています。「うちのベロシティは18〜35です。だから残りは6〜11スプリントです」。対外的に単一の日付を求められる場合は、悲観値側の日付でコミットし、幅は内部の計画と進捗管理に使う。第5回で、更改案件の実測スプリントで測ったベロシティを稟議に出すときは期間・金額の上限側の値にする、と書いたのも、この幅の使い方です。コミットした日付は、幅が狭まるにつれて前倒しで見直せます。
残る問いは、なぜ「精密な測定値」と思い込んでしまうのかです。私たちの多くは、計画とは単一の数字で立てるものだと教わってきました。納期は1つの日付、工数は1つの数字。この文化の中でベロシティに出会うと、それを「揺れの少ない1つの数字」に仕立てたくなるのは自然な反応です。誰のせいでもありません。ただ、ベロシティが何のための数字かが、単位の説明ほどには伝わっていないだけです。
ここで、本来のベロシティは何のための数字か。第9回で、ストーリーポイントは「実績から予測する」ための道具だと書きました。番外編では、見積りの誤差は手法ではなく、項目の大きさと答え合わせまでの時間で決まる、と書きました。ベロシティは、その「実績」の側であり、スプリントごとの答え合わせの記録そのものです。
観測——スプリントごとに完成したポイントを、そのまま記録する。盛らず、削らず、持ち越しは計上しない。この正直さが、以降のすべての土台です。
検査——記録を並べ、幅と、ばらつきの原因を見る。予測と実績のずれは、失敗ではなく、次の計画を直すための情報です。
適応——幅で次の計画を立て、潰せる原因は改善し、潰せない原因は幅として引き受ける。スプリントを重ねるほど、幅は狭まり、計画は当たるようになります。
この三段に当てはめると、質問者の「平均で積む」がどこで止まっているかが分かります。観測はしているが、ばらつきを検査せず、平均で潰して計画に使っている。帳尻合わせ型に至っては、観測そのものを歪めている。「揺れの少ない1つの数字を作る」ではなく「幅で持ち、原因を読み、幅で計画する」。言い換えるとそれだけのことです。この転換なしに処方だけ試しても、長続きしません。
処方
#以下に挙げるのは道具であって、目的ではありません。予測の技法は第9回の発展で触れたものも含めて選択肢が多く、どれを選んでもかまいません。ただし、形だけ「幅にしました」で済ませるなら、平均の数字が2つに増えただけです。試したあとは、計画が当たるようになったか、ばらつきの原因が減ったかで確かめてください。
まず、数字の横に一行メモを残す
対処の前に、記録から始めます。スプリントごとに、ベロシティの数字と一緒に一行メモを残してください。「35: 大型連休なし、割り込み少」「18: 本番障害対応に3人日、◯◯さん休暇」。数スプリント分たまると、ばらつきの原因が分類できます。対処できるもの(割り込みの受付方法、PBIの粒度の不揃い)は改善し、対処できないもの(休暇、突発障害)は幅として受け入れる。原因不明型を抜け出す唯一の方法で、以降の処方はこの記録があって初めて回ります。
平均ではなく幅で使う
幅の作り方は第9回で見たとおり、直近5〜8スプリントの実績から最悪値と最良値を取るだけです。本稿で足すのは、その幅をスプリント計画にどう使うかです。言ってしまえば「昨日の天気」の幅版で、できた分しか積まないという保守性を悲観値で引き継ぎ、余力の使い道を楽観値で用意します。次スプリントの計画では「悲観18、楽観35」を前提に、確実に入れる分を悲観値で積み、残りは「できたら着手」の候補として並べておく。悲観値で積んだ分がスプリントゴールの土台になり、候補は余力が出たときに拾います。
なお、導入直後で実績が2〜3スプリント分しかない時期は、幅もまだ当てになりません。その間は予測の精度を求めず、「実績を貯める期間」と割り切って記録だけ続けてください。幅が意味を持ち始めるのは、おおむね5スプリント目あたりからです。様子見型との違いは、待つ間も記録し、見ていることです。
幅の推移で、最後を見通す
幅の使い道は二つあります。一つは、次のスプリントを外さないためで、幅の下端(悲観値)を使って積む。前の処方がこれで、「昨日の天気」の幅版、目的は次の一回の達成可能性を上げることです。もう一つは、最後を見通すためで、幅の推移を使う。残りのポイントを幅で割れば完了時期も幅になり、それがスプリントを重ねるほど狭まっていくなら、見通しは確かになっている。狭まらないなら、潰せていない原因が残っている。昨日の天気は前者には十分ですが、後者——最終的にどのくらい確からしいか——を見せてはくれません。それを見せるのが、第9回で触れた幅つきのバーンダウンです。幅の下端で次を守り、幅の推移で最後を見る。同じ幅の、別の読み方です。
ベロシティの用途を組織と合意する
ベロシティはチームが自分の計画精度を上げるための内部指標です。評価や比較や目標値に転用されると数字が防衛の道具になる理由は、第9回でポイントについて述べたとおりで、ベロシティも同じです。第9回で換算値に引いた「外向けの通貨」と「内側の道具」の線引きを、ベロシティの数字そのものにも引いておく、ということです。この線引きは、マネジメント層と早めに、明示的に合意しておいてください。「ベロシティが下がった理由を報告せよ」が始まる前に、です。ここもチームだけでは完結しません。チームは幅と原因のメモを毎回同じ形式で開示し、マネジメント側は数字の上下ではなく「幅は狭まっているか」「潰せる原因は減っているか」で見る。帳尻合わせ型への入口を塞ぐのは、この往復です。
なぜこの質問は30年繰り返されるのか
#先に見たとおり、計画を単一の数字で立てる文化は、研修一回で上書きされるものではありません。しかも、新しいメンバーが入るたびにチームに持ち込まれます。だからベロシティのばらつきに苛立つ声は、チームの世代交代のたびに必ず再現されます。
しかしアジャイルの計画づくりは、不確実性を消すことではなく、不確実性と一緒に前に進むことを目指しています。ベロシティのばらつきに苛立ちを感じたときは、数字ではなく、数字への期待のほうを調整するタイミングです。幅は狭まっているか、ばらつきの原因は減っているか。この問いを定期的に自分たちに向けることが、このチームのベロシティが計画の道具として働いているかの確認になります。
おまけ: 項目ごとに換算するのと、合計をベロシティで割るのは、何が違うのか
#第9回で、「1ポイント=◯人日」の換算値は項目の原価を語る数字、ベロシティはチームの流量を語る数字で、似て非なるものだと書きました。すると、こういう問いが返ってきます。「項目ごとにポイントを付けて合計をベロシティで割るのと、項目ごとに換算値を掛けて足すのは、結局同じではないか」。いい問いなので、第9回では短く済ませた答えを、ここで広げておきます。
まず算術から。換算値を「スプリントの人日÷ベロシティ」で作るなら、各項目のポイント×換算値の合計は、換算値×合計ポイント、つまり合計ポイント÷ベロシティ×スプリントの人日に一致します。換算値を毎スプリント引き直し、合計にしか使わないなら、それは「合計をベロシティで割る」の別表記にすぎません。この場合、両者に違いはありません。違いが生まれるのは、現場でやっていることがこの理想形から外れる点で、四つあります。
何を固定するか——合計をベロシティで割る方式は、ベロシティを毎スプリント観測し直す動く値として、しかも幅(18〜35)を持ったまま扱えます。だから予測も幅になり、本稿で見たとおり、実績が貯まるほど頼れるようになり、原因を潰すほど狭まります。換算値は、実績から作られた瞬間に一つの定数になり、表として配られた時点で更新が止まり、幅も消えます。理屈の上では「換算値も幅つきで毎回更新すればよい」のですが、そうなっている換算表を私は見たことがありません。表にする、という行為そのものが固定を招きます。
数字がどこに付くか——合計で割る方式では、人日や金額が付くのは合計だけで、個々の項目には付きません。換算値を項目ごとに掛けると、「この項目は3人日」という数字が項目単位で生まれます。ここから副作用が連鎖します。項目ごとに値切れる、3人日の項目に5日かかった人を責められる、チーム間で単価を比べられる、そして見積もる側はそれを見越してポイントを膨らませる。項目に金額が付いた瞬間、ポイントは成績指標に変わり、グッドハートの法則が働き始めます。合計にしか数字が付かなければ、個々の見積りに圧力がかからず、相対比較の速さと合意しやすさが保たれます。第9回の四つの型(対応表型・成績表型・値切り型・沈黙型)は、沈黙型を除く三つがここから出てきます。
検査と適応の輪が回るか——ベロシティは事後に測られて次の予測に戻ってくる値なので、合計で割る方式は毎スプリント自己修正します。ずれは「予測の更新」として現れます。換算値を見積りの段階で掛けると、計画はその時点で確定し、現実とのずれは「遅れ」として現れます。同じずれでも、片方は学習になり、片方は責任問題になります。平均で積んで外れるたびに「今回は特別だった」と言うのは、この輪が回っていない姿です。
会計の単位——合計÷ベロシティ×チームの月額は「このチームを何ヶ月走らせるか」の計算で、固定したチームに期間で資金を付けるモデルに素直に乗ります。項目ごとに人日を付けるのは「成果物ごとの原価」の計算で、項目単位の見積り精度と、変更のたびの再見積り・再承認を要求するモデルに引きずられます。第9回の処方で「いくらかかるか」をチームの運営費で答えたのは、この違いのためです。
ついでに一つ、よくある実務上の落とし穴を。「1ポイント=0.5人日」の0.5が、ベロシティからではなく「理想日」から置かれている現場が少なくありません。その場合、会議や割り込みを含むチームの実際のスループットが式に入っておらず、系統的に過小見積りになります。ベロシティで割る方式は、その種のオーバーヘッドを測定値として自動的に含みます。本稿の一行メモに「割り込み多」と書かれたスプリントも、幅の中に、黙って入っています。
まとめます。計算結果は、換算値を正しく作って正しく使えば同じです。違うのは、ベロシティを動く観測値のまま扱うか定数に固定するか、人日が合計にだけ付くか項目ごとに付くか、そしてその結果として検査と適応の輪が回るか止まるか。一言でいえば、チームの流量を項目の原価に変えないこと。第9回と今回を通して言いたかったのは、結局この一つのことです。
次回: 「スプリント内に終わらないタスクが毎回出ます」





