私が見たデモンストレーションがあります。それは、より伝統的な方法に対するアジャイルの利点のかなり良いアナロジーです。これはゲームBattleshipに基づいています。あなたと他のプレイヤーは通常の戦艦グリッドに座ります。どちらも20ショットあり、それぞれの費用は$ 5,000で、初期費用は合計100,000です。これが問題です。単一のショットを発射する前に、すべてのショットを計画する必要があります。対戦相手は彼のショットを「通常」発砲します。ショットを取り、何が起こるかを見て、別のショットを撮ります。
20ショットの終わりに、誰がより多くのヒットを獲得したと思いますか?
類推はアジャイルvsウォーターフォールにかなりきれいに変換されます。アジャイルでは、次に何をするかを計画するときに、すでに行ったすべての合計を考慮に入れることができます。あなたが困難になる領域と、すでに経験した困難または困難の欠如に基づいて容易になる領域のいくつかの基本的なアイデアがあります。また、クライアントから小さな塊でフィードバックを得て、クライアントがこれを気に入った、または気に入らなかったと述べ、クライアントが間違っていると言うことに加えて大量の追加コードを構築しなくても、その知識をすばやく組み込むことができます。 。
従来のウォーターフォール手法では、コーディングが始まる前に、システム全体と開発スケジュールが計画されています。これは、「発砲前にすべてのショットを計画する」アプローチです。あなたはクライアントが要求したものを正確に提供することができるかもしれませんが、彼らはそれを見て、「それは私たちが必要とするものではない」と言うことができます。ええ、契約の条件に従って配信したのでお金がもらえますが、開発者は時間を無駄にしており、クライアントはお金を無駄にしており、どちらも結果に満足していません。アジャイルは、開発の進行中にプロジェクトの要件を変更できるようにすることで、これを支援するように設計されています。まだ行っていないことは何でも変更できます。すでに行ったことも変更できます
また、クライアントは最初に作業内容を決定するようになり、完了した作業の小さなチャンクをより頻繁に配信することで、クライアントはより早く使用できるシステムを持つことができると考えられます。これは、クライアントにとって目に見えるROIです。これにより、通常、クライアントは、このより複雑な開発プロセスに積極的に参加するようになります。