ローラースケート実装
http://martinfowler.com/bliki/RollerSkateImplementation.html
アジャイル開発の重要な特性として、小さな機能サブセットに分割してシステムを稼動させる方法をあれこれ考える、というものがある。 我々は、ソフトウェアがもたらすビジネス価値のためにソフトウェアを構築するのである。 システムの稼動が早ければ、それだけそのビジネス価値(の少なくとも幾分か)を早く手に入れることができる。
同僚のDave Leigh-Fellowsがこの考えにまつわる話を教えてくれた。 私はこの話が大好きだ。 我々が株式仲買業者の仕事をしていたときのことだ。 彼らは新しい商品を市場に投入したいと思っていた。 このためにソフトウェアが行うべきことは、顧客がWebフォームに入力した情報を使って必要な処理を行い、裏のバックエンドシステムにデータを受け渡すことだった。 しかしDaveは、このシステムを作り上げるよりも早く商品を市場に投入したのである。
- バージョン1は、静的なWebページだった。そこには商品説明と問合せ先の電話番号が載っていた。派遣社員が顧客からの問合せに応じて、バックエンドのシステムに情報を入力していた。
- バージョン2では、顧客がデータを入力できるWebフォームがついた。ただ、このバージョンでは、データをバックエンドシステムに読み込ませることはできなかった。その代わり、WebフォームからFaxを送信した。Faxで送られてきた注文情報を増員した派遣社員がバックエンドシステムに入力した。Fax機が少し離れた場所にあったため、ローラースケートが役に立った。
- バージョン3では、Webフォームを直接バックエンドシステムにつなげた。
最初の2つのバージョンは、考えられる最もエレガントなソリューションではなかったかもしれない。しかし、商品をいち早く市場に投入することができたのだ。 この案件以外にローラースケートを使った反復開発にお目にかかったことはない。 ただそれは、ローラースケートが必要なかったからではなく、想像力が足りなかったからなのかもしれない。