見積もり精度向上のための3つのステップとその現実的な課題
どうしても見積もりの精度を上げたいのであれば以下の3つの活動をするのもいいかと思います。
1. 細かくタスクばらしをする
2. 誰がするか決める
3. 相対見積でなく絶対見積で見積もる
注意事項
多くのプロダクト開発の場合、上記の3つを初期の段階で精度高くやろうとするのはかなり難しいことですし、またその労力に見合うだけのメリットがあることは少ないです。
細かくタスクばらしをする
タスクをブレが少ないくらいまで小さくバラします。目安は2〜4時間くらいです。
たとえば「Xのデータを登録できるAPIを作る」を「APIの宣言をする」「登録するメソッドを作る」「登録が成功した際の処理を書く」「登録が失敗した時のエラー処理を書く」「APIドキュメントを更新する」…のような粒度です。
このレベルまで細かくタスクを出そうとすると取り組む対象について具体的に知っている、理解している必要があります。
そのためには(リファインメントなどで)具体的にコードを見たり、コードを少し書いてみるといったことも必要になるかもしれません。 そのため、初期の段階で全てのタスクを事細かく出すのはあまり現実的ではありません。ただし、ストーリーの小ささや難易度によっては、ある程度の粒度までは分解することも可能です(なので、ストーリーを小さく分割することは有効なアプローチの1つでもあります)。
誰がするか決める
チームメンバーそれぞれの習熟度がどれくらい離れているかにもよりますし、ばらしたタスクの難易度にもよりますが、それぞれのタスクが誰がするかを決めることが精度上げることにつながります。
AさんがタスクXを終わらせるのは3時間だが、そのタスクに似た別のタスクをやったことがあるBさんなら1時間…といった感じです。
ただこのレベルで考えようとするとそれぞれのスキルや経験をかなり事細かにお互いが知っておく(少なくとも自己認知しておく)必要がありますし、それはかなり難しいことです。
また実際に仕事に取り組み始めると、最初に決めていたフォーメーション(「誰がするか」)が成立しない状況も起きたりします(その人が風邪で休んだり、前のタスクに思っているより時間がかかったりです)。
そのため、「誰がするか」を詳細に決めると見積もりの精度は上がりますが、そのために必要な情報収集コストが高くなります。1〜2日目くらいまでは計画的に割り当てを決め、それ以降は状況に応じて柔軟に調整するのが現実的でしょう。
相対見積でなく絶対見積で見積もる
「こちらがSならあっちはM」という相対見積ではなく、「このタスクは3時間」といった絶対見積で見積ります。
相対見積:「他のタスクとの比較で見積もる」 → 前提の違いを素早く把握できるが、実際にかかる時間はわからない
絶対見積:「実際にかかる時間を直接見積もる」 → 時間の見積もりは可能だが、タスクの細分化と担当者の決定が必要
このように、それぞれの方法にはメリット・デメリットがあるため、ケースによって使い分けることが重要です。
まず相対見積の特徴として、みんなで比較して見積もることで思い込みや前提の違いといったことを素早くわかるようにできるということがあります(プランニングポーカーやTシャツサイズでの相対見積がその例です)。そのため、相対見積では「これとそれの相対的な違い」はわかりますが、「これ」がどれくらいかかるのか?といった絶対的な時間はわかりません。
絶対見積をすることでその時間がわかるようになります。ただ、この絶対見積で出そうとすると前述したように"細かいタスクばらし"と"誰がするのか?"を決めておく必要があります。ということで、絶対見積を精度よく見積もろうとするのは多くの場合、難しかったりします。
結論:最初から精度を求めすぎず、継続的に計画をアップデートする
見積もりの精度を上げる方法はいくつかありますが、いずれも実現コストが高いため、精度を高めることに固執するのは得策ではありません。むしろ、"見積もりは常に変化し得るもの"と捉え、実際に進めながらアップデートし続ける「継続的な計画づくり」を意識することが、結果的に合理的なプロジェクト運営につながると思います。