石橋を叩いて渡るということわざがありますよね。
良い言葉だと思います。好きです。
石橋を叩いて渡るという言葉こそアジャイルだよなあと考えていたら、良い例えが思いついたので書いておきます。
ウォーターフォールとアジャイルの違いを石橋を叩いて渡るという言葉に当てはめて考えてみます。
石橋をたたく行為(=渡れそうか考えて実際叩いてみて検証する行為)を、開発において計画を立てたり検証したりすることに例え、
石橋を渡る行為を実装することに例えます。
普通に石橋を叩きながら渡るのがアジャイル。
スタート地点で立ち止まって柄の長いハンマーを時間をかけて作って、石橋の近いところから遠くまで叩き終わったら渡り始めるのがウォーターフォール。
アジャイルはスタートは早いけど、近い場所(=直近の計画)しか叩けない(叩かない)。
ウォーターフォールはハンマーの柄が長いので遠い場所(=終盤までの計画)まで叩けるけど、スタートが遅い。
なお遠くまで叩けるが、遠くはハンマーの操作が難しいので叩く精度が低くなる。
アジャイルとウォーターフォールのどちらが良いかは石橋の道の複雑度によると思う。
まっすぐで見渡しの良い橋(=要件が明確)な場合は、ウォーターフォールの方が遠くまで叩けるし、先の崩れそうな場所を避けて最適なルートを最初から選べるので、安心して効率のいい渡り方ができる。
一方、複雑だし途中に障害物があって先が見えない橋(=要件が不明確で不確実性が高い)の場合は、ウォーターフォールではハンマーが遠くまでうまく届かなくて最適なルートは見えない。頑張って遠くを叩こうとするが叩けなくて、スタートできずに時間が過ぎてしまう。
アジャイルなら叩きながら渡れるし途中でルート変更も可能なので、その時その時で最適な道を選択できる。
皆さんも自分の渡る石橋を見つめて、叩き方を考えてみるのはいかがでしょうか。