Eleganz

„Perfektion ist nicht dann erreicht, wenn es nichts mehr hinzuzufügen gibt, sondern wenn man nichts mehr weglassen kann.“

Antoine de Saint-Exupér

Für viele Entwickler und Manager ist das Thema Eleganz und Schönheit in der Software Entwicklung ein untergeordnetes Thema, falls sie sich überhaupt schon einmal Gedanken dazu gemacht haben. Häufig steht man diesen Begriffen mit einem gewissen Misstrauen gegenüber. Nicht umsonst gibt es den fatalen Aufruf “Schöner machen könnt Ihr später!”, dem in der Regel keinerlei Nacharbeiten folgen.

Das obige Zitat des Autoren von Der Kleine Prinz thematisiert einen wichtigen Aspekt der schöpferischen Arbeit, die Einfachheit. Schon in der Antike forderten Philosophen, dass Theorien nicht nur stimmig und in ihrer Logik begeistern sollten, sondern sie sollten auch minimal sein. Später formuliert als Sparsamkeitsprinzip in Occams Razor.

“Von mehreren hinreichenden möglichen Erklärungen für ein und denselben Sachverhalt ist die einfachste Theorie allen anderen vorzuziehen”

Occam’s Razor

In der Software Entwicklung gibt es verschiedene Prinzipien, die alle auf dem Einfachheitsprinzip fußen. Da gibt es YAGNI (You Aren’t Gonna Need It), DRY (Don’t Repeat Yourself) und natürlich KISS (Keep It Simple, Stupid). Die Dinge, also Datenstrukturen, Algorithmen und Prozesse einfach zu gestalten, fördert die Klarheit, schärft die Kontur und verbessert die Verständlichkeit. Da nur wenige Elemente miteinander interagieren hilft Einfachheit bei der Gestaltung von entkoppelten Systemen.

Häufig hat man es aber bei Software mit dem Gegenteil von Einfachheit, mit Kompliziertheit, zu tun. Falls sich jemand über dieses Wort Kompliziertheit wundert. Es besteht ein Unterschied zwischen Kompliziertheit und Komplexität, denn obwohl viele Systeme komplex sein können, sind manche unnötig komplex, nämlich kompliziert. Diese unnötige Komplexität macht Software Systeme schwierig zu verstehen, schwierig zu warten und zu erweitern. Und nicht allzu selten hegen Programmierer den Verdacht, dass ihr System emergentes Verhalten zeigt. Nicht immer muss es so schlimm wie bei Skynet sein, aber ausreichend um Probleme mit der eigenen Software zu offenbaren.

Aber wie findet ein Software Entwickler den Weg zum eleganten Code? Die Schönheit liegt doch, seit Alters her, im Auge des Betrachters? 

Form Follows Function aus dem Design entlehnter Ansatz gibt Hilfestellung. So wie Bauhaus Möbel ihre Ästhetik aus ihrer Funktionalität beziehen, sollte objektorientierte Lösungen auf  den SOLID Prinzipien beruhen, mit verbreiteten Standards harmonieren und unnötigen Boilerplate Code vermeiden.

Werden uns Lösungen präsentiert, die kompliziert anmuten, exotische Frameworks verwenden, komplexe Konfigurationen benötigen und schlecht erweiterbar sind, dann müssen wir, wie Sweeney Todd, das Rasiermesser schwingen.