Mach es doch nicht so kompliziert!

YAGNI-, DRY- und KISS-Prinzip: Die Zauberformeln der Programmierung!

Katharina Degenmann

© Shutterstock / patpitchaya

„Mach es Dir doch nicht so schwer!“ – diesen Satz haben Sie sicherlich schon dutzende Male zu hören bekommen. Dennoch ist es oftmals kein einfaches Unterfangen, die Komplexität zu reduzieren, schon gar nicht im Bereich der Programmierung. Wir nutzen den heutigen Tag der Einfachheit, um zu zeigen, welche Prinzipien beim Kampf gegen die Komplexität in der Softwareentwicklung hilfreich sein können.

Komplizierte Aufgaben braucht kein Mensch. Nichtsdestotrotz gehören sie zum Arbeitsalltag. Zu viele Infos, zu viele Aufgaben und zu wenig Zeit. Auch die Digitalisierung trägt ihren Teil dazu bei, die Komplexität im Berufsalltag zu erhöhen. Doch das Gegenmittel ist bereits bekannt und wortwörtlich simpel: Einfachheit!

Für den US-amerikanischen Schriftsteller und Philosoph Henry David Thoreau (1817 – 1862) war das Thema Einfachheit mehr als nur ein leeres Wort, denn es bestimmte sein Denken und Schaffen. Anlässlich seines Geburtstags am 12. Juli feiert man in den USA den nationalen Tag der Einfachheit (engl. National Simplicity Day). Auch in der Programmierung gibt es Prinzipien, mit denen die Komplexität reduziert werden kann: KISS, YAGNI, DRY.

KISS: Keep It Simple, Stupid

Der Pionier der Simplizität in Sachen Programmierung heißt Clarence Johnson. Johnson war ein US-amerikanischer Flugzeugkonstrukteur und erklärte das Prinzip: Keep It Simple, Stupid (dt. Halte es so einfach wie möglich). Das KISS-Prinzip besagt, dass man stets die einfachste Lösung eines Problems nutzen sollte.

Mittlerweile ist das KISS-Prinzip auch in der Softwareentwicklung Zuhause. Hierbei geht es meist darum, den Code so einfach wie möglich zu gestalten. Sollte man den eigenen Code nach kurzer Zeit selbst nicht mehr verstehen, sollten die Alarmglocken läuten. Denn, je komplizierter er ist oder dargestellt wird, umso schwieriger wird es für alle Beteiligten, damit zu arbeiten. Doch gerade in technischen Details steckt die Versuchung, die komplizierte Lösung zu präferieren, da das Altbekannte und Naheliegendste zu „langweilig“ erscheint. Prompt hat sich die komplizierte Lösung eingeschlichen.

Aus diesem Grund sollten sich die Teams immer wieder die essenzielle Frage stellen: Wie große muss der Aufwand wirklich sein, um alle bekannten und tatsächlich geforderten Anforderungen umzusetzen? Die zweite Frage, die sich ein Team immer wieder stellen sollte, ist die, ob sie sich bei einer Entscheidung auf Tatsachen oder Annahmen stützen.

YAGNI: You Ain’t Gonna Need It

Eine noch stärkere Konsequenz erschließt sich mit dem Kürzel „YAGNI – you ain’t gonna need it“ (dt. Du brauchst es nicht). Mit der gleichen Intensität, mit der man hinterfragt, ob man die einfachste Lösung gewählt hat, sollte man auch fragen, ob man ein gegebenes Softwarefeature überhaupt benötigt.

Viele Entwickler denken bei der Programmierung eines Programms gerne ein paar Schritte voraus und programmieren einige zusätzliche Funktionen, „nur für den Fall, dass wir sie brauchen“ oder zumindest „irgendwann einmal brauchen werden“. Nur 5 Wörter: „You Aren’t Gonna Need It“.

YAGNI ist zwar ein Prinzip aus der Extreme Programming (XP) Praxis aber dennoch diversen Bereichen anwendbar. Durch die Umsetzung des YAGNI-Prinzips lässt sich zum einen Zeit sparen und zum anderen Projekte effizient vorantreiben.

Sollte einen dennoch die Angst beschleichen, zusätzliche Funktionen nicht programmiert zu haben, die dennoch wichtig werden könnten, kann es helfen, sich vor Augen zu führen, wie viel Arbeit aktuell noch ansteht. Schnell wird einem dadurch ins Bewusstsein gerufen, möglicherweise seine Zeit damit zu verschwenden, Funktionen zu kodieren, die man eventuell korrigieren, ändern oder entfernen muss, weil sie nicht den Anforderungen des Produkts entsprechen.

DRY: Don’t Repeat Yourself

Wie oft entdeckt man ähnliche Codes in verschiedenen Teilen innerhalb eines Systems? Genau hier kommt DRY ins Spiel, was im Deutschen so viel bedeutet wie „Wiederhole Dich nicht“. Das DRY-Prinzip, formuliert von Andrew Hunt und David Thomas, besagt, das Code-Wiederholungen zu vermeiden sind. Also Finger weg von Copy&Paste. Die DRY-Programmierung kann besonders in großen Anwendungen nützlich sein, in denen Code ständig von vielen Programmierern gepflegt, geändert und erweitert wird.

Zugegeben, es gibt zahlreiche Tipps und Tricks, um die Produktivität und Effizienz in der Softwareentwicklung zu steigern, doch mit diesen drei Prinzipien lässt sich sicherlich schon einiges vereinfachen.

Geschrieben von
Katharina Degenmann
Katharina Degenmann
Katharina Degenmann hat Politikwissenschaft und Philosophie studiert. Seit Februar 2018 arbeitet sie in der Redaktion der Software & Support Media GmbH und ist nebenbei als freie Journalistin tätig.
Kommentare

Hinterlasse einen Kommentar

1 Kommentar auf "YAGNI-, DRY- und KISS-Prinzip: Die Zauberformeln der Programmierung!"

avatar
4000
  Subscribe  
Benachrichtige mich zu:
Det
Gast
Stimmt im Prinzip alles, was der Artikel sagt. Nur mit dem DRY Prinzip muss man sehr vorsichtig umgehen. Leider habe ich schon zu viele Implementierungen reviewen müssen, die mit Verweis auf DRY versucht haben, allen möglichen Code zu zentralisieren, dabei aber die Dependency Hell als Lösung geschaffen haben, oder ein unwartbares Monster an Fallunterscheidungen in der „einen“ Codebasis, die alle nutzen. Die tausendfachen Mini-Libraries im Javascript Umfeld sind dabei nur das extremste Beispiel. DRY führt zu gutem API und Bibliotheksdesign, muss aber mit Erfahrung angewendet werden. Umgekehrt lernen wir aus dem Microservice Umfeld, dass es helfen kann, wenn jeder Service… Read more »