0170 598 8648info [at] innosirius [dot] de
SaaS und Softwareentwicklung

Technische Schulden: Was sie sind und wann sie fällig werden

Innosirius Redaktion··11 Min. Lesezeit
Technische Schulden: Was sie sind und wann sie fällig werden

Was technische Schulden in der Praxis bedeuten

Der Begriff klingt nach einer Buchhaltungskategorie. In der Praxis ist er eine Beschreibung dafür, was passiert, wenn Entscheidungen, die damals richtig wirkten, heute Arbeit erzeugen, die niemand geplant hat.

Software, die läuft, kann trotzdem verschuldet sein. Nicht weil sie fehlerhafte Ergebnisse liefert, sondern weil sie intern so aufgebaut ist, dass jede Änderung an einer Stelle unbeabsichtigt mehrere andere berührt. Das ist keine Metapher — es ist eine strukturelle Eigenschaft, die sich in der täglichen Arbeit niederschlägt.

Was es konkret heißt

Technische Schulden zeigen sich nicht in Fehlern, sondern in Reibung. Ein Feld im Formular soll umbenannt werden — der Aufwand ist drei Wochen, weil dasselbe Feld an sieben anderen Stellen im System auftaucht, von denen niemand eine vollständige Liste hat. Ein Bericht soll um eine Spalte erweitert werden — das Ergebnis ist eine Zahl, die mit der aus einem anderen Bericht nicht übereinstimmt, weil zwei Teile des Systems dieselbe Größe unterschiedlich berechnen.

Oder die bekannte Aussage aus einem Entwicklungsgespräch: „Das kann man nicht einfach ändern, das hängt an zu vielem." Was dahintersteckt, ist nicht Unwillen — es ist eine Struktur, die keine klaren Grenzen mehr hat.

  • Funktionen dauern länger als erwartet, und die Erklärungen sind jedes Mal anders.
  • Bestimmte Teile der Software kennt nur eine Person wirklich — und es gibt keine Dokumentation.
  • Neue Anforderungen werden mit alten Strukturen gebaut, weil ein Umbau zu riskant wirkt.
  • Prüfungen, die sagen sollen, ob alles noch funktioniert, laufen durch — aber niemand ist sicher, ob sie das Richtige prüfen.

All das ist technische Schuld: nicht die Abwesenheit von Funktion, sondern die Anwesenheit von Widerstand. Und dieser Widerstand wächst, wenn er nicht abgebaut wird — selten sprunghaft, meist schleichend, bis eine Änderung, die sechs Monate früher drei Tage gedauert hätte, plötzlich drei Wochen dauert.

Warum es kein Zeichen schlechter Arbeit ist

Es gibt eine verbreitete Annahme, dass technische Schulden entstehen, weil schlecht gearbeitet wurde. Das stimmt manchmal. Häufiger entstehen sie, weil Software unter echten Bedingungen gebaut wird: mit unvollständigen Anforderungen, mit Zeitdruck, mit Entscheidungen, deren Konsequenzen erst sichtbar werden, wenn das System wächst und sich die Anforderungen verschieben.

Eine Fachanwendung, die in einem Jahr gebaut wurde, trägt die Spuren dieses Jahres. Wo Anforderungen sich verändert haben, wo Kompromisse gemacht wurden, wo damals das Einfachere die richtige Wahl war und es heute nicht mehr ist. Das macht sie nicht schlecht — es macht sie zu einem System, das irgendwann Aufmerksamkeit braucht. Und diese Aufmerksamkeit kostet Zeit und Geld, auch wenn auf den ersten Blick alles funktioniert.

Wie sie entstehen — auch in gut gemeinten Projekten

Technische Schulden entstehen selten durch Nachlässigkeit. Die meisten entstehen in Projekten, bei denen alle Beteiligten ihr Bestes gegeben haben — aber unter Bedingungen, die keine andere Wahl ließen.

Der Termin stand fest

Ein häufiger Ausgangspunkt: Das System musste zu einem bestimmten Datum fertig sein. Vielleicht war eine Messe geplant, ein Vertrag unterschrieben, ein Kunde versprochen. Die Entwickler haben geliefert — aber an manchen Stellen haben sie Abkürzungen genommen, die damals vernünftig aussahen. Eine Funktion wurde so gebaut, dass sie funktioniert, nicht so, dass sie sich später leicht anpassen lässt. Das Ergebnis war pünktlich. Der Preis kam später.

Die Anforderungen haben sich geändert

Software bildet Geschäftsprozesse ab — und Geschäftsprozesse ändern sich. Was im ersten Gespräch als klare Anforderung beschrieben wurde, sah drei Monate später anders aus. Eine neue Regelung, ein neuer Vertriebskanal, ein Kundenwunsch, der so nicht vorhergesehen wurde. Jede Änderung wurde eingebaut. Aber nicht jede passte sauber in das, was bereits stand. Mit der Zeit entstehen Stellen im System, an denen mehrere Logiken übereinanderliegen — jede für sich erklärbar, zusammen schwer zu verstehen.

Es wurde „erstmal" so gemacht

Viele Entscheidungen im Projektverlauf wurden als vorläufig gedacht. „Erstmal so, das räumen wir später auf" — ein Satz, den fast jedes Projekt kennt. Das Problem: Später kommt selten. Was provisorisch gebaut wurde, läuft oft jahrelang im Produktionsbetrieb. Nicht weil es niemanden stört, sondern weil andere Aufgaben vordringlicher sind und niemand Budget für etwas beantragt, das technisch funktioniert.

Drei Situationen, die besonders oft zu Schulden führen

  • Der erste Prototyp wurde direkt zum Produktionssystem: Was schnell gezeigt werden sollte, wurde nicht neu gebaut, sondern weitergeführt. Die Grundlage, die für eine Demonstration gedacht war, trägt jetzt echten Betrieb — mit allen Abkürzungen, die für eine Präsentation akzeptabel sind, für den Alltag aber nicht.
  • Ein externer Anbieter wurde abgelöst, aber nicht vollständig: Verbindungen zu alten Systemen bleiben oft länger bestehen als geplant. Sie werden angepasst, umgeleitet, überbrückt — bis niemand mehr genau weiß, welcher Weg eigentlich der richtige ist und welcher nur deshalb noch existiert, weil ihn abzuschneiden riskant erschien.
  • Das Team hat gewechselt: Wer den ursprünglichen Code geschrieben hat, ist nicht mehr da. Wer ihn heute pflegt, versteht, was er tut — aber nicht mehr, warum er so gebaut wurde. Entscheidungen, die einen guten Grund hatten, sehen von außen willkürlich aus. Sie werden behalten, weil niemand das Risiko eingehen will, sie zu ändern.

Diese drei Situationen haben eines gemeinsam: Keine war das Ergebnis von Gleichgültigkeit. Alle entstanden aus dem Versuch, unter realen Bedingungen vernünftige Entscheidungen zu treffen. Technische Schulden sind oft der einkonservierte Abdruck von Druck, Ungewissheit und knappen Ressourcen — sichtbar geworden in dem Moment, in dem das System wachsen oder sich verändern soll.

Wann sie sich bemerkbar machen

Die meisten Systeme funktionieren zu Beginn gut. Die erste Version liefert, was versprochen war. Anfragen kommen rein, Daten werden gespeichert, Berichte laufen durch. Das ist kein Zufall — zu diesem Zeitpunkt ist das System noch überschaubar genug, dass jede Änderung kalkulierbar ist.

Das ändert sich nicht schlagartig. Es ist eher ein schleichendes Verlangsamen. Eine Anpassung, die beim letzten Mal drei Tage gedauert hat, braucht diesmal drei Wochen. Der Entwickler erklärt, warum — aber die Erklärung macht das Ergebnis nicht kürzer.

Die erste Warnung: Schätzungen stimmen nicht mehr

Irgendwann beginnen die Schätzungen zu streuen. „Zwei Tage" werden zu drei Wochen, ohne dass jemand genau sagen kann, warum. Ein neues Feld im Formular klingt nach einer Stunde Arbeit — tatsächlich hängt daran eine Kette von Abhängigkeiten, die beim ersten Hinsehen niemand sieht. Die Änderung an einer Stelle zieht Änderungen an fünf anderen nach sich.

Das ist der Moment, in dem technische Schulden sichtbar werden: nicht als abstraktes Problem, sondern als konkrete Verzögerung auf dem Weg zur nächsten Funktion.

Die zweite Warnung: Etwas bricht, obwohl niemand dort gearbeitet hat

Manchmal meldet sich eine Schuld auf merkwürdige Weise. Eine Funktion, die seit Monaten zuverlässig lief, hört plötzlich auf zu funktionieren — obwohl niemand sie angefasst hat. Jemand hat etwas anderes geändert, weiter oben im System, und diese Änderung hat einen Effekt ausgelöst, den vorher niemand sehen konnte.

Für die Mitarbeiterin, die gerade eine Anfrage bearbeiten will, ist das zunächst ein technisches Problem. Für das Unternehmen ist es ein Hinweis auf etwas Tieferes: Das System reagiert auf Eingriffe in einer Weise, die sich nicht mehr vorhersagen lässt.

Die dritte Warnung: Jede Erweiterung wird zur Grundsatzdiskussion

In einem System ohne nennenswerte Schulden ist eine neue Anforderung eine neue Anforderung. Man schätzt, man baut, man liefert. In einem verschuldeten System ist dieselbe Anforderung zunächst eine Frage: Kann das überhaupt eingebaut werden, ohne den Rest zu gefährden?

Diese Diskussion hat ihren Preis. Sie kostet Zeit, bevor eine Zeile geschrieben ist. Und sie kostet Vertrauen — weil der Auftraggeber irgendwann das Gefühl bekommt, dass er für Entscheidungen zahlt, die früher getroffen wurden, ohne ihn zu fragen.

  • Schätzungen weichen regelmäßig um ein Vielfaches vom tatsächlichen Aufwand ab.
  • Kleine Anpassungen haben unerwartete Nebeneffekte an anderen Stellen im System.
  • Neue Anforderungen lösen Diskussionen über bestehende Strukturen aus, nicht nur über die neue Funktion.
  • Das Team braucht vor jeder Änderung eine ausführliche Einführung in den betroffenen Bereich — auch wenn es dort schon gearbeitet hat.

All das sind Zeichen — kein Urteil, kein Versagen. Jedes gewachsene System trägt diese Spuren. Die Frage ist nicht, ob sie vorhanden sind, sondern ab wann sie die nächste Entscheidung beeinflussen.

Was Änderungen in einem verschuldeten System kosten

Wer ein Software-System jahrelang betreibt, merkt technische Schulden selten im Alltag. Die Anwendung läuft, die Daten kommen an, die Mitarbeiterin findet, was sie sucht. Der Moment, in dem die Schulden fällig werden, ist ein anderer: wenn jemand eine Änderung braucht.

„Wir brauchen noch eine Spalte in dieser Übersicht." Oder: „Die Benachrichtigung soll künftig auch die Adresse enthalten." Das klingt nach wenigen Stunden Arbeit. In einem sauberen System wäre es das auch. In einem verschuldeten System beginnt hier eine andere Rechnung.

Die versteckte Vorarbeit

Bevor die gewünschte Änderung umgesetzt werden kann, muss erst verstanden werden, was das System im Umfeld dieser Stelle tut. Das ist keine Ausrede der Entwicklung — es ist eine handwerkliche Notwendigkeit. Ein System, das über Jahre ohne klare Struktur gewachsen ist, hat keine natürlichen Grenzen mehr zwischen seinen Bereichen. Eine Änderung an der Anzeige kann die Berechnung berühren. Eine Änderung am Versand kann das Protokoll beeinflussen. Wo diese Grenzen fehlen, muss jede Änderung den ganzen Zusammenhang berücksichtigen.

Das Ergebnis: Entwicklerinnen und Entwickler verbringen einen großen Teil der Zeit damit, herauszufinden, was der Code tut — nicht damit, neuen zu schreiben. Zwei Tage Aufwand für drei Stunden sichtbarer Arbeit ist in solchen Projekten keine Ausnahme.

Was das in Zahlen bedeutet

Untersuchungen aus der Softwarebranche schätzen, dass Entwicklerteams je nach Systemzustand zwischen 20 und 40 Prozent ihrer Arbeitszeit mit dem Verstehen und Umschiffen vorhandener Probleme verbringen — nicht mit neuen Funktionen. Das schlägt sich direkt in den Kosten jeder Änderung nieder: nicht als einmaliger Aufpreis, sondern dauerhaft, bei jeder neuen Anforderung.

Hinzu kommt das Risiko. In einem verschuldeten System ist das Auffinden von Folgefehlern aufwendiger. Eine Änderung, die technisch korrekt ist, kann trotzdem etwas brechen, das scheinbar nichts damit zu tun hat. Wer dann auf manuelle Kontrolle angewiesen ist, weil automatisierte Prüfungen fehlen oder veraltet sind, zahlt diesen Aufwand bei jeder Lieferung neu.

Wie sich das im Projektalltag anfühlt

  • Ein Anpassungswunsch, der in der Besprechung nach einem Nachmittag klang, erscheint in der Abrechnung mit zwei Wochen.
  • Der Liefertermin für eine neue Funktion wird mehrfach verschoben — nicht wegen fehlender Kapazität, sondern wegen Problemen, die erst beim Eingriff sichtbar wurden.
  • Es gibt Bereiche des Systems, die niemand mehr anfassen möchte. Nicht weil sie falsch sind, sondern weil niemand sicher weiß, was passiert, wenn man es tut.
  • Änderungen, die früher Tage dauerten, dauern heute Wochen — obwohl das Team gewachsen ist und niemand weniger sorgfältig arbeitet als zuvor.

Das ist keine Frage von Können oder Sorgfalt. Es ist das Ergebnis von Entscheidungen, die in früheren Phasen getroffen wurden — manchmal bewusst, oft unter Zeitdruck, manchmal schlicht weil das Wissen fehlte, das erst später entsteht. Was damals vertretbar war, ist heute das, was jede Änderung teuer macht. Und weil diese Kosten nie auf einer eigenen Zeile der Rechnung erscheinen, sondern immer als Teil eines konkreten Vorhabens, wird der Zusammenhang selten sichtbar.

Was das für künftige Entscheidungen bedeutet

Technische Schulden verändern nicht nur das, was die Software heute kann. Sie verändern, was morgen möglich ist — und zu welchem Preis.

Wer ein bestehendes System weiterentwickeln möchte, trifft seine Entscheidungen nie auf einem leeren Blatt. Jede Anforderung, jede Änderung, jede Erweiterung wird gegen das verhandelt, was früher gebaut wurde. Manchmal passt das Neue gut dazu. Oft passt es nicht — und dann beginnt das eigentliche Gespräch: Was muss zuerst bereinigt werden, bevor das Neue gebaut werden kann? Das ist keine technische Frage. Es ist eine Frage über Zeit und Budget.

Neue Funktionen werden teurer, nicht billiger

Ein häufiges Missverständnis: Man erwartet, dass eine Software mit der Zeit günstiger wird, weil ja schon so viel gebaut wurde. Das Gegenteil ist richtig. Je mehr sich angesammelt hat, desto mehr Aufwand steckt in jeder neuen Funktion — nicht weil die Funktion selbst kompliziert ist, sondern weil sie in ein System integriert werden muss, das sich dagegen sperrt.

Ein Beispiel: Ein Unternehmen möchte seinen Kunden eine einfache Statusanzeige geben — wo steht mein Auftrag gerade? In einem gut strukturierten System dauert das vielleicht eine Woche. In einem System mit gewachsenen Strukturen kann allein die Vorbereitung mehrere Wochen in Anspruch nehmen, weil die relevanten Daten an drei verschiedenen Stellen liegen und niemand mehr genau weiß, welche davon verlässlich ist.

Entscheidungen unter Druck entstehen selten besser

Wenn ein System unter hoher Last steht — viele Nutzer, enger Zeitrahmen, dringender Kundenwunsch — neigen Entscheidungen dazu, das kurzfristige Problem zu lösen, nicht das langfristige. Das ist menschlich und oft unvermeidbar. Was dabei entsteht, sind neue Schulden, die sich auf alte stapeln.

Wer künftige Entscheidungen besser treffen möchte, braucht deshalb nicht zuerst einen Plan für neue Funktionen. Sondern ein ehrliches Bild vom Zustand des Bestehenden.

  • Was kann das System heute zuverlässig? Was nur mit Einschränkungen?
  • Wo wurde in der Vergangenheit bewusst vereinfacht, weil die Zeit fehlte?
  • Welche Bereiche werden bei Änderungen immer wieder zum Problem?

Diese Fragen lassen sich nicht aus einer Präsentation beantworten. Sie erfordern, dass jemand in das System schaut — nicht um es zu bewerten, sondern um ein realistisches Bild zu zeichnen.

Was eine ehrliche Bestandsaufnahme leisten kann

Eine Bestandsaufnahme schützt vor einer bestimmten Art von Überraschung: dem Vorhaben, das auf einem System basiert, das der geplanten Belastung nicht standhält. Oder der Erweiterung, die sechs Monate dauert, weil niemand wusste, was darunter liegt.

Sie schützt nicht vor Kosten — aber sie macht sie sichtbar, bevor die Entscheidung gefallen ist. Das ist der Unterschied zwischen einer Investition, die man eingeht, weil man sie versteht, und einer, die man eingeht, weil man glaubte, es wäre einfacher.

Technische Schulden sind kein Versagen. Sie sind die normale Folge davon, dass Software in einer Welt gebaut wird, die sich ändert. Wer sie aber nicht kennt, trifft seine nächsten Entscheidungen auf einem Fundament, dessen Tragfähigkeit niemand geprüft hat.

Passende LeistungSoftwareberatung von Innosirius→

Weitere Beiträge

Beratung anfragen

Bereit für Ihr nächstes Projekt?

Sprechen wir über Ihre Anforderungen und wie individuelle Software Ihr Unternehmen voranbringt.

Kostenlos & unverbindlich Individuelle Analyse DSGVO-konform