多くのプロジェクトでは、個々の作業を洗い出してそれぞれの作業時間を見積もり、スケジュールを引く。
この時、見積りに対してある程度バッファを乗せるケースは多いだろう。
スケジュールに乗せるバッファはどれぐらいが適切なのだろうか。
あるシステム開発会社では、見積もった合計日数の50%をバッファとして加えるよう、社内のプロジェクトに推奨している。
別の会社では、個々の作業の作業時間見積りに20%を上乗せしている。
バッファの大きさを感覚値で決めている方もいるだろう。
この記事では、SRSS法という数式を用いたバッファの算出法を紹介する。
そもそもなぜスケジュールにバッファを乗せるのか?
スケジュールにバッファを乗せる理由は、プロジェクトを不確実性から守るためだ。
不確実性が0のプロジェクト、すなわち未来は全て見えていると断言できるプロジェクトであれば(そんなプロジェクトはないと思うが)バッファは必要ないだろう。
また、不確実性をいくらか含んだプロジェクトであっても、遅れた時の損害がないのであれば、こちらもバッファは不要ではないだろうか。
一方、プロジェクトが不確実性を含んでいて、かつ遅れた時に損害を伴う場合は、バッファを乗せることは立派なリスクマネジメントとなる。
そして、この不確実性が小さければバッファもそれほど必要ないが、不確実性が大きければ、それを吸収できるだけの十分なバッファが必要になるだろう。
見積りは幅をもった値である
バッファの算出法を紹介する前に、前提として、見積りが幅をもった値であることを述べておく必要がある。
「ログイン機能には3日かかります」という見積りを出す時、あたかも見積りが3日というただ1つの解として導き出せるかのように振舞っている。
しかし、見積りは実際には「順調にいけば3日、遅くとも5日ぐらいと見込んでいます」というようにある程度の幅をもった値になるのではないだろうか。
なぜなら、見積りは現時点で見えているだけの不完全な情報から完了日を予測する行為だからだ。予定完了日を変動させる要因はいくつもあるだろう。
見積りの幅からバッファを算出する例 - 二乗和平方根法
前述した見積りは、「50%の確度で3日、90%の確度で5日と見込んでいます」という言い方もできる。
そして、この2点の見積りが散らばっているほど、不確実性の大きい作業と言えるだろう。つまり、3日〜5日の機能よりも、3日〜8日の機能のほうが、見えていない部分が大きく、遅れるリスクが高い機能ということだ。
したがって、バッファを不確実性の大きさに応じて確保するものと考えれば、この2点の見積りが散らばっているほどバッファも大きくするべきということになる。
さて、散らばり具合を表す数値として標準偏差という値がある。
二乗和平方根法は、この2点の見積りの標準偏差をバッファとする算出法だ。
例えば、3日〜5日のログイン機能、5日〜10日の記事一覧機能、4日〜6日の記事詳細機能から成る開発スケジュールであれば、次のようになる。
このように、2点見積りの標準偏差からバッファを求めることで、不確実性の大きさに応じたバッファを、一つの計算結果として求めることができる。
ちなみに、最初から全ての作業に90%見積りを適用すれば良いのではと思われた方もいるかもしれない。確かにそのほうがより安心できる。
しかし、何もかもが最悪のケースになる可能性はほとんどないだろう。であれば、必要以上に時間とお金を使う選択は避けるべきだ。
また、パーキンソンの法則(仕事の量は、完成のために与えられた時間をすべて満たすまで膨張する)を防ぐ効果もある。バッファのつもりで個々の作業に90%の見積りをあてても、その90%を満たすまで作業が膨張すれば、結局はバッファがないことと同じになってしまう。
バッファは水増しではなく、スケジュールの信頼性を上げるための工夫
バッファを乗せたスケジュールを顧客に見せづらいと感じるプロジェクトマネージャーもいるかもしれない。
しかし、バッファを乗せることに後ろめたさを感じる必要はない。
バッファは水増しではなく、不確実性の中にあってもスケジュールの信頼性を上げるための工夫だからだ。
良いスケジュールとは、無理に早めたスケジュールではなく、プロジェクトを取り巻く関係者たちが信頼できるスケジュールである。
なぜなら、そのスケジュールを元に様々な意思決定が下されるからだ。
もちろん、見積りが将来の予測である以上、このやり方で算出したバッファを積めば100%スケジュール通りにいくと断言できるものではない。
しかし、バッファがスケジュールの信頼性を上げていることは間違いないだろう。
そして、顧客から「なぜそれだけのバッファを確保したのか?」と問われても、説得力をもって答えられるはずだ。
参考
Project Management Institute, Inc. - Critical chain buffer sizing
アジャイルな見積りと計画づくり