Я використовував цю аналогію ... багато програмних проектів починається, тому що людина, яка потребує певного програмного забезпечення, знає еквівалент "майстра", і вони наймають цю людину, щоб створити їм програмний еквівалент садового сараю. Це маленьке, корисне маленьке додаток, яке дуже добре виконує свою роботу.
Потім замовник повертається до майстра, задоволений їх роботою, і просить змінити програмне забезпечення, щоб зробити ще одну справу. Багато разів ця нова функція не має великого відношення до оригінального запиту, тому майже так, як вони просять вас побудувати ще одну кімнату на задній частині садового сараю з окремим входом.
Потім вони хочуть поставити світло всередині сараю, щоб вони повернули майстра назад, і він запускає єдину ланцюг від головної панелі будинку, встановлює вимикач ланцюгового вимикача в стелі кожної кімнати і підключає їх до ланцюга .
Потім замовник вирішує, що хоче запустити деякі електроінструменти, але він продовжує дути автоматичним вимикачем, тому вони передзвонюють людину, і він насправді повинен вирвати єдину ланцюг, яку він вибіг на головну панель, і встановити більший провідник і підпанель у сараї. Йому довелося двічі провести дріт і заплатити за два дозволи на електроенергію тощо. Це неефективно.
Тоді клієнт запитує щось абсурдне: чи можете ви перетворити мій сарай на гараж? Я не хочу, щоб ти повторно робив все, що ти зробив ... Я просто хочу, щоб ти зробив це більше, щоб я міг там припаркувати свою машину. Тоді, у багатьох випадках, майстер вважає, що "замовник завжди правий", і починає будувати прибудови на 3 сторони сараю, щоб зробити його більше, збиває стіну між перегородками і т. Д. Звичайно, дах закінчується до провисання, оскільки воно не побудовано правильно тощо.
Тож клієнт уже не вражений, але все ж хочеться більше. Вони просять рознощика знову і знову просто додати ще одну кімнату, або змінити цю існуючу кімнату, щоб це зробити, і т. Д. Ви закінчуєте щось таке, що схоже на The Burrow і виглядає так само архітектурно.
Зараз більшість людей не досить дурні, щоб спробувати це у світі будівництва, але це відбувається постійно у світі програмного забезпечення, тому що люди не мають таких зв'язків:
Людина, кваліфікована для будівництва справді гарного садового сараю, не обов'язково кваліфікована для будівництва будинку.
Якби ви заздалегідь знали, що збираєтеся будувати будинок поетапно, але це буде тільки починати як садовий сарай, ви зробили б справи по-іншому, і садовий сарай коштуватиме набагато дорожче (ви б насипали дійсно товста колодка, переконайтеся, що ви провели провідника, достатньо великого для повного завантаження готового будинку тощо).
У багатьох випадках перехід від однієї стадії до іншої передбачає скасування великої кількості раніше виконаних робіт, що робить її дорожчою, ніж здається, що має бути.
У світі будівництва ми можемо дати клієнту гарне уявлення про те, як виглядатиме результат на етапі проектування, але ми не маємо такої здатності у світі програмного забезпечення. Якщо ви довели до цього моменту, ви в основному написали значну частину програмного забезпечення.
Agile Manifesto - це результат визнання, що аналогія програмного забезпечення / конструкції порушена. Такі речі, як автоматизовані випробування блоків та ітераційні цикли вивільнення, не мають паралельних конструкцій. Ці речі скористаються майже нульовою вартістю переходу від дизайну до прототипу (ми називаємо це складанням або побудовою).