アジャイル開発はもう古い。新しい開発手法を考えてみた。
アジャイル開発を長年続けていて気づいたのは、開発者目線過ぎて実情に合っていないのが弱点だという事です。アジャイル開発は、開発対象を作る視点でプロセスを考えます。しかしながら、熟練者はそんなプロセスを取る必要はありません。熟練した技術者は、答えが直接出てきます。熟練者はプロセスを経て答えが出るのではなく、答えから先に出てきます。
恥ずかしながら、私もある程度アジャイル開発に熟練しているといってもよいと思います。そんな未熟だけどある程度熟練している私程度の人間でも、適切な情報を集めた時点で情報システムの完成形が頭の中に出てきます。従って、どうやって答えを出すかというプロセスではなく、適切な情報を集める部分と、お客様とのコミュニケーションに重点を置くべきだと私は考えています。
開発は関数として表現できます。必要な情報をxとすると、我々技術者は関数fです。Xを渡した時点で答えが出るのですから、どうやってその未知数xを集めるのか、そして、f(x) = yのyをどうやってお客様に説明するのかを重点に考える必要があります。逆に言えば、分析・設計・実装・テストなどといった細かい分類や、細かい技法はもう言われるまでもなく習得しており、全て並列実行するので細かく考える必要がありません。
厳密にいうと、アジャイル開発でも細かい分類はないといえばないのですが、まだまだ細かい分類で作業しているのが現実です。ストーリー視点の場合、細かい開発作業に着目していないとも言えますが、そのことに関する私の感想は「細かいことに振り回されすぎ」です。
細かいストーリーから駆動する開発手法は、変化の激しい現在のビジネスには向きません。何故ならば、細かいストーリーはすぐに変化してしまうからです。従って、そんな変化の多いものを中心にするのではなく、ストーリーを答えから逆算しなければならないのではないでしょうか?今時のお客様は、忠実に従う技術者ではなく、新しい見解を提案してくれる技術者を求めています。
この事を念頭に置くと、新しい開発手法のプロセスは次の2つです。1、情報収集フェーズ。2、製品調節フェーズ。3、作成フェーズ。
情報収集フェーズでは、鍵となる情報を収集します。具体的には、現状調査やお客様のヒヤリングなどを行います。情報システムの全貌が見えるまで、情報を収集&分析します。
製品調節フェーズでは、お客様が我々の提案を気に入って頂けるか尋ねます。その過程で、開発者側とお客様側の意見のギャップをなくします。
最後の作成フェーズは、他のフェーズと並行して行います。何故ならば、製品調節フェーズを使用と思えば、ある程度製品を実装しなければなりませんし、情報収集フェーズにおいても、設計や実装などを行い、情報が足りているか否かの判断を行う必要があるからです。なお、これらのフェーズは、お客様が満足するまでスパイラルに行います。
この開発手法の特徴は、よりお客様目線で製品開発するために、激しく変化するビジネス環境に対応するべく、最終製品のイメージをお客様と共有する事を中心に考える点にあります。
既存のアジャイル開発は、開発者がどうやって開発するのかばかり考えていました。しかしながら、今更いわれるまでもない細部に注目しても無駄ですし、一番大切なのはお客様の満足度です。より一層、お客様と対等にビジネスをしていく関係を築かねばなりません。
この新しい開発手法の名前は・・・コレクション&マッチング開発(仮名)もしくは完成物駆動型開発とでもしておきます。何かの参考になれば幸いです。
新しい開発手法を思いついたら、ぜひ私にも教えて下さい。情報を共有しましょう。