呪い: 見積もりの3倍だけ常にかかってしまう
みなさん、進捗どうでしょう?最高ですか?そんなことないよね!なぜならあなた達は呪われている。事前の計画よりも、常に、3倍の期間が必要になる。常にだ!!この呪いは強力であり、解放されるのは難しい。我々はどうすればよいだろうか?
パーキンソンの呪い
ある資源に対する需要は、その資源が入手可能な量まで膨張する
ある仕事の作業量を見積もったとしよう。機能Aの追加に2週間程度必要そうだ、とする。順調にいけば、再来週には動き出し、価値が出せそうだ。ペースを作り、粛々と仕事を進めていこう。
ところが、現実的にはそんなに上手くはいかない。新しく導入するライブラリがうまく動かないとか、くだらないtypoに悩まされて半日失ったとか、既存コードの改修箇所が想像してたより多かったとか、何らかの別の仕事をやらなければいけなかったり、もしくは休暇が必要だったりとか。当初計画よりも遅れてしまうと、遅れた理由について検討するという仕事も追加されてしまう。なんだかんだで完成が6週間後くらいになってしまうのはよくあることだろう。
では、パーキンソンの呪いを考慮し、6週間必要だと見積もってみよう。人々は、6週間あれば6週間分の仕事ができると考える。クリーンなコードに仕上げ、どうせ欲しくなるだろう便利な機能を足し、後任のための文書も整備できる。
勘のいい皆さんは予想できるだろう。それが6週間だと心に思ったなら、それ基準に仕事が3倍に膨れ上がるんだ!!見積もり3倍の呪いが適用され、終わってみるとなぜか18週間かかってしまうのだ!!
ベロシティ: その扱いは難しい
例えば、1スプリント1週間として、2ポイントかかると見積もった仕事を10個完了させたなら、ベロシティは20ポイントになる。見積もりの単位はポイントでもいいし、絶対時間でも計算は変わらない。何なら1スプリントの長さもなんでもいい。つまり、スプリントあたりの作業量がベロシティということになる。
思い通りに進まないときはあるかもしれない。ベロシティを計測することにより、自体は改善するだろうか?もちろん、そんなことはない。単なるチームの作業ペースの数値化だ。スプリントを重ねることでベロシティの変化を観察し、講じた対策のフィードバックを得るのが目的になる。
では、ベロシティが安定するといいか?安定させるのは実は簡単で、難しいことをしなければいい。作業量を安定させるために、既存コードには手を入れず、コピペで作るのが一番になる。でも、そんなことやりたくないよね?中長期的にはベロシティは落ちていくだろう。
いや、それが問題なんだ。中長期的な緩やかな変化は、ベロシティで観測が難しい。そもそも作業量の数値に客観性がなく、感覚的なものに過ぎない。感覚はどんどん適応していく。6ヶ月後、同じ仕事が倍の作業量として見積もったとして、気づきようがないんだ。たった今、同じ仕事って言った。けど、それすら自然に「倍の仕事だよね」って受け入れるようになる。
再考: 見積もり行為の価値
常に3倍かかるし、3倍かかると認識すればさらに3倍かかる。では、見積もる行為は不要だろうか?
みなさんは、見積もりポーカーをやったことがあるだろう。そのときに、出た数字にギャップはあった?ギャップがあるときにはすぐに結論をださないほうがいい。
例えば、私は 4 でAさんは 10 という状況が起こったとする。平均をとって 7 、みたいにするのはおすすめしない。Aさんは複雑に捉えてしまって不要な作業まで見込んでしまっているかもしれないし、私の知らないタスクを知ってるから多めに出してるかもしれないし、もしかして私とAさんは全く別のなにかを想像しているかもしれない。なぜ 4 なのか、なぜ 10 なのか。その内容を確認してみよう。
では、私もAさんも同じ 6 だとしたら、6でよしとしていいか?そんなわけがない。内容を確認しよう。もしかして、 3 の作業量で実現できる案があるかもしれない。価値を実現する最小限のセットを探るためにチームでアイデアを集めるのが、見積もり行為の隠れた価値となる。
まとめ
- 進捗が悪いのは人類の呪いなので気に病む必要はない
- 見積もりの1/3で実現できそうな方法を模索しよう
- それよりも中身の話をしようぜ