Web-Entwicklung

Technische Schulden

Technische Schulden sind der Mehraufwand, der entsteht, wenn in einer Software eine schnelle Behelfslösung einer sauberen Umsetzung vorgezogen wird; wie bei einem Kredit fallen laufende Zinsen in Form langsamerer Änderungen und häufigerer Fehler an, bis die Behelfslösung ersetzt ist.

Der Begriff entstand Anfang der 1990er-Jahre in der Softwareentwicklung und beschreibt jede Stelle in Code, Datenmodell oder Anpassung, deren Aufschub später Aufwand verursacht, bei Eigenentwicklungen ebenso wie bei angepasster [[standardsoftware|Standardsoftware]].

In einfachen Worten

Unter Zeitdruck wird eine Funktion so umgesetzt, dass sie für den Moment funktioniert: ein Sonderfall als feste Ausnahme im Code, eine kopierte Programmstelle anstelle einer gemeinsamen, ein fehlender Test, eine Angabe in einem Freitextfeld anstelle eines eigenen Feldes im Datenmodell. Jede dieser Abkürzungen spart heute Zeit. Der Preis wird bei jeder späteren Änderung fällig, die die Stelle berührt: Die Entwickler müssen die Ausnahme verstehen, alle Kopien anpassen oder ohne Test darauf vertrauen, dass nichts anderes bricht. Dieser wiederkehrende Mehraufwand ist der Zins. Die Tilgung ist die Überarbeitung, die die Behelfslösung durch eine saubere Umsetzung ersetzt. Eine bewusst aufgenommene Schuld ist vertretbar, etwa um einen Liefertermin zu halten, wenn sie dokumentiert und ihre Tilgung eingeplant ist. Gefährlich werden die Schulden, von denen niemand weiß, weil wechselnde Beteiligte sie über Jahre angehäuft haben.

Wozu brauche ich das?

Ein Betrieb ohne eigene Entwicklungsabteilung erkennt technische Schulden an ihren Folgen: Kleine Änderungswünsche werden aufwendig geschätzt, Fehler treten an Stellen auf, die mit der Änderung nichts zu tun hatten, und neue Dienstleister brauchen lange, bis sie sich eingearbeitet haben. Der Betreiber kann regelmäßig eine Liste bekannter Schulden anfordern und einen festen Anteil jedes Wartungsbudgets für die Tilgung vorsehen. Bei der Übergabe an einen neuen Dienstleister gehört diese Liste in die Betriebsdokumentation, weil sie dem Nachfolger die Einarbeitung verkürzt.

Beispiel aus der Praxis

Eine Hausverwaltung lässt ihr Eigentümerportal über mehrere Jahre von wechselnden freien Entwicklern erweitern. Jede neue Abrechnungsart wird als Sonderfall an die bestehende Berechnung angehängt, weil für eine Überarbeitung der Berechnungslogik nie Budget vorgesehen ist. Als eine Änderung der Heizkostenverordnung die Abrechnung betrifft, schätzt der aktuelle Dienstleister den Aufwand auf ein Vielfaches dessen, was die Verwaltung erwartet hat: Die Berechnung existiert in mehreren kopierten Varianten, und für keine gibt es automatische Tests. Die Verwaltung beauftragt zuerst die Zusammenführung der Varianten mit Tests und danach die inhaltliche Änderung. Spätere Anpassungen an der Abrechnung werden seitdem in einem Bruchteil der früheren Zeit umgesetzt.

Wirtschaftlicher Nutzen

Technische Schulden zeigen sich im Wartungsbudget: Sie verteuern jede Änderung und verlängern die Reaktionszeit, wenn ein Gesetz, ein Kunde oder ein Lieferant eine Anpassung verlangt. Wer sie regelmäßig tilgt, hält die Änderungskosten stabil. Wer sie wachsen lässt, erreicht einen Zeitpunkt, an dem eine Neuentwicklung günstiger ist als jede weitere Änderung am Bestand. In der Rechnung der Gesamtbetriebskosten gehört die Tilgung deshalb als eigener Posten in die Nutzungsphase.

Typische Fehler

  • Für die Wartung nur Fehlerbehebung beauftragt und nie Zeit für Überarbeitungen vorgesehen.
  • Sonderfälle als feste Ausnahmen in den Code geschrieben, obwohl sie sich in Daten oder Regeln abbilden ließen.
  • Programmstellen kopiert und einzeln angepasst, bis dieselbe Logik in mehreren Varianten existiert.
  • Behelfslösungen nicht dokumentiert – der nächste Dienstleister entdeckt sie erst bei der nächsten Änderung.
  • Auf automatische Tests und ein Code-Review verzichtet, sodass jede Änderung an bestehenden Stellen ein Risiko bleibt.

Worauf achten?

  • Vom Dienstleister eine Liste bekannter technischer Schulden mit geschätztem Tilgungsaufwand verlangen.
  • Einen festen Anteil des Wartungsbudgets für Überarbeitungen reservieren.
  • Bewusst aufgenommene Schulden mit Grund und geplantem Tilgungszeitpunkt festhalten.
  • Auffällig hohe Schätzungen für kleine Änderungen als Hinweis auf Schulden an der betroffenen Stelle lesen.
  • Vor einer größeren Erweiterung prüfen lassen, ob die betroffenen Stellen zuerst überarbeitet werden sollten.

Häufig gestellte Fragen

Was sind technische Schulden?

Der Mehraufwand, den schnelle Behelfslösungen in einer Software verursachen. Jede spätere Änderung an der betroffenen Stelle dauert länger und birgt mehr Fehlerrisiko, bis die Behelfslösung durch eine saubere Umsetzung ersetzt ist.

Woran erkennt man technische Schulden ohne eigene Entwickler?

An hohen Schätzungen für kleine Änderungen, an Fehlern an unbeteiligten Stellen nach einer Änderung und an langen Einarbeitungszeiten neuer Dienstleister.

Muss man technische Schulden immer vermeiden?

Eine bewusst aufgenommene Schuld, etwa zur Einhaltung eines Termins, ist vertretbar, wenn sie dokumentiert und ihre Tilgung eingeplant ist. Problematisch sind unbekannte Schulden, die über Jahre wachsen.

Wie werden technische Schulden abgebaut?

Durch geplante Überarbeitung: kopierte Logik zusammenführen, Sonderfälle in Daten oder Regeln verlagern und automatische Tests ergänzen. Bewährt hat sich ein fester Anteil jedes Wartungsbudgets für diese Arbeit.