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/