勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

Water-Agile-Fall:スケジューリングに関するプラクティス

アジャイル開発プロセスのスケジュールに関する考え方が素晴らしい。

  • 一定の期間(スプリント、イテレーション)に可能な範囲のタスク(ストーリー、フィーチャー)を詰め込み、遂行する。
  • それぞれのタスク毎に終了条件が明確。基本的には「ソフトウェアが正しく動くこと」が条件である。

f:id:kent4989:20120103233339j:plain

一般的なウォーターフォール型ソフトウェア開発プロジェクトでは、分解されたWBSおよびガントチャートにしたがって、計画的に作業を実施・管理していく。すると、自然と「計画通りに開始して、計画通りに終了する」ことが良いことだという誤解が生まれてしまう。

特にソフトウェア開発におけるさまざまな作業は見かけ上の品質が目に見えないため、作業者は好きなだけ作業を延伸させることが出来る(物理的な資材を浪費しないため、時間に余裕があれば何度でもやりなおしたり、求められる以上の品質が出るまで作業をすることもできる)。

そうすると、ウォーターフォール型ソフトウェア開発プロジェクトでは、個別のタスクは「スケジュールどおりに完了する」または「遅れる」しかなくなってしまう。結果として、全体のスケジュールバッファを十分に確保していないプロジェクトは遅延することになる。

これを防止するためには、根本にある「計画通りに開始して、計画通りに終了する」ことが良いことだという誤解を防ぐようなマネジメントを行う必要がある。 

  • タスクは早期着手・早期完了すればするほど良い
  • タスクの内容は後続工程に着手できる程度の品質で完了すれば良い

これを徹底することで、アジャイルのメリットをウォーターフォールにもかなり取り込むことが出来る。