私はこのアナロジーを使用しました...多くのソフトウェアプロジェクトは、ソフトウェアを必要とする人が「便利屋」に相当するものを知っているために始まります。それは非常にうまく機能する、小さくて便利な小さなアプリケーションです。
その後、顧客は作業に満足して便利屋に戻り、ソフトウェアを変更してもう1つのことを行うように依頼します。多くの場合、この新しい機能は元のリクエストとはあまり関係がないため、庭の裏に別の入り口のある別の部屋を建てるように頼んでいるようです。
それから彼らは小屋の内側にライトを置きたいので、便利屋が戻ってきて、彼は家のメインパネルから単一の回路を走らせ、各部屋の天井にプルチェーンライトスイッチを設置し、それらを回路に接続します。
その後、顧客はいくつかの電動工具を使いたいと判断しますが、回路ブレーカーを吹き続けますので、彼らは人に電話をかけ、実際に彼が実行した単一の回路をメインパネルに引き裂き、より大きな導体と小屋のサブパネル。彼はワイヤーを2回走らなければならず、2つの電気的許可などの支払いをしなければなりませんでした。これは非効率的です。
その後、クライアントは不合理なものを求めます。私の庭の小屋をガレージに変えることができますか?あなたがやったことをやり直してほしくありません...私はあなたがそこに私の車を駐車できるようにそれをもっと大きくしてほしいです。その後、多くの場合、便利屋は「顧客は常に正しい」と考え、小屋の3つの側面に追加物を構築して大きくし、パーティション間の壁を倒します。もちろん、屋根は終了します正しく構築されていないため、たるみが発生するなど
そのため、クライアントはそれほど感銘を受けていませんが、それでもクライアントはそれを望んでいます。彼らはただもう一畳の部屋を追加し、またはこれを行うには、この既存の部屋を変更するには何度も戻って便利屋を尋ねるなどあなたのように見えることを何かで終わるバロウは約など建築音です。
現在、ほとんどの人は建設業界でこれを試すほど愚かではありませんが、これらの接続を行わないため、ソフトウェアの世界では常に起こります。
本当に素敵な庭の小屋を建てる資格がある人は、必ずしも家を建てる資格がありません。
前もって段階的に家を建てようとしていることを知っていたが、それが庭の小屋として始まっただけだったら、あなたは別のことをするだろうし、庭の小屋はもっと費用がかかるだろう(あなたは注ぐだろう)本当に厚いパッド、完成した家の全負荷などに十分な大きさの導体を走らせたことを確認してください)。
多くの場合、ある段階から別の段階にアップグレードすると、以前に行われた多くの作業が取り消され、必要以上に高価になります。
建設の世界では、設計段階で結果がどのようになるかを顧客に良いアイデアを与えることができますが、ソフトウェアの世界ではそのような能力はありません。その時点まで到達した場合、基本的にソフトウェアの大部分を作成しました。
アジャイルマニフェストは、ソフトウェア/構造の類推が壊れていることを認めた結果です。自動化された単体テストや反復的なリリースサイクルのようなものは、構築において類似していません。これらのことは、設計からプロトタイプに移行するコストがほぼゼロであることを利用します(これをコンパイルまたはビルドと呼びます)。