YAGNI steht im Englischen für „You aren’t gonna need it“. Frei übersetzt heißt das so viel wie „Du wirst es nicht brauchen“. Aber wer in der Softwareentwicklung braucht hier eigentlich was nicht?
Bei diesem – zugegeben – etwas aus dem Zusammenhang gerissen wirkenden Satzes handelt es sich um ein Prinzip in Form eines markanten Merkspruchs. In der Softwareentwicklung arbeitet man gerne nach solchen Handlungsleitfäden, da viele Entscheidungen in einer konkreten Situation nicht durch quantitative Beweise gestützt werden können.
Das YAGNI-Prinzip besagt in unserem Fall, dass in der Softwareentwicklung nur Dinge, z.B. Funktionen, Komponenten, etc., umzusetzen sind, die auch gebraucht werden. Darunter versteht man alles, was der Kunde explizit wünscht, beauftragt, mit seinem IT-Dienstleister konzipiert und demzufolge bezahlt. Alles andere kann man getrost ignorieren.
YAGNI! Klingt doch eigentlich logisch, oder? Doch die Versuchungen, etwas zu entwickeln, was gar nicht erforderlich ist, sind groß, wie folgende Beispiele zeigen:
Die Verlockungen lauern also in allen Ecken. Das Tückische darin ist, dass eine Verletzung des YAGNI-Prinzips nicht immer auffällt oder sogar noch gelobt wird. Die Auswirkungen sind dann umso gravierender.
Stellen Sie sich einfach folgende Situation in einem Industriebetrieb vor. Eine Kunde wünscht sich für die Verwaltung von Kontaktdaten in seiner Anwendung ein Datagrid – das sind tabellenartige Steuerelemente, mit denen man ähnlich wie in einem Excelsheet Daten bearbeiten kann. Außer der reinen tabellarischen Darstellung wird noch eine Sortierung für die Namensspalte gewünscht. Nun denkt sich der Entwickler aber „Es wäre doch toll, wenn man jede beliebige Spalte sortieren kann“.
Also baut er es ein und präsentiert es seinem Kunden. Der ist natürlich hellauf begeistert. Wo ist also das Problem? Wir haben ja noch nicht erzählt, wie es weitergeht. Ab jetzt nimmt nämlich der Ärger seinen Lauf, denn Ihr Kunde steht ab jetzt quasi unter Software-Feature-Drogen. Beim nächsten Mal wird er nämlich ähnliches erwarten und die Softwareentwickler sind geneigt dem nachzugeben. Schließlich haben Sie beim ersten Mal sehr viel Wertschätzung dafür bekommen.
Damit wird ein Stein in Ihrem Softwareentwicklungs-Projekt ins Rollen gebracht, der folgendes bewirkt:
Aus dem Leuchtturm-Projekt der Softwareentwicklung ist plötzlich eine Kostenfalle geworden. Aufgrund der vielen sinnlosen Funktionen wird es zudem immer mehr Stimmen geben, die sagen „Wozu ist das Ding überhaupt gut?“. Denn ein klarer Aufgaben-Kern der Software-Lösung ist oftmals nicht mehr zu erkennen. Und das Schlimmste an dieser Situation? Die Karre steckt im Dreck und ist wahrscheinlich nur noch durch monatelanges Refactoring oder eine Neuimplementierung aus dem Schlamm zu ziehen.
Es gilt also, die Verletzung des YAGNI-Prinzips unbedingt zu vermeiden und vorzubeugen.
Um die Verletzung des YAGNI-Prinzips zu vermeiden, müssen Softwareentwickler und Kunde an einem Strang ziehen. Dem Entwickler muss klar sein, dass er nur das programmiert, was der Kunde auch explizit verlangt hat. Dem Kunden muss bewusst sein, dass Anforderungen detailliert zu formulieren sind. Um nun nicht in die Gefahr eines Henne-Ei-Problems zu laufen, wo jeder nun auf die Aktion des anderen lauert, gibt es verschiedene Möglichkeiten:
Kurz gesagt. Bevor man kräftig in die Tasten haut, um eine Funktion zu implementieren: Lieber noch mal drüber reden.