YAGNI - You Aren't Gonna Need It

06.11.2020 | Patricia & Alex

Photo by Oscar Sutton on Unsplash

Extreme Programming [1] ist ein agiles Framework für die Software-Entwicklung, das erstmals im Jahr 1996 stipuliert wurde und noch vor der Entstehung von Scrum Agilität in die Software-Welt brachte. Dabei umfasst es Prozesse aus allen Phasen der Software-Entstehung.
Im Teilbereich des Engineerings wird unter anderem simples Design angeregt. Eines der Praktiken aus dieser Kategorie heisst YAGNI - You Aren’t Gonna Need It, oder auf Deutsch: “Du wirst es nicht brauchen”.

Das Prinzip besagt, dass nur die Funktionalität programmiert wird, die aktuell benötigt wird. Die Antizipation zukünftig womöglich gewünschter Features wird bewusst unterbunden, da diese in jedem Fall mit zusätzlichen Kosten verbunden sind:

  • Das richtige Feature korrekt implementiert generiert Wartungsaufwand.

  • Das richtige Feature falsch implementiert generiert Reparaturkosten.

  • Ein falsch antizipiertes Feature verursacht unnötigen Entwicklungs- und Wartungsaufwand.

In diesem Sinn ist YAGNI ein zentrales Prinzip, um den Wert der Entwicklungstätigkeit zu maximieren. Zur Wertmaximierung gehört aber gleichzeitig, Robustheit und Wartbarkeit hoch zu halten. In diesem Zusammenhang darf YAGNI nie als Argument für Kompromisse hinsichtlich Software-Qualität dienen: Tests sind immer nötig.

Erwähnt man YAGNI in einer Gesprächsrunde über Organisationsentwicklung, verläuft das Gespräch mit hoher Wahrscheinlichkeit etwa so:

What the hell is YAGNI?

Nun gut - und gleich meine nächste Frage: “what the hell” hat YAGNI mit meiner Arbeit zu tun - wo mir doch schon beim Wort “Extreme Programming” kalte Schauer den Rücken runterlaufen….?

Ich reise fast 3 Jahre in die Vergangenheit, mein Start bei avega:

Aus einem Grosskonzern kommend, bei dem ich bei irgendwelchen administrativen Fragen die Antworten und den entsprechenden Prozess auf dem Intranet suchte und auch meistens fand, freue ich mich darüber, dass es auch bei avega bereits ein Intranet gibt.  Aber halt, da war ja was! Ich arbeite in einem Start-up - meine Arbeit ist es ja, all diese Antworten auf Fragen und Prozesse zu generieren, in den Bereichen HR, Finanzen und Administration, abgestimmt auf avega! Schon beim Gedanken komme ich leicht ins schwitzen, wie kann ich all dies definieren, wenn ich die einzelnen Prozesse oder Cases teilweise noch nie selber durchgespielt habe? 

YAGNI - und die Organisation eines Unternehmens - unbewusst habe ich mich genau für das entschieden.

Gewisse administrative Prozesse definiert man besser erst, wenn man sie auch wirklich benötigt, da die Gefahr besteht, dass man die Arbeit unter Umständen doppelt macht. Ein erstes Mal, wenn man den Prozess ohne echten Case definiert - und ein zweites Mal, wenn der Case da ist und einem bewusst wird, dass der Prozess nicht korrespondiert, nicht zielführend ist.

Beim Eintritt von Alex vor nicht allzu langer Zeit, konnte ich einen neuen Mini-Prozess definieren, einen, den es bei avega IT AG vorher nicht gab und den wir auch nicht prophylaktisch definiert haben. Als Jüngster in unserem Team und bis anhin der Erste und somit auch Einzige der noch Zivilschutz leistet, konnte ich 1:1 den administrativen Ablauf dazu erfassen und gleich durchspielen.

Und genau so bestätigte sich YAGNI in meiner Arbeit mit organisatorischen Abläufen - mach es, wenn es benötigt wird und dann richtig.

“Dinge die niemand braucht, haben keinen Wert. Verschwende an sie also keine Zeit.” Das YAGNI-Prinzip will ich übrigens nicht nur auf der Arbeit anwenden, es lässt sich für mich auf alle Ebenen transportieren, auch privat. Wann immer ich mich Frage “Sollte ich diesen Aufwand wirklich treiben?” oder “Brauche ich das wirklich”? - und sei es auch nur ganz verschämt und leise im Hinterkopf - dann ist das ein Anwendungsfall für das YAGNI-Prinzip. Es besagt: Wenn im Zweifel, entscheide dich gegen den Aufwand.

Ganz ehrlich: Ich habe ein leicht euphorisches Gefühl und bin bereits vom YAGNI-Virus infiziert:-)

[1] http://www.extremeprogramming.org/