Übereifrige Anwendung von YAGNI ( Design by Enumeration in Fallstricken objektorientierter Entwicklung ) in einer Umgebung, in der jeder vernünftige Mensch erkennen konnte, dass sich die Anforderungen definitiv ändern würden. Und immer wieder ändern.
Wenn Sie alles genau auf die aktuellen Anforderungen (fest-) programmiert haben - und dabei jeden niedergeschlagen haben, der sagt, " Könnte das nicht allgemeiner sein?" mit Ihrem YAGNI-Schläger - und dann ändern sich die Anforderungen drastisch (aber auf eine Weise, die vernünftigerweise hätte vorweggenommen werden können), dann kann dies der Unterschied zwischen einer Anpassungszeit von 2 Wochen und einer Anpassungszeit von 20 Minuten sein.
UPDATE: Zur Verdeutlichung hier ein fiktives Beispiel, das nicht allzu weit von dem entfernt ist, was passiert ist. Der Stapelüberlauf wurde entwickelt, um Abzeichen zu unterstützen. Angenommen, sie konnten zunächst nur vier Abzeichen erkennen. Nur vier, eine so kleine Zahl, so dass sie genau vier Ausweise in der gesamten Logik der Site fest codieren . In der Datenbank, in den Benutzerinformationen, im gesamten Anzeigecode. Weil "Du wirst keine Abzeichen brauchen", an die du nicht denken kannst, oder? Nehmen wir dann an, die Site geht in Betrieb und die Leute schlagen neue Abzeichen vor. Jedes AbzeichenDas Hinzufügen dauert bis zu zwei Wochen, da es so viel Hardcoding gibt, das man überall anpassen kann. "Du wirst aber nicht mehr Abzeichen als die heutige Liste brauchen", daher gibt es keine Umgestaltung, um eine generische Sammlung von Abzeichen zu unterstützen. Hätte eine solche generische Sammlung von vornherein mehr Zeit in Anspruch genommen? Nicht viel, wenn überhaupt.
YAGNI ist ein wertvolles Prinzip, aber es sollte nicht (ab) verwendet werden, um schlechtes Design und ungeeignete Hardcodierung zu entschuldigen. Es gibt ein Gleichgewicht, und mit der Erfahrung glaube ich, dass ich mich dem annähere.