ЯГНИ означает, что все делается, когда нужно, а не раньше. Это не значит, что они никогда не закончатся, если только они никогда не понадобятся. Это означает, что вы делаете только то, что дает клиенту немедленную ценность для бизнеса . Что означает непосредственная ценность для бизнеса, субъективно для каждого клиента и каждого проекта.
В любом случае, вы ничего не можете потерять с YAGNI.
В другом случае вы теряете время на написание кода, который никогда не используется, и написание тестов для кода, который никогда не используется, и написание документации для кода, который никогда не используется, и сопровождение кода, который никогда не используется, люди задаются вопросом, что делает этот код и, если это когда-нибудь привыкнет, до тошноты.
пример
Если я работаю над прототипом / доказательством концепции или версией приложения 1.0, мне не нужен дизайн для масштабирования до уровня Facebook. Черт возьми, мне не нужен дизайн для масштабирования до уровня Facebook, пока я не увижу, что у меня такой трафик.
Как вы думаете, Цукерберг разработал самую первую версию Facebook, чтобы масштабировать ее до 500 миллионов пользователей? Нет, он спроектировал и построил это так, чтобы просто хотеть этого и не делать больше. Если бы он с первого дня попытался обойти дизайн для 500 миллионов пользователей, Facebook, вероятно, никогда бы не выпустили.
Практический способ сделать то, как он это сделал. Он начинал с PHP и MySQL, а затем перепроектировал и переписал по мере необходимости, исходя из ценности бизнеса , масштабирование до миллионов пользователей имело огромную ценность для бизнеса, но не в день 0. В день 0 просто запуск чего-либо был огромной ценностью для бизнеса.
Он планировал перепроектировать и переписать. Это совсем другое мышление, чем планирование кухонной раковины, и никогда не разрабатывать и не предлагать что-либо полезное, что завершено.
Планирование окончания срока службы для кодовой базы и переписывания является гибким и перспективным. Попытка придумать какую-то неопределенную цель «гибкости» каждый раз заканчивается неудачей. Вы проектируете без какой-либо необходимости и тратите время, разрабатывая то, что имеет ценность для бизнеса, а не мечтаете о функциях, которые никогда не будут использоваться.