YAGNI bedeutet , die Dinge zu erledigen , wenn sie benötigen , um zu erledigen und nicht vorher. Das bedeutet nicht, dass sie niemals fertig werden, es sei denn, sie werden niemals gebraucht. Es bedeutet, dass Sie nur das tun, was dem Kunden unmittelbaren geschäftlichen Nutzen bringt . Der unmittelbare Geschäftswert ist für jeden Kunden und jedes Projekt subjektiv.
In beiden Fällen können Sie mit YAGNI nichts verlieren .
In einem anderen Fall verlieren Sie Zeit, wenn Sie Code schreiben, der niemals verwendet wird, und Tests für Code schreiben, der niemals verwendet wird, und Dokumentation für Code schreiben, der niemals verwendet wird, und wenn Sie den Code warten, der niemals verwendet wird, fragen sich die Leute, was dieser Code tut , und wenn es jemals benutzt wird, ad nauseum.
Beispiel
Wenn ich an einem Prototyp / Proof-of-Concept oder einer 1.0- Version einer Anwendung arbeite, brauche ich kein Design, um es auf Facebook-Ebene zu skalieren. Hölle Ich brauche nicht ein Design - Skala auf das Niveau von Facebook, bis ich anfangen zu sehen , dass ich habe diese Art von Verkehr.
Glaubst du, Zuckerberg hat die allererste Version von Facebook entworfen, die auf 500 Millionen Nutzer skaliert werden kann? Nein, er hat es entworfen und gebaut, um nur zu wollen, dass es funktioniert und nicht mehr. Wenn er vom ersten Tag an versucht hätte, das Design für 500 Millionen Nutzer zu verwässern, wäre Facebook wahrscheinlich nie veröffentlicht worden.
Der praktische Weg, Dinge zu tun, ist, wie er es tat. Er begann mit PHP und MySQL, und die Neugestaltung und Neugestaltung nach Bedarf basierend auf dem Geschäftswert , die Skalierung auf Millionen von Benutzern, war von enormem Geschäftswert, aber nicht am Tag 0. Am Tag 0 war es der enorme Geschäftswert, nur etwas zu starten.
Er plante eine Neugestaltung und Neuschreibung. Das ist eine andere Einstellung als die Planung für die Küchenspüle und niemals die Entwicklung oder Bereitstellung von etwas Nützlichem, das vollständig ist.
Die Planung des End-of-Life für eine Codebasis und das Neuschreiben ist agil und zukunftssicher. Der Versuch, ein undefiniertes Ziel für "flexibel" zu finden, scheitert jedes Mal. Sie entwerfen ohne Notwendigkeit und verschwenden Zeit damit, das zu entwickeln, was von geschäftlichem Wert ist, anstatt von Funktionen zu träumen, die niemals genutzt werden.