
アジャイル開発の導入支援を行っていると、従来型の開発とアジャイル型の開発の違いを必ず説明している気がしています。今回は、その説明でよく使っている例えである「登山」と「テトリス」について解説します。
従来型は登山
登山では、登る山を決めて登山計画を立てます。つまり、ゴールが明確です。最近はYamapのようなスマホアプリもあり、いろんな年代の登山データ、ペースデータもまとまっているため、自分にあった計画が立てやすいです。登る山がわかっているので、ゴールのために必要な道具も選択しやすくなります。
これらの特徴は、従来型の開発プロセスにとても似ています。
計画重視プロセスは、変化に弱くなります。登山では変化に柔軟な姿勢がなければ死んでしまいまいます。従来型のプロセスで死ぬことはないかもしれませんが、長い期間、計画通り開発していたものが、リリース後に使われない・・・というリスクがあることを理解すべきでしょう。
もし、やることが決まっていて、期限も決まっているプロジェクト型開発であれば、登山のような従来型プロセスを採用するといいと思います。
アジャイル型はテトリス
テトリスではきれいにブロックを揃えるのが重要ですが、アジャイル開発ではそこまで求めません。ある程度のゴールを決めて開発は行いますが、状況に応じて、完成するプロダクトの形は変わります。
ブロックがうまく積めず、隙間ができてしまうかもしれません。しかし、優先度を決めて対応していくことで、ぐらぐらしない安定したプロダクトを積上げていけます。リファクタリングが前提となるプロセスとも言えるため、リファクタリングによって安定させる方法もあります。
場当たり的なプロセスと感じるかもしれませんが、実際にはデータやフィードバックを活用して積み上げていく、確実性を高めるプロセスと言えます。
将来を見通すのは困難かもしれませんが(将来を見通せる人がいれば最高ですね)、変化に強いプロセスです。
もし、やるべきことが不明確で、サービス開発のように作ってからが勝負となる開発であれば、テトリスのようなアジャイル型開発を採用するといいと思います。