Continuous Architecture

Darf man Prinzipien verletzen?

Kurze Antwort: Ja, klar! Wenn Dich diese Aussage verwundert, ist der folgende Text für Dich.

Auf den Kontext kommt es an

Prinzipien sind immer allgemeingültig und universell formuliert. Diese Offenheit ist gerade eine der Stärken von Prinzipien gegenüber starren Regeln, denn diese können kaum die Komplexität der Realität umfassend abbilden. Diese Offenheit erfordert es aber zu hinterfragen, ob etablierte Prinzipien auch wirklich für jeden Kontext gelten müssen und die Antwort kann nur ein ganz klares NEIN sein. Prinzipien helfen, Entscheidungen zu treffen, indem sie den Lösungsraum einschränken. Sie schaffen eine Voreingenommenheit (“positive Bias”), mit dem Ziel Entscheidungen in eine bestimmte, als vorteilhaft angesehene Richtung zu lenken. Der springende Punkt: Was vorteilhaft ist, unterscheidet sich je Kontext.

Wenn Prinzipien auf Grenzen stoßen

Das gilt auch für allgemein akzeptierte Prinzipien, die jeder kennt und die auf den ersten Blick immer gültig sein sollten (aber halt nicht sind). Beispiel: Das DRY-Prinzip (“Dont repeat yourself”) - Wer würde dem denn widersprechen wollen? Natürlich wollen wir in der Softwareentwicklung redundanten Code vermeiden, wo immer es geht, und bevorzugen wiederverwendbare Bausteine. Oder? Aber Wiederverwendung fördert eben auch Kopplung, wir tauschen Wiederholung gegen Abhängigkeiten auf ein und denselben Codeblock/Klasse/Baustein/… ein und müssen uns ab sofort sehr viel mehr damit beschäftigen, was eine Änderung an dieser Stelle bedeutet. Welche Seiteneffekte entstehen bei Anpassungen? Wie groß ist der Anpassungsaufwand für die verwendenden Bausteine, wenn sich eine Schnittstelle ändert? Ist Redundanz da nicht vielleicht doch das kleinere Übel? Die Antwort ist wie so oft: “It depends” und damit eben alles andere als offensichtlich.

Entscheidung bewusst treffen

Die passenden Prinzipien für den eigenen Kontext auszuwählen, ist also nicht trivial und erfordert Erfahrung. Aber es geht nicht nur um die binäre Entscheidung “Prinzip X passt oder passt nicht zu uns”. Auch für das eigene Projekt oder Team als wichtige und passende Leitlinie identifizierte Prinzipien müssen manchmal verletzt werden, um ein höheres Ziel zu erreichen.

Wichtig sind dabei zwei Aspekte:

  • Es handelt sich um eine bewusste Entscheidung
  • Der Verstoß ist nachvollziehbar begründet

Werden gültige Prinzipien durch unbewusste, möglicherweise implizite Entscheidungen verletzt, ist das ein starkes Indiz für grundlegende Mängel im Entwicklungsprozess, denn hier fehlt es potenziell an Qualitätsbewusstsein und auch Kommunikationsbarrieren innerhalb des Teams sind nicht unwahrscheinlich.

Noch schlimmer ist es, wenn Prinzipien bewusst verletzt werden, es aber keine sinnvolle Begründung dafür gibt. Phrasen wie “das machen wir immer so”, oder “ich weiß ja schließlich was ich tue” werden hier gerne verwendet. Letztlich wird damit aber nur die Unfähigkeit, die Implikationen des eigenen Handelns hinreichend abschätzen zu können, offenbar - und das ist ein echtes Risiko.

Prinzipien dürfen verletzt werden

  • wenn sie nicht passen
  • wenn es sich um bewusste Ausnahmen handelt, mit denen ein höheres Ziel erreicht werden soll
  • wenn sich der Kontext verändert hat. Die wichtigsten Prinzipien für wartbare Monolithen sind eben nicht notwendigerweise auch nach der Zerlegung in eine verteilte Anwendung noch gute Leitlinien.

Und natürlich sollten Prinzipien niemals um ihrer selbst Willen befolgt werden. Nicht weil das im Studium so gemacht wurde, nicht weil das gesagt hat und auch nicht “weil man das halt so macht”. Prinzipien leiten unsere Entwurfsentscheidungen und diese verdienen immer eine respektable Begründung.

Wenn Du also das nächste Mal vor der Frage stehst, ob ein als wertvoll empfundenes Prinzip verletzt werden darf, mach Dir bewusst, welches Ziel Du damit ultimativ verfolgst und welche Benefits von dieser Ausnahme zu erwarten sind. Und dann triff die Entscheidung bewusst und ohne Scheu, den eigenen Namen auch mit der konkreten Entscheidung zu verknüpfen.

Mehr dazu

Mehr zu prinzipienbasierter Architekturarbeit erfährst du in unserem Training Continuous Architecture. Darin stellen wir den Ansatz von Erder, Pureu und Woods im Detail und mit vielen Praxisbeispieln vor. Prinzipien und ihre praktische Anwendung spielen auch in unserem Grundlagen iSAQB Foundation Training mit iSAQB Zertifizierung eine große Rolle. Dort zeigen wir, unter anderem, wie Prinzipien konkret aus unseren Architekturzielen abgeleitet werden.

Werfe auch einen Blick auf unser passendes Miro Board zum Thema prinzipiengeleitete Architekturarbeit:

Miro-Board zu prinzipiengeleiteter Architekturarbeit