Meblog

このブログ記事は個人の見解であり、所属する組織の公式見解ではありません

アジャイルとハイプ

全体の工程にウォーターフォールモデルを採用しているプロジェクトも未だ多いと思う。

こういったプロジェクトでは、設計・製造工程(プログラミング工程のこと)のあと、何段階かの試験工程がある。試験工程ではブラックボックステストを多分に含み、要望元のユーザテストのようなものも含む。そうすると、当然基本的な設計に関わるような不満も噴出する。こういった機能がほしいだの、ボタンはこういう配置がいいだの、そういう要望だ。

こういった意見はくだらないものもあるが、なかには耳が痛いものも多い。当然対応すべきだった事を指摘されることもあり、エンジニアとしては是非対応したいところだ。しかし、試験工程に移った段階で開発要員は絞られており、残ったリソースで修正するのは容易ではない。そもそもウォーターフォールの概念から言うと、禁じ手でもある。なぜなら、ウォーターフォールにおける各工程の終了とは、その段階での完璧な品質の担保を意味しているため、要望による修正は、全ての工程をやりなおしを意味するからだ。幾度となく言われていることであるが、これがウォーターフォールの最大の欠点である。

すると当然、アジャイルを導入するか、という話が持ち上がってくる。

simplearchitect.hatenablog.com

アジャイルであれば、途中の要件変更に強くなるはずだ、という目論見である。アジャイル自体もう新しい技術でなくなっているし、コンサバティブな職場でも幾度となく検討されていることだろう。しかしこれも何度となく挫折を味わうことになる。最近携わったアジャイル開発も例外ではなかった。この失敗は、人員の問題や企業風土の問題も確かに少なからずある。しかし、今回言及したいのは、それ以外の部分、「ハイプ」だ。

        • -

ウォータフォールでは全ての機能を完全な仕様書におとしこみ、それを開発が順次実装していく。仕様書は開発工程開始時点では完璧であるはずなので、これをどれだけ忠実に実装していくかが問われるわけだ。しかしひとたびこれを「アジャイル」にしてみると、企画からしてみると、開発開始時点で仕様書は完成してなくてもよい、という解釈になる。企画からの要望はずるずると開発終盤まで変更される。開発終了時には、ぎりぎりまで要望変更の対応に追われるため、なんとか動くものはできる。しかし、品質も中途半端、工数も大きく膨らんでしまう。

企画が開発完了した製品を実際にテストする。すると、思った以上に齟齬が多いことにおどろく。齟齬を紐解こうと思っても開発途中には様々なバージョンの要求仕様書があり、どれが結論かも全く判然としないのだ(非エンジニアはいまだにバージョン管理には相当疎いことに留意しなければならない)。本来、いかなる開発においても、企画と開発が一体になっていない場合、ドキュメントは残すべきである。しかし、「アジャイル」という言葉を導入した途端、多大なコミュニケーションにより仕様を担保できると考えてしまい、完成したドキュメントはなくなってしまう。

簡単にいうならば

「なぜドキュメンテーションしなかったの?」
「アジャイル開発だったからです」

ということになる。アジャイルに過度に期待をよせてしまった「ハイプ」だ。

このハイプは、昨今の開発で、多く見られる現象のひとつのように感じる。例えばAIにしても中身や特徴、処理方法は別にして、とにかく「データ処理をうまくやってくれるもの」、VMは「サーバ上の処理をうまくやっていくれるもの」、先程のアジャイル開発はとにかく「開発工程をうまくやってくれるもの」、といった様にだ。ここでの教訓は肝心なのはハイプであるのは開発だけでなく、企画を始めとする間接部門にとってもハイプだということだ。開発には銀の弾などないということは、プロフェッショナルにとっては常識になっている。どれだけ便利な手法でもプラクティスを誤れば、全くうまくいかないアンチパターンになるリスクを孕んでいる。特に昨今の手法はこれさえやっておけばうまくいく、といった簡単なものではなくなっている。自分たちの状況に合わせたプラクティスの選択・構築が何より重大な命題になっていくだろう。この問題は、非エンジニアに説明するのは相当難しい。例えばアジャイルにとっても開発時のステークホルダーのスコープはどれだけか、開発規模はどの程度か、どの仕様が最低限必要なのか(これが一番むずかしい。少ない機能を実装しようとすると普通の人はサボっているとか生産性が低いなどと思ってしまうだろう)、などなど、様々なパラメータがあるが、これらが開発に影響にどのように影響するか。おそらく完全に理解してもらうのは不可能だろう。

        • -

そんなわけで、僕の周りのアジャイルだとかAIとかのバズワードの信頼度は下がるばかりだ。実際にはそれら自体ではなく、その言葉を誤用している僕らやステークホルダーが悪いのだけども。こういったことで時代の潮流に遅れないようにしたいと願うばかりだ。