アジャイルに関するよくある質問 – GreenHopper の見積時間とサブタスク (後編)

2012-10-11 (Thu)  •  By 伊藤  •  活用のヒント  •  JIRA アジャイル開発 翻訳

今回の記事は、アジャイル開発に関するアトラシアン ブログ「Agile Q&A – GreenHopper Time Estimates with Sub-Tasks 」の弊社翻訳版の後編です。原文と差異がある場合は、原文の内容が優先されます。

チームが間違いに気が付いた場合はどうなるか

以下のシナリオを考えてみましょう。

  • 課題 X の初期見積は 5 日間に設定されている。
  • 課題のこの見積は大変楽観的で、次のスプリントの計画まで実際には 15 日間であるとチームが気が付いた。

初期見積を使用することはスプリントの成功を危ういものにすると主張する人もいるでしょう。なぜなら、実際には 15 日間必要な作業にも関わらず、チームは 5 日間と判断して次回のスプリントに組み込もうとしているからです。

しかし、5 日間という不正確な見積はそれ単独で発生することはほとんどありません。実際、見積は常に間違っているものです (程度の差はあるにしろ)。たいていの場合、スプリントの開始前でなく、開始後にそれが発見されます。チームがバックログ全体で同じ方法で見積を算出している限り、徐々にうまく機能するようになります。たとえば、チームが常に過小評価をしている場合、チーム メンバー 4 人で 10 日間のスプリントに関して、チームの見積単位で 20 日間のみが実際にコミット可能であると気付くかもしれません。チームが安定したベロシティを確立している場合、これは問題になりません。プラン作成の観点から考えると、次回のスプリントを行うためにどの程度の作業量が必要であるかを十分確実に見積もることが可能だからです。

それはスプリントのコミットメントを破るということではないのか

スプリントを開始する段になったとき、過去に無事に完了した作業量を基に現実的にコミット可能なバックログからの項目の目安としてベロシティを使用することができます。しかし、既に完了済みの作業に関する情報や作業の難易度に関して判明した情報を初期見積は含まないため、多くのユーザーがその正当性にすぐに疑問を投げかけるでしょう。

例として、以下のシナリオを考えて見ましょう。

  • ある課題の初期見積が 10 日間に設定されている。
  • チームは現在のスプリントでその課題に 5 日間費やす。
  • チームは、プロジェクトのどこかに悪質な不具合を発見する。そして、現在のスプリントでその不具合を修正することは、先ほどの課題を予定どおりに完了することよりもずっと重要であると判断する。
  • スプリントが終了し、課題がバックログに戻される。

次のスプリントにおいて、チームはその課題に関する見積を 5 日間に変更し、その情報を基に、その課題をスプリントに含めるか判断したくなるかもしれません。つまり、チームが 10 日間という初期見積を使用した場合、次のスプリントには十分な作業が盛り込まれない可能性が出てきます。しかし、前回のスプリントでタスクが完了しなかった理由は、計画に含まれていない作業のためです。将来 (もしかしたら次回のスプリントで)、同様のことが起きないと仮定することは現実的ではありません。したがって、そのような確実性がない状況では、10 日間というのは現実的な数字です。結果として、計画に含まれていない作業が発生した場合の費用は、最終的には初期見積で説明を付けることになります。作業量が次回のスプリントには不十分であると判明した場合でも、チームは、より多くの作業をそのスプリントに含めることで修正できます。

同じ例で、これはそのスプリントで唯一の課題であり、かつ次回のスプリントでもこの課題だけであると仮定してみましょう。課題が第 2 スプリントで完了し、残余見積を使用しているとした場合、ベロシティは (0 日 + 5 日) / 2 = 2.5 日 となります。しかし、チームは明らかに次回のスプリントではそれよりも多くの作業を完了できます。初期見積を使用した場合、ベロシティは (0 日 + 10 日) / 2 = 5 日となります。初期見積を使用することで、チームは各スプリントで 10 日間をコミットできないという事実を説明できます。その理由は、計画に含まれていない作業がそれを不可能なものにする可能性が高いからです。同時に、計画に含まれていない作業が毎回のスプリントで発生するわけでもないという事実も現実問題として説明できます。

サブタスクの見積を行い、それをベロシティとコミットメントに取り込むというのはどうか

多くのチームは、スプリントの開始直前にストーリーをサブタスクに分割することで、そのストーリーをトラッキングに使用できるようにしています。これにより、スプリントに (そしてベロシティにも) コミットする課題を決定する方法としてサブタスクの見積の合計を使用する可能性が出てきます。

上述のとおり、トラッキングは見積やベロシティとはまったく別のプロセスです。サブタスクに適用される見積は、ストーリーに当初適用された見積よりもはるかに正確であることは明確です。これらをベロシティに使用することで、ベロシティは高精度と低精度の両方の見積を持つことになります。結果として、ストーリーが低精度の見積のみを持つバックログを調べるためにベロシティを使用できなくなります。さらに、バックログ上部付近の項目のみがタスクに分割されがちになります。そのため、タスクの見積をベロシティに使用することは、タスクに分割された最後のストーリーまでのバックログ完了に要する時間だけがベロシティ値で予測可能ということになります。

サブタスクのロールアップを使用してスプリントのコミットメントを決定することも危険です。ベロシティ値と異なり、予定されていない作業や中断のオーバーヘッドが考慮されていないためです。

結論

多くの業界リーダー達による、あらゆる種類の時間見積離れが進んでいます。これはもっともな話です。答えるべき重要な質問は、「このスプリントを完了するためにコミット可能な現実的な作業量はどれくらいか」および「バックログのこの部分はデリバリーにどれぐらいの時間がかかるのか」だからです。初期見積を基にしたストーリー ポイント アプローチは、こうした質問への回答となりえます。時間で見積もるときのようにチームが ‘正確さ’ に対して不安に感じることはありません。

GreenHopper チーム自身はこの記事で解説されているアプローチを使用しており、信頼できるベロシティを確立済みです。我々はこのベロシティを使用して、何か月も前に計画しています。たとえ新しい作業がその間に見つかったとしてもです。

我々はこのアプローチをお勧めします。直感と相容れない場合がありますが、それでもパワフル、高速、かつシンプルです。

そうは言っても、アジャイルに関する重要な教訓のひとつは、自分にとってうまく行く方法を見つけることです。ですから、GreenHopper は上述の代替手段、たとえば、スプリントのコミットメントへの残余見積の使用、見積の時間、およびサブタスクにおける時間見積などをサポートしています。

アトラシアン アジャイル シリーズ

本記事は、アトラシアン製品を愛用しているトップ アジャイル エキスパートによる最新のゲスト ブログ記事です。アジャイルに関する資料については、「Do agile right」を参照してください。また、Nextag、OpenDNS、OfficeDrop、John Muir Health、PBS、Interspire、その他のインタビューもお読みください。


Related Articles

お気軽にお問い合わせください

お問い合わせ