イテレーション・スプリントを使ってはじめて開発するチームがよく直面するのが、スプリントで仕事が終わらない問題です。はじめはそういう時期があってもいいですが、慢性的にこれが続くとなると、注意が必要です。
仕事を終わらせるために
仕事というものは、はじめるときに終わりを定義するものです。しかし、ソフトウェア開発の場合、予想外のことが結構起こります。
- 予想以上に仕様が複雑になった
- 予想以上に調査に時間がかかった
- 予想以上にはまってしまった
これはどうしようもない要素なので、アジャイル開発において仕事が終わらない場合は、
- 予想以上に時間がかかりそうだから、スコープを減らして期限内で終わらせられるようにする
- 予想以上に時間がかかりそうだから、リリースから外して次のリリースに回す
- 予想以上に時間がかかりそうだから、チームメンバーに手伝ってもらってかたずける
というように、終わらないと気がついた時点で調整・再計画を行っていきます。調整・再計画では、仕事を終わらせるために様々な選択肢を検討します。そうやって仕事を終わらせようとしていれば「仕事が終わらない」という状態にはなりません。
よって、「絶対になんとかしろ」や「気合でがんばる」といった精神論のやりとりをしてはダメ。予想ベロシティが下がるなど、他の影響はでるかもしれませんが、きちんと調整・再計画すればスプリント内で仕事は終わります。終わらせられます。
ただし、調整・再計画をしすぎると、スプリントで仕事が終わらないチームになってしまいます。
スコープやスケジュール調整などは、単純に仕事を減らす辻褄合わせとも言えるからです。
「いやいやそれがアジャイルだから」みたいなこと言う人も言いますが、約束を守らないのがアジャイル開発だというのであれば、それは間違いです。
バッファをどう考えるか
終わらない問題の対策として、不確定要素を見越してバッファを追加する方法もあります。ただ、スムーズに開発が進めばバッファは不必要になり、不必要なものを見積もる時間がかかってしまいます。
また、そのバッファが適切な時間・期間かどうかを判断するのが難しいという問題もあります。プロマネの世界だと一律仕事量のX%をバッファにする作戦もあるぐらい、どんぶり勘定になりがちです。
しかもバッファってよく食いつぶされちゃうんですよね。「前倒し」となりにくい部分があります。また、余分なバッファを詰め込んで過剰請求する会社もあるみたいです。早く終るのにゆっくりやるとか・・・なかなかのものです。
この問題は、このブログのテーマとちょっとずれるので詳しく書きませんが、仕事をするプロとして間違ったふるまいだと思います。ばれなきゃ一方はいいかもしれませんが、Win-Winにはなりえません。
アジャイル開発は正直であることが求められる手法なので、基本的に「正直ベース」、「実績ベース」で仕事を進めます。
たとえば、バッファについてはフィーチャバッファのように、特定のストーリーをバッファに見立てて考えるケースもあります。たとえば、スプリントバックログでストーリーを一列に並べておき、終わらせる目標値(上記の図だと確実ライン)を決めます。その付近にあるものは、場合によっては終わらない可能性があることになります。
ただし、フィーチャバッファで対応しすぎると、スプリントで仕事が終わらないチームになってしまいます。
「いやいやそれがアジャイルだから」みたいなこと言う人も言いますが、約束を守らないのがアジャイル開発だというのであれば、それは間違いです。
仕事が終わらない場合に本来やるべきこと
スプリントが終わったあとに「やっぱ終わりませんでした」となり、次のスプリントに終わっていない作業を移そう・・・というのは、もはやアジャイルやスクラムうんぬんの話ではなく、仕事をするプロとして間違ったふるまいです。
「なんでそんなことになったの?」、「なぜすぐ相談しなかったの?」、「次のスプリントで予定していることを予定通りやれるの?」とツッコミどころ満載ですからね。
ただ、思った以上に「次のスプリントにまわそう」と判断する現場は多いです。まぁ、しかたない部分もあるかもしれませんが、結果的に「次のスプリントにまわそう」と判断するにしても、本来であれば
- すぐに調整・再計画できなかった理由は何か?
- 同じ問題をまた起こさないために何ができるか?
をまず考えるはずです。改善が進むまで同じような問題が置き続けるかもしれませんが、改善がうまくすすめば終わらせられるチームになれます。継続的にふりかえれてない、改善に繋がっていないなら、スプリントのサイクルがうまくまわってないと考えたほうが良いでしょう。
本来やるべきことをやらずにいるとどうなるか? 計画を立てられないチーム。計画を守れないチーム。信頼されないチーム。これが正しいはずなんてありません。
まとめ
スプリントで仕事が終わらない病の処方箋のひとつとして、最初のスプリントがはじまるときに、「スプリントで必ず仕事を終わらせてください」とお願いしてみましょう。つまり、スプリントが終わったあとに「やっぱ仕事が終わりませんでした」は「なし」ということです。
このお願いの意図は先に書きましたが、調整・再計画を適切なタイミングでしましょうになります。
このお願いがあるだけで、チームメンバーが部分的に自律して動き出します。「やっぱ終わりませんでした」とならないように、何をすべきか考えるようになります。
誰もが「やっぱ終わりませんでした」なんて、みんなの前で言いたくないですよね
- 6/6 追記: Twitterの指摘を見つけたので、言葉足らずな部分を追記
- 6/7 追記: 鋭いコメントいただいたので自分なりの意見を追記
- 6/8 追記: バッファを使ってずるした場合についてコメントいただいたのでちょっとだけ追記。ずるはだめですよね。ずるは。
終わりませんでしたと報告すること、嫌いじゃないですねー。
いいねいいね
スコープを減らしたり、リリースを遅らせるということは、単に仕事を減らして辻褄を合わせただけともとれます。また、他の人に手伝ってもらったとしても、手伝う人が抱えた仕事が先送りになればこれも本質的に解決にはなりません。
いいねいいね: 1人
するどいコメントありがとうございます。いただいたコメント元に追記してみました。
おっしゃるとおり、スコープなどの調整は小手先の辻褄合わせとも言えます。やりすぎると仕事が終わらないチームでしかないですね。
おっしゃるとおり、手伝う人が仕事を持っているとその仕事が遅れるだけですが、チームの出力量を最大化するために手伝いあうのは悪くない方法ではないかと思いました。
いいねいいね
「スプリントで必ず仕事を終わらせてください」と強調するなら、バッファを巧妙に混ぜ込んで、それを正規の見積もりとして、絶対確実に間に合う分量しかしなくなります。そうなると、見かけ上スムーズに行っているように見えるものの、正確に見るなら著しく生産性の低いチームになります。
いいねいいね: 1人
コメントありがとうございます。この件についてちょっとだけ追記してみました。
ずるしちゃうと「そもそも論」になっちゃいますよね。
いいねいいね