アジャイルサムライに出てくるプロジェクトの前に立ちはだかる強敵たちだ。
- 時間
- 予算
- 品質
- スコープ
プロジェクト成功のカギを握っているのは、荒ぶる四天王とどう付き合うかが重要になってくると思う。
アジャイルサムライによると、全ての四天王を最優先に倒しながらプロジェクトとを進めるのは非現実てきだと述べられている。
では、どのように付き合っていくのが良いのだろうか。
計画が現実にそぐわなくなっているのであれば、アジャイルサムライは計画を変える。
計画が崩れ始めるとアジャイルサムライは計画を変えるようだ。となると、次の問はどのように計画を変えるかだ。
時間は、有限と考えられており、伸ばすことで顧客の信頼を失う可能性があり、それに加え何も提供できなくなる状況に陥る可能性があるため、変えることが難しいと考えられている。
予算は、資金調達の難しさや、人的リソースが有限であることから、変えることが難しいと考えられている。
では、品質とスコープはどうだろうか。
品質は、落とすことで期間内にソフトウェアをリリースすることは可能だと考えられている。
しかしながら、この考えはアンチパターンとなりそうだ。
品質には大きく外部品質と内部品質のふたつに分かれる。まずは外部品質から見ていこう。
外部品質は顧客が要望した機能がちゃんと実装されたかどうかをはかる品質だ。外部品質を下げることは、顧客の要望に沿わない機能ができてしまう可能性があるので論外だ。
では、内部品質についてはどうだろうか。結論を言うとこの考えもアンチパターンになりそうだ。
内部品質は細分化するといくつかの項目に分けられるが、ここではプログラマからみたコードの品質としたいので内部品質の中でも保守性に充填をおくことにする。
内部品質を下げるということは、今後の開発のスピードを下げることとイコールになると考えられている。
内部品質を下げて開発をすすめることに関しては、マーチン・ファウラーのブログがとても参考になる。
開発者は、質の悪いコードは数週間以内に著しく遅くなることに気づいています。つまり、内部品質とコストのトレードオフが適用される期間はほとんど無いのです。
内部品質を下げる行為は、数週間後にその代償を払うことになりそうだ。
半年以降に代償を払うことになるとすれば許容できそうな気がするが、数週間となれば内部品質を下げてまでゴールに向かう意味はないように思える。
顧客そして開発者にとっても幸せな結果をうまないことは容易に想像できる。
時間・予算・品質が削れないとなれば、残りはスコープを削ることになりそうだ。
スコープを削ると、リリースできる機能は少なくなるが良いこともありそうだ。具体的には次の良いことがあると思われる。
- 時間を犠牲にせずにすむので期間内にソフトウェアがリリースできる
- 内部品質を犠牲にせずすむのでソフトウェアの保守性が高まる
もし価値を継続的に俊敏に提供したいならスコープを削ったほうが良いのかもしれない。