変化を受け入れることと、場当たり的なのはちがう
プロセスデザインエージェントの芝本秀徳です。
ここ数年で、ソフトウェアプロジェクトの進め方として、アジャイルな方法論が徐々に浸透しつつあります。これ自体はすごくよいことだと思います。しかし、一方で、アジャイルな方法論をうまく活かせず、さらなる混乱を招いている例もあります。
■ アジャイルへの勘違い
アジャイルな方法論は、「変化を積極的に受け入れる」ための方法論です。顧客の要求は変化する。ならば設計も変化する。変化することを前提として、変化に適応するためにどうすればいいかということを考えられた方法論です。現実に即しており、うまくやれば機能します。
アジャイル以前の方法論は、変化を抑え込もうとするアプローチでした。そのため現実とマッチせず、現場は変更に振り回されてきたわけです。そういった現場にとって、アジャイルの提唱するアプローチは非常に魅力的で、飛びつきたくなるのは理解できます。
しかし、「変化を受け入れること」を、「場当たり的な対応」と勘違いしていると、状況はよくならないばかりか、悪化してしまいます。この二つはまったくちがうものです。
■ 変化への適応 ≠ 場当たり的な対応
「要求は変化する」ということは、「要求仕様があいまいなまま進めていい」ということではありません。「設計は変化する」ということは、「きちんと設計しなくていい」ということではないのです。
要求は変化しますが、要求仕様の「初期品質」をどれだけ確保できるかが、設計の品質を左右します。そもそも仕様化できていなければ、設計することは不可能です。仕様を「確定」させないことと、仕様があいまいなまま置いておくことは、まったくちがうのです。初期品質の低い要求仕様が、プロジェクトが進むうちにひとりでに品質が上がるわけはないのです。
設計も同じことがいえます。変化に適応するということは、初期品質の低さを補うものではありません。段階的に洗練していくということは、「常に最適化されている」ということなのです。
■ 実は敷居が高いアジャイル
アジャイルは決して、敷居の低い方法論ではありません。その前提として、高いエンジニアリング技術が求められます。要求を仕様化する技術、変更に強い設計ができる技術など、基本的なエンジニアリング技術があることが「前提」なのです。
アジャイルは「軽い」プロセスかもしれませんが、それはエンジニアが必要なプロセスを小さく回すことができる。プロセスが身についていることが前提なのです。プロセスがいらないわけではないのです。むしろ、ハードルは高いと言えます。
エンジニアリング技術を持たないままアジャイルに取り組んで、結局「アジャイルもうまくいかない」となげくのは、お門違いということです。アジャイルな方法論は、エンジニアリング技術、プロセス技術を補うものではないのです。
■ 要求の仕様化技術と、設計力を高める
アジャイルは方法論は、現実に即した非常によく練られたものです。それを十分に活かすには、まず「要求を仕様化する」技術を身につけ、「変更に強い設計」ができるようになることです。
スティーブマコネルは著書『CODE COMPLETE』のなかで、設計の心構えとして「二度測って、一度で切る」という大工の教えをひいて、上流工程の大切さを訴えています。今後どのような方法論が用いられようとも、この教えの重要性は変わることはないはずです。
アジャイルな方法論は、エンジニアリング技術を不要にするものではありません。むしろ、一人ひとりに高いエンジニアリング技術を要求するものです。
手始めに『CODE COMPLETE』など、読んでみてはいかがでしょうか。きっとアジャイルな方法論に活かすヒントが見つかるはずです。