ベロシティの安定ってなんで大事なのか考えた
はじめに
先日、同僚がベロシティについて登壇するに当たって資料のレビューを依頼されました。
その時に考えてみたことを雑にまとめます。
一般的に
まず、一般的にベロシティの安定は下記の理由で大事と言われています。
- 1スプリントでどのくらいのアイテムを完成できるか予測を立てるため
- 数スプリント後にどのくらいのアイテムを完成できていそうか予測を立てるため
要するに、今後の見通しを立てるために使えという訳ですね。
同時に評価など、過剰な使い方はやめるように言われていることも多い印象です。
参考
ベロシティはプランニングの際の道具としても使えるし、チームの状態を把握する指標としても使える。しかし、ベロシティはパフォーマンスの指標としては使えない。チームの生産性をベロシティで判断してはならない。ベロシティをそんなふうに誤用すると、ムダの多い危険な振る舞いをうながしてしまう。
(書籍エッセンシャルスクラム7.10ベロシティの誤用より引用)
なぜベロシティの安定が大事なのか個人的な考え
それでは、なぜベロシティを安定させることが大事なのか考えてみます。
ベロシティを落としてはいけない理由
まず一般的に言われている、ベロシティを安定させることで今後の見通しに使えるということは間違いないと思います。
そして、システムは
- 開発が進むと規模が大きくなる
- 規模が大きくなると認知負荷が高まる(負債が溜まるとも言える)
- 認知負荷が高まると一般的には開発スピード(=ベロシティ)が落ちる
といった傾向があります。
そのため、システムの規模が大きくなると自然と開発スピードは落ちるので、ベロシティを落とさないこととは、
「継続的な内部品質改善をしてスピードを落とさないようにしろよ」
ということかと思います。
ただし、これはベロシティを落としてはいけない理由なので、安定させることの説明にはまだ不十分です。続いてベロシティを上げてはいけない理由を考えてみます。
ベロシティを上げてはいけない理由
前述した考え方に従うと、以下のようになります。
認知負荷 | ベロシティ | |
---|---|---|
機能開発を進める | 増加↗ | 低下↘ |
内部品質改善を進める | 低下↘ | 増加↗ |
この場合、ベロシティが上がってる状態は内部品質改善ができているからいいんじゃないの?と思うかもしれません。
ですが、答えはNOです。
なぜなら、
内部品質改善でベロシティが上がる = 機能開発をする余力があるのに改善を進めている
状態だからです。
改善 > 機能開発
の状態では当然ベロシティは上がりますが、
システム開発の目的はベロシティを上げることでも早くリリースすることでもなく、多くの価値を顧客に届けることです。
そのためには機能開発を最大効率で進める必要があり、その最大効率が一定期間に渡って維持されている状態がベロシティが安定している状態です。
なので、ベロシティは上げることも下げることもせず、安定させることが重要です。
とはいえ例外はある
ベロシティは安定させることが大事と言いましたが例外もあります。
それは個人のスキル向上によるベロシティの向上です。
どんなチームでもそうですが、特にジュニアが多いチームではスキル向上はマストな課題となります。
そして、スキル向上に成功すると1人当たりの消化ストーリーポイントは増えるので自然とベロシティは上がります。
なので、ベロシティは安定させるべきと上述しましたが、チームによっては本当の理想状態はメンバーのスキル習熟度に合わせて微増していく状態かと思います。
また、負債が溜まりに溜まってしまったシステムに対するリプレースなども内部品質改善の一つですが、例外的に扱って品質改善に重きを置くべきであるかと思います。
終わりに
今回はベロシティの安定が大事だと言われる理由について個人的な考えを提示してみました。
結局のところ、ここで言いたかったことは機能開発と品質改善をバランスよくやりましょうということですw
また、書いてみて、ベロシティの考え方の前提には継続的価値提供
があるのかなと思いましたが、みなさんいかがでしょうか?
ご意見・ご感想などいただけると嬉しいです!
レバテック開発部の公式テックブログです! レバテック開発部 Advent Calendar 2024 実施中: qiita.com/advent-calendar/2024/levtech
Discussion