要件定義の進め方

システム開発の大炎上を防ぐために、上流工程(前工程)に位置する「要件定義」について、考えていくブログです。

要件定義書の作り方
PDCAサイクルではなく、PDCサイクルを回そう
あるべきV字モデルについて整理した
スコープを決めてから、QCDの議論をしよう

システム開発の炎上を止めるためにできること

プロジェクトというのは、炎上しやすいものだ。あっちでも炎上し、こっちでも炎上する。火消し屋なんていう役割が、存在するくらいだ。今回は、炎上を防ぐためにできることを考えたい。

炎上の定義

まずは、炎上の定義をすることとする。炎上というと、顧客がカンカンに怒っていて、エンジニアは疲弊している状況を想定しがちだが、プロジェクトという観点で考えると、状況はシンプルである。要は、プロジェクトが成功しそうにないという状況だ。

では、プロジェクトが成功したというのはどういうことかを考えると、成功したプロジェクトというのは、下記を3つとも満足しているものだ。

  • Q:品質が期待値を上回っている
  • C:コストが予算を下回っている
  • D:納期に間に合っている

逆に、失敗したプロジェクトは、下記のいずれかに該当する。

  • Q:品質が期待値を下回っている
  • C:コストが予算を上回っている
  • D:納期に間に合っていない

このうち、炎上というのは、どのような状態なのであろうか?私の認識では、

  • 納期までに期待の品質に届かない状態

が、いわゆる炎上状態と考える。

納期なんて間に合わそうとすれば間に合せられる。ボロボロなものを納品しても、納期までに納品したこととなる。しかしながら、そんなものを納品しても顧客は激怒するであろう。成り行きに任せると、期待の品質に届かないまま期日を迎えてしまう。これが、炎上している状態だ。

炎上を止めるために出来ること

納期までに期待の品質に届かない状態が、炎上状態とすると、炎上を防ぐために出来ることは

  • 納期を遅らせる
  • 顧客の期待の品質を下げる
  • 現状の品質を早く上げる

の3つだけである。この3つの実現性について考えてみよう。

納期を遅らせる

納期を遅らせるには、顧客と会話するしかない。まあ、こんなことできる望みは薄いだろう。システム開発が炎上してくると、顧客の機嫌は良くないであろう。そんな状態で納期の調整なんてものは、難しい仕事だ。ダメ元で言ってみるくらいが良い。こちらに幾分かの正当な理由があれば、少しは遅らせられるかもしれない。

期待の品質を下げる

期待の品質を下げるというのは、スコープを縮小させるということだ。この方法は少し希望が持てる。システムに求められる機能は、全てが重要ということはない。必ず優先順位が存在する。それらを整理して提示し、顧客の理解を得られるのならば、期限までに織り込むべき機能を減らせる可能性がある。納期交渉よりも、選択肢を提示して選ばせるやり方の方が交渉成立の見込みはある。また、正常系と異常系と言う観点で交渉してみるのも良い。大抵は正常系の方が優先度が高いからだ。正常系は間に合うが、異常系については遅れるという交渉の仕方もある。

現状の品質を早く上げる

要は、カネで進捗を加速するという方法だ。遅れているプロジェクトに人を投入しても無意味という意見もあるが、筆者としては投入する意味はあると考える。特に、プロジェクト炎上の原因は、マネジメントの問題であることが多い。エンジニアというよりは、問題を整理し、進捗をコントロールする人材を投入することで、進捗を加速することができるはずだ。

まとめ

炎上なんて無い方がいいに決まっている。それでもプロジェクトは炎上する。炎上プロジェクトに投入されたら、身も心も疲弊するであろう。筆者のおすすめは、ロボットみたいになって粛々と仕事をすることだ。どうせ自分が悪いんじゃないし、ぐらいの心構えで、上記で述べた3つの方法を遂行していくことで、少しずつ炎上は解消していくと考える。

結論:粛々と火を消そう