YAGNI означає, що все можна зробити, коли їх потрібно закінчити, а не раніше. Це не означає, що вони ніколи не закінчуються, якщо тільки вони ніколи не потрібні. Це означає, що ви робите лише те, що надає клієнту негайну цінність для бізнесу . Що означає негайну цінність бізнесу, є суб'єктивною для кожного замовника та кожного проекту.
В будь-якому випадку, ви не можете нічого втратити з YAGNI.
В іншому випадку ви втрачаєте час на написання коду, який ніколи не використовується, і написання тестів на код, який ніколи не використовується, і написання документації на код, який ніколи не використовується, та обслуговування на код, який ніколи не використовується, і люди цікавляться, що робить цей код , і якщо він коли-небудь звикне, ad nauseum.
Приклад
Якщо я працюю над прототипом / доказом концепції або версією додатка 1.0, тоді мені не потрібна конструкція для масштабування до рівня Facebook. Чорт , я не потрібен дизайн від масштабу до рівня Facebook, поки я не почати бачити , що я є такий трафік.
Як ви вважаєте, Цукерберг створив найпершу версію Facebook для масштабування до 500 мільйонів користувачів? Ні, він спроектував і побудував це так, щоб просто хотів, щоб це було потрібно, і не більше того. Якби він спробував зайняти водою дизайн на 500 мільйонів користувачів з першого дня, Facebook, ймовірно, ніколи не був би звільнений.
Практичний спосіб робити те, як він це зробив. Він розпочав роботу з PHP та MySQL, і переробив та переписав у міру необхідності на основі ділової цінності , масштабування мільйонів користувачів мало величезну ділову цінність, але не на день 0. У день 0 просто запуск чогось було величезною цінністю для бізнесу.
Він планував переробляти та переписувати. Це інший спосіб мислення, ніж планувати кухонну мийку і ніколи насправді не розробляти і не доставляти нічого корисного.
Планування кінця життя для кодової бази та переписувань - це спритний та майбутній доказ. Намагання придумати якусь невизначену мету "гнучких" щоразу закінчується невдачею. Ви розробляєте проект без будь-якої потреби і не витрачаючи часу, ви могли б розробляти те, що є корисним для бізнесу, а не бажаючи мріяти про функції, які ніколи не будуть використані.