みなさんこんにちは。@ryuzeeです。

スプリントを始めるには、スプリントプランニングを実施します。

プロダクトオーナーはあらかじめプロダクトバックログの並び順を最新にしておき、プロダクトオーナーはどれを実現したいのかを提示するとともに、開発チームは実際にどれくらい実現できそうなのかを考えた上で、対象となるプロダクトバックログ項目を選択します。その上で、選択したプロダクトバックログ項目を実現する方法を開発チームは検討し、作業計画をたてます。

このときに考慮が必要になるのが、スプリントのキャパシティです。

キャパシティとは何か

スプリント期間が1週間の場合で考えてみましょう。 1週間スプリントの場合、休日を抜くと5日間になります。その間毎日8時間働くとするとスプリント期間中の総時間数は40時間になります。 しかし、この40時間に人数をかけ合わせたものがキャパシティになるわけではもちろんありません。 (※残業は考慮に入れないでください。最初から残業を考慮に入れた計画はろくなものではありません)。

キャパシティとは、そのスプリントで、実際にプロダクトバックログ項目をインクリメントに変えるために使える時間を指します。

キャパシティの計算方法

では、実際にキャパシティをどう計算するのか見ていきましょう。やり方はいくつもありますので代表的なものを紹介します。 以下の例では、個人単位で数字を出したあとに、開発チーム全体のキャパシティを出すという流れで進めます。

イベントの時間を算出する

まずスクラム関係のイベントの時間を算出します。 スクラムでは、イベントのタイムボックスが決まっています。 1か月スプリントの場合の時間と比率は以下のようになります。

スプリント全体(20日換算) 160時間 100%
スプリントプランニング 8時間 5%
スプリントレビュー 4時間 2.5%
スプリントレトロスペクティブ 3時間 1.875%
バックログリファインメント 16時間 10%
デイリースクラム 15分/日  

スプリント期間が短い場合は、デイリースクラムを除いて時間が短くなります。 1週間スプリント(5日換算)にすると以下のようになります。

スプリント全体 40時間 100%
スプリントプランニング 2時間 5%
スプリントレビュー 1時間 2.5%
スプリントレトロスペクティブ 1時間 2.5%(※1)
バックログリファインメント 4時間 10%
デイリースクラム 1時間(※2)  
残時間 31時間 77.5%
  • ※1 スプリントレトロスペクティブは同一比率にすると45分となり短いので通常1時間で設定しています
  • ※2 1週間スプリントでは初日にはデイリースクラムをやらないことも多いので、計算上4日に設定しています

スクラム以外に組織の中で必要な作業をする時間を算出する

既に20%以上の時間がイベントに使われていることが分かりましたが、他にも考慮しないといけない点があります。 それが組織の中でのスクラム外の仕事に関係する時間です。 例えば、以下のようなものを考慮に入れます。

  • 運用対応
  • メールの処理
  • 日報や週報の作成
  • 経費精算などの事務処理
  • マネージャーとの1 on 1
  • 目標設定の検討
  • 採用面接の手伝い
  • 研修への参加
  • 有給休暇

これらは毎週定常的に発生するものと、不定期に発生するものに分けられますが、いずれにしても所要時間を算出しておき、キャパシティから減らすことになります。 それぞれの時間がどの程度になるかは組織の規模やプロセスによって左右されます。 感覚的には、上位4つの項目で、5〜10%程度の時間はかかることが多いように思います。

つまり、合計すると研修や有給休暇がない週で、開発に使える時間は27時間、比率として67.5%となります。 (研修や休暇の場合は、それらを全て引いた上で、二重計上されてしまった値を戻せばOKです。また、そんなことはしていないとは思いますが、複数のスクラムチームや業務を兼任している場合は、それも考慮が必要です。)

スプリント全体 40時間 100%
スクラムイベント 9時間 22.5%
スクラム以外の業務 4時間 10%
個人キャパシティ 27時間 67.5%

開発チームのメンバーごとにキャパシティを合計することで、開発チーム全体のキャパシティが明らかになります。

バッファを考慮する

開発チームのメンバーごとに使える時間を合計すれば、開発チームのキャパシティになることが分かりました。 開発チームが5人のとき、実際にどうなるのかを表したのが下の表です。 (※年間休暇日数は少なくとも10日程度と考えると5人チームでは年間50日となります。つまり毎週誰か一人が一日休むというのはそれほどおかしくありません。)

Aさん 27時間  
Bさん 20時間 1日休み(※)
Cさん 24時間 半休
Dさん 27時間  
Eさん 24時間 採用面接2回
合計 122時間 61%

では、スプリントバックログのタスクの見積時間の合計は、その数字(この例だと122時間)まで入れられるか、というとそういうわけでもありません。

スプリントプランニングでは必ずしも全てのタスクが洗い出せるとは限りません。 初期の段階ほど追加タスクが生まれやすいですし、そもそもタスクの時間の見積があっている保証もありません。

つまり、最初からキャパシティ目一杯を使う計画をたててしまうと、スプリントプランニングで選択したプロダクトバックログ項目が終わらない可能性が高くなります。 別の観点では、目一杯詰め込んだ計画は、ミスや遅延が即「完成しない」結果に結びつくため、精神的な負荷が高くなります。

このような問題を防ぐためにバッファを持たせます。 バッファは個々のタスクごとに持たせてしまうと、パーキンソンの法則(時間を目一杯使うような力が働く)に当てはまり、ムダが多くなるので、キャパシティの全体に対して確保します。

キャパシティの比率には絶対的な値はないですが、最初は20〜30%程度から開始し、レトロスペクティブなどを使って適正化していけばよいでしょう。今回の例だと、休暇や採用面接など全てを考慮すると、計画済作業に使える時間は全体の半分以下となりました。休みがない場合でもおおよそ50%程度になります。

スプリント全体 200時間 100%
スプリントキャパシティ 122時間 61%
バッファ 37時間 (キャパシティの30%)
キャパシティ(補正後) 85時間 42.5%

まとめ

最初のうちはこのような計算をしておき、自分たちがどのくらいのペースで開発できるのかを把握しておくと良いでしょう。 スプレッドシートを使って計算できるようにしておくと計算が楽になります。 慣れてくれば、あまり細かく計算しなくても大丈夫にはなっていきます。

それでは。