アジャイル開発の反対はウォーターフォール開発じゃなくて「おまかせ」だと思う

メモ。

アジャイルウォーターフォールを対比させるのは違和感があった。ので、少し考えてみた。

アジャイルソフトウェア開発宣言にある「包括的なドキュメント」とか「契約交渉」とか「計画に従う」とかと、「対話」「顧客との協調」「変化への対応」とかは、わりとばらばらなお題目が並んでいるように見える。少なくともこれがMECEだと思う人はいないと思う。

ばらばら並んでいる項目の共通点、類似点は何か。それはたぶん、「顧客」と「開発者」という2つのロールを仮定して、そのロールの人同士の間でのコミュニケーションコストを最大化する(という言い方が悪ければ「最大限許容する」と言い換えてもいい)というものだろう。文書や契約や計画は、あらかじめ(多少はコストをかけて)まとめておけば、それ以降のコミュニケーションは省略できる(ような気になる)、というものだろう。ツール・プロセスも同様だ。一方で、個人や対話、顧客との協調は顧客側もコミュニケーションコストを支払わざるをえない。変化に対応するというのも、変化が自動的に開発者のところに現れるわけではなく、何がどう変わり、それによってどうしたいのかを顧客が伝えないことには始まらない。動くソフトウェアも、それが顧客からフィードバックを得られるために使われなければ何の意味もない。

言い方を変えると、アジャイルな開発ではコミュニケーションのコストがかかる。むしろ、そこにコストをかけることによって、プロジェクトを成功をさせる、という方法だと思うとすっきりする、ような気がする。

その反対はといえば、要するにパッケージソフトを買ったり、Webアプリケーションをサブスクライブするようなものだ。そこでは開発者と顧客の間のやりとりはゼロがふつうだ。つまり顧客の支払うコミュニケーションコストはゼロで済む。開発側は、個別の顧客の言うことは耳も貸さず(とりあえず「大変貴重なご意見をありがとうございました」と返しはするかもしれないが)、良かれと思うものを実装する。それが良いものだったら使われ、良いものではない場合、最終的には捨てられる。そういうタイプのアプリケーション。

それはつまり「おまかせ」の世界だ。レストランに行けば、好みにあった食べ物が順番に出てくるようなイメージ。顧客としてはたいへん楽ちんだ。これ以上都合のいい方法はない。それで本当に望んだものが出てくるのであれば。

では、ウォーターフォールはどうなっているかというと、おまかせに比べればアジャイルに近い。最初に要件定義でヒアリングはするし、納品前にも何かしらのフィードバックは求める(はず)。ただ、アジャイルほどにはコミュニケーションコストはかけない。開発に際してお客さんに貼りついてください、なんてことは言わない。それは顧客にとってはコストであり、避けられるのであれば避けた方がよい、というのがウォーターフォールの発想だ。

コミュニケーションコスト小           コミュニケーションコスト大
<----おまかせ---------------------------- ウォーターフォール ---- アジャイル ---->

とはいえ、顧客とコミュニケーションしなければ、顧客好みのものが出てくる可能性は減る。エスパーでもない限り、開発側が個々の顧客の好みを知ることはできず、そのため成果物が定型化されてしまうのは避けられない。それならまさに顧客としては定型化されているパッケージなりを買ってくればいいだけで、開発を委託したり自社開発したりする必要がない。なので、最低限のコミュニケーションコストをかけるのは前提としても、それを極力減らしながら、求められるプロダクトを作る、という方向性がウォーターフォールの原則のところにある考え方だろう。

一方アジャイルは、コミュニケーションコストをそれなりにかける前提で、かけたコストを回収できるくらいのメリットがあるような方向性だと思う。それを助けるものとしては、ツールの支援だったり、あるいはファシリテーション的なものもあるだろう。顧客から「こうしてほしい」というリクエストが来るのは、顧客がコミュニケーションコストを支払っているからに他ならない。そのコストに見合うように、すぐにそのリクエストを反映したプロダクトが(1週間とかのスパンで、あるいは一瞬で)出てくる。それによって、コストに見合うお釣りを得る、少なくともそういう感覚を顧客に持たせる、という目標設定でアジャイルはできているような気がする。

アジャイルが度合いであるにしろ、どの程度アジャイルであるべきかというのは、要は顧客がどの程度コミュニケーションコストを支払いたいか、支払うコストによって改善されるものに顧客がどの程度価値を感じるか、という度合いによって決まってくるのだと思う。あまり手間暇かけずにそれなりのものがほしい、という顧客にアジャイルは合わないし、顧客自身が手間をかけてでもいいから欲しいものがあるというなら、ウォーターフォールは似合わない。

まとめ

アジャイルウォーターフォールはそれぞれ以下のようにまとめられるのではないか。

  • ウォーターフォール:コミュニケーションコストをあまり支払わないで済むようにしながら、プロジェクトを成功させる、そのための手法
  • アジャイル:コミュニケーションコストを十分支払う前提で、それに見合ったメリットを得る、そのための手法