YAGNI significa che le cose vengono fatte quando hanno bisogno di essere fatte e non prima. Ciò non significa che mai venga eseguito, a meno che non siano mai necessari. Significa che fai solo ciò che dà al cliente valore commerciale immediato . Quale valore commerciale immediato significa è soggettivo per ogni cliente e ogni progetto.
In entrambi i casi, non puoi perdere nulla con YAGNI.
Nell'altro caso, perdi tempo scrivendo codice che non viene mai usato, e scrivendo test per codice che non viene mai utilizzato, e scrivendo documentazione per codice che non viene mai usato, e manutenzione su codice che non viene mai usato, la gente si chiede cosa questo codice funziona e, se mai viene usato, fino alla nausea.
Esempio
Se sto lavorando su un prototipo / proof of concept o su una 1.0 versione di un'applicazione, non ho bisogno di un design per scalare fino al livello di Facebook. Inferno Non ho bisogno di un design per adattarsi al livello di Facebook, finché non comincio a vedere che ho quel tipo di traffico.
Pensi che Zuckerberg abbia progettato la primissima versione di Facebook per scalare fino a 500 milioni di utenti? No, l'ha progettato e costruito per fare solo ciò che voleva e non più. Se avesse tentato di far cadere il progetto per 500 milioni di utenti dal primo giorno, probabilmente Facebook non sarebbe mai stato rilasciato.
Il modo pratico di fare le cose è come l'ha fatto. Ha iniziato con PHP e MySQL e, ridisegnato e riscritto in base alle esigenze, in base al valore aziendale , il ridimensionamento a milioni di utenti era un enorme valore aziendale, ma non al giorno 0. Al giorno 0 si lanciava qualcosa era il valore aziendale tremendo.
Ha pianificato su riprogettazione e riscrittura. Che è una mentalità diversa dalla pianificazione per il lavello della cucina e mai in realtà lo sviluppo o la consegna di qualcosa di utile che è completo.
Pianificare alla fine della vita per una base di codice, e riscrive è Agile e prova futura. Cercare di raggiungere un obiettivo indefinito di "flessibile" finisce sempre con il fallimento. Stai progettando senza alcuna necessità e perdendo tempo potresti sviluppare ciò che è valore aziendale invece di sognare sognando funzionalità che non saranno mai utilizzate.