読者です 読者をやめる 読者になる 読者になる

Meblog

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

アジャイルとハイプ

たまには会社のことも差障りのない程度に書いてみようと思う。

今、業務では、試験工程の真っ只中。全体の工程にウォーターフォールモデルを採用したプロセスでWebアプリを開発している。

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

こういった意見はくだらないものもあるが、耳が痛いことが多い。当然対応すべきだった事を指摘されることもあり、エンジニアとしては是非対応したい。しかし、請負会社の契約も切れてしまった今、残ったリソースで修正するのは並々ならぬことであり、またウォーターフォールの概念から言っても、禁じ手でもあるのだ。なぜなら、ウォーターフォールにおける各工程の終了とは、完璧な品質の担保を意味しているため、要望による修正は、全ての工程をやりなおしを意味するからだ。幾度となく言われていることであるが、これがウォーターフォールの最大の欠点である。

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

simplearchitect.hatenablog.com

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

        • -

ウォータフォールでは全ての機能を完全な仕様書におとしこみ、それを開発が順次実装していく。仕様書は開発工程開始時点では完璧であるはずなので、これをどれだけ忠実に実装していくかが問われるわけだ。しかしひとたびこれを「アジャイル」にしてみると、企画からしてみると、開発開始時点で仕様書は完成してなくてもよい、という解釈になる。企画からの要望はずるずると開発終盤まで変更される。開発終了時には、なんとか動くものはできるものの、色々なところに悔いがのこる中途半端なものが完成する上、開発途中の仕様変更により、工数も大きく膨らんでしまう。ここで開発を振り返ってみよう。企画が開発完了した製品を実際にテストしてみることを想定する。すると、「ここはこういう機能って言いましたよね?」という言った言わない論争が勃発する。しかし、開発途中には様々なバージョンの要求仕様書があり、どれが結論かも全く判然としないのだ(企画側はいまだにバージョン管理には相当疎いことに留意しなければならない)。本来、いかなる開発においても、企画と開発が一体になっていない以上、ドキュメントは残すべきである。しかし、「アジャイル」という言葉を導入した途端、多大なコミュニケーションにより仕様を担保できると考えてしまい、完成したドキュメントはなくなってしまう。

簡単にいうならば

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

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

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

        • -

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