
Klemens Morbe
Softwareentwickler
Veröffentlicht am
5. Juni 2025

Inhalt
Vom Provisorium zum Dauerzustand
Ich war schon in vielen Softwareprojekten beteiligt, die über viele Jahre liefen – manche davon sogar über 10 oder 15 Jahre. Dabei habe ich immer wieder beobachtet, wie schnell aus einem kleinen Workaround eine dauerhafte Lösung wird, wie ein Prototyp plötzlich produktiv eingesetzt wird, oder wie komplexe mathematische Berechnungen ohne Rücksicht auf Lesbarkeit und Wartbarkeit implementiert wurden. Es dauert oft nicht lange, bis niemand mehr weiß – nicht einmal der ursprüngliche Autor – warum ein bestimmter Workaround überhaupt notwendig war. Ein Prototyp, der eigentlich nur für eine kurze Demonstration gedacht war, bleibt plötzlich dauerhaft im Einsatz, denn er „funktioniert ja“. Komplexe Berechnungen werden zwar mathematisch korrekt umgesetzt, aber ohne auf Clean Code zu achten – und schon bald erscheinen sie den Entwicklern der nächsten Generation wie rätselhafte Hieroglyphen.
Vor kurzem hatten wir genau diese Herausforderung: Wir sollten für einen Kunden eine uns fremde Codebasis analysieren und Handlungsempfehlungen aussprechen. Dabei galt es, sowohl Komplexität und Aufwand als auch Dringlichkeit zu bewerten und unsere Empfehlungen nachvollziehbar zu begründen.
Die vorliegende Codebasis war durch und durch Legacy-Code. Geschrieben in einer veralteten Technologieversion, die längst keine Updates mehr erhält und deren erweiterter Support bereits ausgelaufen ist. Nun standen wir vor der entscheidenden Frage: Wie gehen wir mit diesem Code um? Wählen wir den sicheren Weg und migrieren zunächst auf die nächstmögliche Version mit langfristigem Support (LTS), oder wagen wir direkt einen größeren Sprung zur aktuellsten verfügbaren LTS-Version?
In mir persönlich meldet sich sofort die intrinsische Motivation: Ich möchte natürlich am liebsten direkt auf die neueste Version wechseln, mit all ihren tollen neuen Features, modernem Tooling und spannenden Möglichkeiten. Gleichzeitig meldet sich jedoch auch die extrinsische Perspektive und mahnt zur Vorsicht: Weniger Risiko eingehen, weniger Breaking Changes verursachen, Kompatibilität sicherstellen. Die nächstmögliche Version wäre hier pragmatisch betrachtet deutlich risikoärmer.
Doch warum haben wir überhaupt diese Diskussionen? Warum ist es so wichtig, Software gut zu schreiben, sauber zu dokumentieren und regelmäßig Tests durchzuführen? Warum sollten wir nicht einfach „wie Cowboys“ programmieren – schnell, pragmatisch und ohne viel Nachdenken?
Clean Code und Kognitive Komplexität
Softwareentwicklung ist nicht nur eine technische Disziplin – sie hat auch starke psychologische Komponenten. Entwickler verbringen den Großteil ihrer Arbeitszeit nicht etwa mit dem Schreiben neuer Zeilen Code, sondern mit dem Lesen bereits existierenden Codes. Schlechter oder unlesbarer Code erhöht dabei massiv die kognitive Belastung der Entwickler: Je komplexer der Code geschrieben ist, desto schwieriger ist es für unser Gehirn, ihn zu erfassen und zu verstehen.
Die psychologische Forschung spricht hier von „kognitiver Komplexität“: Je höher diese ist, desto mehr mentale Ressourcen müssen Entwickler aufwenden, um den Code zu verstehen. Das führt nicht nur zu Frustration im Team – es erhöht auch drastisch die Wahrscheinlichkeit von Fehlern. Denn je schwerer verständlich ein Stück Software ist, desto wahrscheinlicher werden Fehler bei Anpassungen oder Erweiterungen übersehen.
Broken-Window-Theorie & Littering-Effekt
Ein weiterer wichtiger psychologischer Faktor ist das Phänomen des „Littering“ (Vermüllung) sowie die bekannte „Broken-Window-Theorie“. Beide Effekte beschreiben dasselbe Prinzip: Sobald ein Bereich (in unserem Fall der Quellcode) erste Anzeichen von Unordnung oder Vernachlässigung zeigt, sinkt automatisch die Hemmschwelle für weitere Vernachlässigung. Ein schlecht geschriebener oder unübersichtlicher Abschnitt lädt förmlich dazu ein, weitere schlechte Praktiken anzuwenden. So entsteht nach und nach technischer Schuldenberg („Technical Debt“), der immer schwieriger abzubauen ist.
Cowboy Coding – warum nicht?
„Cowboy Coding“ bezeichnet einen Programmierstil ohne Struktur oder Methodik: Schnell etwas ausprobieren direkt auf Produktivsystemen ohne Rücksicht auf Konsequenzen. Psychologisch gesehen mag dies kurzfristig attraktiv erscheinen (schnelle Ergebnisse!), doch langfristig führt es unweigerlich ins Chaos:
- Keine Dokumentation
- Keine Nachvollziehbarkeit
- Hohe Fehleranfälligkeit
- Frustration im Team
- Hohe Wartungskosten langfristig
Zwischen pragmatischer Sicherheit und innovativer Zukunftsfähigkeit
Zurück zu unserer konkreten Entscheidungssituation: Migration auf die nächstmögliche Version versus großer Sprung zur aktuellsten LTS-Version. Hier wirken zwei psychologische Grundbedürfnisse gegeneinander:
- Sicherheit & Risikominimierung: Der Schritt zur nächstmöglichen Version bietet Stabilität bei minimalem Risiko.
- Innovation & intrinsische Motivation: Der direkte Sprung zur aktuellsten Version verspricht spannende Features und langfristige Zukunftsfähigkeit.
Es gilt also abzuwägen zwischen kurzfristiger Sicherheit einerseits sowie langfristigem Potenzial andererseits. Eine bewusste Entscheidung berücksichtigt beide Perspektiven gleichermaßen:
- Welche Risiken können wir tragen?
- Welche Chancen verpassen wir möglicherweise?
- Wie sieht unsere langfristige Strategie aus?
Bewusst entscheiden statt impulsiv handeln
Softwareentwicklung ist mehr als nur das Schreiben neuer Features – sie verlangt bewusste Entscheidungen über Qualität, Wartbarkeit und Zukunftsfähigkeit des Codes. Die psychologischen Hintergründe zeigen deutlich: Guter Code reduziert kognitive Lasten im Team nachhaltig; Tests schaffen Vertrauen und ermöglichen Innovation; bewusste Technologieentscheidungen sichern langfristigen Erfolg.
In diesem konkreten Fall haben wir uns entschieden bewusst abzuwägen zwischen intrinsischer Innovationsfreude und extrinsischer Risikominimierung – um gemeinsam mit dem Kunden eine nachhaltige Entscheidung treffen zu können.

Hier schreibt
Klemens Morbe
Als erfahrener Backend-Entwickler mit Schwerpunkt auf Java und Spring bin ich leidenschaftlich für Clean Code und effiziente Softwarearchitekturen.
Meine Expertise teile ich sehr gerne im Unternehmen sowie in Blogartikeln, die über theoretische Konzepte hinausgehen und realitätsnahe Lösungen für den Entwickleralltag bieten.
Durch meine Beiträge möchte ich nicht nur Wissen vermitteln, sondern auch den fachlichen Austausch in der Community fördern und zur stetigen Verbesserung der Softwarequalität beitragen.
Weitere interessante Artikel
Wir möchten hier nicht nur über Neuigkeiten aus dem Unternehmen berichten, sondern auch das Wissen und die Erfahrung unserer Experten teilen.

Validierung mit Splits und Joins
Auch komplexere Verzweigungen lassen sich mit Splits und Joins auf Datenflussebene mit einem Flow Design-Diagramm lösen. Hier wird dies anhand der Weiterentwicklung einer vorherigen Lösung gezeigt.

Kevin Erath
Geschäftsführer

Refactoring: Warum es mehr ist als nur “Code aufräumen”
Refactoring ist weit mehr als nur „Code aufräumen“ – es ist eine Investition in die Zukunft eines Projekts. In diesem Beitrag zeige ich, warum klar strukturierter Code essenziell für langfristige Wartbarkeit und Effizienz ist.

Klemens Morbe
Softwareentwickler