今回はプロジェクトを進める上で重要となる「スケジュール管理」のお話をします。
「スケジュール管理」と聞くとリーダーの仕事、自分にはあまり関係がないな、、、と思うかもしれません。
ですが、1メンバーであっても自分自身のスケジュールを管理しておく必要があります。
スケジュール管理が出来ていないと、順調でなくなった時に辛い状況に陥ります(主に精神的に、、、)。
・何か急に忙しくなった
・この状況がいつ終わるのかわからない(残業するしかない)
・なぜ遅れているのかの説明で更に遅れる
・どう助けてもらえば良いかわからない
私もこういった失敗をしてきましたが、
当時は技術力が未熟だから予定通り進まないと思っていました。
予定通り進まないのは「スケジュール管理」が出来ていないから
私は予定通り進まない元凶は以下だと思っています。
・大雑把なタスク
・感覚で出した進捗率
・成果の認識ずれ
タスクが大雑把だとタスク完了までに何をやれば良いかがわかりません(漏れや抜けが発生)。
進捗率の基準が不明瞭だとメンバによって進捗に差が出ます(80%から進まない、進捗が戻るなど)。
成果の認識ずれがあると無駄作業が発生します(不要な調査や作業の重複、戻りが発生)。
CCPMとは
Critical Chain Project Management の略。
プロジェクトの各タスクの予算やスケジュールをぎりぎりに抑え、
代わりにプロジェクト・バッファを設ける管理手法。
スケジュールは厳しくても緩くても作業効率が悪くなります。
厳しいと
・作業過多による効率低下
・品質低下による戻りや修正
・リスケジュールの調整
・リカバリ要員の教育/サポート
などなど
緩いと
・100点を120点にするために時間を注ぐ
・のんびり作業する
※参考:パーキンソンの法則、パレートの法則
効率良く進めるには「ちょうど良い」スケジュールを立てることが重要となります。
そこでCCPMを利用します。
タスクにバッファがないことで
・時間内に終わらせようと努力する(調べる時間に制限が掛かる。有識者に聞いたり行動する)
・進捗の遅延状況がすぐにわかる
・課題が共有できる
全体工数からバッファを確保することで
・課題に対処できる
・予定外の作業に対応できる(プロジェクト会議や避難訓練など)
というメリットがあります。
スケジュールは放っておいて予定通り進むことはまずありませんので、
バッファを使って予定通り進めるように調整していきます。
(バッファは全体の2割程度が妥当)
※参考
パーキンソンの法則
仕事の量は、完成のために与えられた時間をすべて満たすまで膨張する。
パレートの法則
全体の数値の大部分は全体を構成する一部の要素が生み出しているという理論。
80:20の法則とも呼ばれる。
予定を立てる
まずは、どういうスケジュールで進めるか予定を立てます。
段取り八分という言葉もあるように、どんな予定を立てるかで成果が大きく変わります。
スケジュールを指示されていても、自分で予定を立ててみてください。
仮に開始時点で指示されたスケジュールと自分のスケジュールに大きな乖離がある場合、
計画の見直しか、不足をカバーするための作業計画が必要になります。
可能なら上長にスケジュールレビューしてもらうのが良いでしょう。
(不要な作業を計画していたり、成果に乖離がある場合もあります。)
予定を立てる際は以下のことを意識してください
・やるべきことを明確にする
・やる順番/担当を明確にする
やるべきことを明確にする
まずはタスクを自分が想像出来るレベルに分解します(長くても4時間程度のタスクにする)。
リーダーの場合は、メンバーがタスクを細かく分解できるかチェックをしてあげてください。
→WBS(Work Breakdown Structure)
各タスクの工数は、普通にやってギリギリ終わるくらいの工数にしておきます。
例)
ログイン画面実装
↓
クライアント側
・ログイン画面
- 画面レイアウト(html/css作成)
- パスワード用コントロール作成
- ログイン認証機能
- 失敗:エラーメッセージ
- 成功:トップ画面遷移
- アカウント新規作成画面への遷移
- パスワード再発行画面への遷移
サーバ側
・ログイン認証機能
・画面遷移
全体
・準備
- 開発ガイドライン確認
- 開発環境構築
- 新規利用ツール習得
- 動作確認用データ作成
・動作確認
・レビュー
↓私はこんな感じの自前Excelで管理しています。
やる順番/担当を明確にする
細かく作成したタスクを営業日に沿って並べていきます。
→ガントチャート
注意しなければならないのは、
・順番が決まっているもの(開発環境構築が終わらないと実装に着手できないなど)
・人に頼まなければならないもの(開発ツールの購入、レビューなど)
これらを意識しておかないと、作業に空きや戻りが発生します。
日程は早めに調整しておきます(先に調整しておくと希望の時間を抑えて貰いやすい)。
タスクを並べる際にバッファを積みます(バッファは約2割。1日6時間計算でちょうど良いくらい。)
このバッファでタスク化していない作業を行います。
・プロジェクト会議や報告/QA調整
・メンバーサポート
・想定外の課題(影響の小さいものは対処、大きいものは報告に向けた調査)
など
バッファを積むことに手を抜いているような感覚があるかもしれませんが、
ここで積んでおかないと計画が破綻します。
各タスクがギリギリの工数になっているため、一つも間違えることなく集中し続けなければなりません。
迷って調べたりしていると徐々に遅れが出てきます。
作業時間いっぱいまでタスクが積まれているので、リカバリは残業時間を使うしかありません。
遅れを取り戻すために悪魔的な方法(実装しながら設計書を直したり)を取り始めます。
例外的な手法が一般化してしまい、いずれは不具合になって問題が顕著化することでしょう。
参考ツール)開発マイルストーン
開始
タスクの時間はギリギリなので、悩むことや問題が出てくれば別課題として管理します。
(課題を切り離して対応していたタスクは終わらせます)
自分で予定を立てると、1日のやるべきことが具体的になり、
積み上げた先のゴールも把握できるため状況がわからなくなることはないと思います。
私の場合、全体をスケジューリングした後は1週間単位区切って管理しています。
毎週月曜日にその1週間分のチーム内のゴールと作業予定を切り出し、チーム内で共有と
日々の進捗確認をして進めています。
CCPMを使うようになってから、予定通りに進められることが増えてきました。
タスクを対応しながらどうすれば時間内に終わるか。効率が良くなるかを考えて取り組んでみてください。