$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

タスクの依存関係とリソースの両方を考慮してプロジェクトマネジメントをするCCPM理論を学んだ

自分のプロジェクトマネジメントのスキルをもう一つ伸ばしたくて、タスクの依存関係とリソースの両方を考慮してプロジェクトマネジメントをするCCPMクリティカルチェーンプロジェクトマネジメント)理論を学んだ。この理論を学んだおかげで、よりプロジェクトの計画作りや、プロジェクトの現在の危険度の把握をやりやすくなったと感じる。アジャイルの手法であるベロシティでの管理ともうまく組み合わせられそうだったので、今度試してみたい。

参考にした書籍

「進む!助け合える!WAのプロジェクトマネジメント」「アジャイルCCPM」の二つはかなり参考になった。

CCPM理論のやり方に対する自分のまとめ

CCPM理論の五つの特徴

  • 1) マルチタスクを排除する
    • WIPの数が極力少なくなるように、人員を集中させ、短期でタスク完了できるようにコントロールする
  • 2) クリティカルチェーンによるマネジメント
    • クリティカルパスはタスクの順序関係のみが依存関係に反映されているのに対し、クリティカルチェーンはリソースの並列可能度も考慮に入れている
    • 計画フェーズでリソースを考える時は、タスクに対して人でなくスキル(能力・知識・技術・資格など)を割り当てる。実際に人を割り当てるのは実行段階で行う
    • クリティカルチェーンになっている作業が可能になったら、それ以外の全てを無視してでもクリティカルチェーンのタスクを行うと全員理解することが重要
  • 3) バッファを集約して管理する
    • CCPMでは、各タスクにバッファが組み込まれている状況を無くし、合流バッファとプロジェクトバッファに集約するマネジメント手法
    • 合流バッファやプロジェクトバッファは、そのチェーンの長さの50%で組み込む
    • 不確実性の程度はプロジェクトによるので、バッファのサイズに対してどうしても不安が残るなら調整する。ただしあまり大きくすると夏休み症候群のような現象がぶり返すので注意
  • 4) バッファの消費状況でプロジェクトを監視する
    • プロジェクト全体の進捗状況や危険度はクリティカルチェーンの完了率とプロジェクトバッファの消費率で判断する
    • バッファの消費状況を指標とし、手を打つべきタスクをチームで共有する
  • 5) タスクに必要な万全の準備が整うまで、スタートさせない

CCPMアジャイルの手法を組み合わせる

  • 計画フェーズの工程表作成の手順
    • 1) 実装に必要なスキルの違いなどでフィーチャーをグループに分ける。グループ分けは最小限にとどめておくことを推奨
    • 2) 各グループをマザータスクに変換する。マザータスクの期間はベロシティをベースに求める
    • 3) マザータスクを元にCCPM工程表を作る。
      • 見積もり期間 = ストーリーポイント / ベロシティ
      • 元になるマザータスクの期間の2/3をタスク期間に、1/3をバッファサイズにする。通常のCCPMよりも見積もりは悲観的ではないのでバッファサイズは少なめに
  • 実行フェーズではタスクを始める前に、ある程度の規模にタスクをバラす処理をする
  • メンバー数が変更になった時は、それに合わせて見積もり期間を調整する

ベロシティ管理と組み合わせるには?

基本的には以下のように組み合わせることができる。

  • ストーリーポイントでタスクの見積もりを出す
  • タスクをある程度のグループにまとめ、マザータスクを作る。グループは最小限にする
    • 実装に必要なスキルの違いが大きく異なる場合
    • 他の大量のタスクから依存されているような、クリティカルなタスクな場合
  • マザータスクの依存関係や、リソースの状況を考慮して、クリティカルチェーンを作る
  • マザータスクにまとめたタスクのストーリーポイントを合計し、ストーリーポイントとベロシティから、期間を計算し、バッファをいれる
  • あとは全体のバーンアップチャートだけでなく、クリティカルチェーンとなっているようなパスのバッファが消耗されすぎていないか監視する

まとめ

今回はCCPMについて学んだことをメモしておいた。アジャイルな手法とも組み合わせ可能だと感じたので一度試してみたい。

CCPM理論に興味があれば参考にした書籍を読んでみてもらえると良さそう。特に「進む!助け合える!WAのプロジェクトマネジメント」「アジャイルCCPM」は良かったです。