Technical Debt – Technische Schulden von IT-Systemen erkennen, bewerten & senken

Management Summary

  • Technische Schulden (engl. Technical Debt oder kurz Tech Debt) sind die negative Eigenschaften eines IT-Systems für Betrieb und Wartung nennenswerte zeitliche und finanzielle Aufwände einzufordern.
  • Technische Schulden senken die IT-Entwicklungseffizienz, mindern die Nutzerfahrung und können IT-Systemfehler verursachen. Sie entstehen auf Basis bewusster und unbewusster Entscheidung bei (Weiter-)Entwicklung und Betrieb des Systems.
  • Verschiedene Maßnahmen helfen technische Schulden zu messen, zu bewerten und einzudämmen bzw. gar nicht erst entstehen zu lassen. Grundlage ist die Unterscheidung zwischen Symptome, Ursachen und Gegenmaßnahmen.

Application Landscape Management

 

In einer IT-Systemlandschaft stecken 2 Mio. Dollar Optimierungspotential.
Wie viel können Sie realisieren?

Bestimmen Sie in weniger als 8 Minuten mit 14 Einzelfragen die Optimierungshebel im Management Ihres Applikationsportfolios.

Definition – Was sind Technische Schulden?

Tatsächlich existiert für das Bonmot der Informationstechnik ‚Technische Schulden‘ (oft auch Technische Schuld bzw. englisch Technical Debt, Technology Debt oder kurz TechDebt) keine allgemein akzeptierte Definition. Beispielsweise definiert Gartner Technische Schulden als angesammelte einem IT-System geschuldete Arbeit. Laut dem Marktforschungsunternehmen sind Technical Debt ein unvermeidbarer Seiteneffekt von Software Engineering. Die Online-Enzyklopädie Wikipedia wiederum sieht in Technischer Schuld die notwendige Nacharbeit die entsteht, sobald eine einfache aber limitierte Lösung einem besseren und meist zeitintensiveren Ansatz vorgezogen wird.

Laut einschlägiger Literatur stellte Ward Cunningham das Phänomen 1992 auf der OOPSLA Konferenz in Vancouver vor. Doch ab dieser Stelle weichen die Quellen ab, erklären nicht konsistent, was Technische Schuld genau ausmacht.

Bleiben wir pragmatisch. Für uns beschreiben Technische Schulden bildhaft die negative Eigenschaft eines IT-Systems für Betrieb und Wartung nennenswerte zeitliche und finanzielle Aufwände einzufordern.

Technische Schulden können bewusst oder unbewusst von den verantwortlichen Entwicklungsteams aufgenommen werden. Falls Sie möchten, können Sie zudem entlang des Software Engineering Prozesses für das IT-System zwischen…

  • Architektur- & Design-Schulden (Software und Systemlandschaft)
  • Implementierungs- & Build-Schulden (Entwicklungswerkzeuge, Programmcode)
  • Test & Releases-Schulden (Testabdeckung, Testdaten, Testgeschwindigkeit)
  • Dokumentations-Schulden (Architektur, Nutzung, Entscheidungen)

unterscheiden oder mittels des Tech Stacks eines IT-Anwendung in

  • Nutzeroberfläche (Responsive Design, Barrierefreiheit)
  • Anwendungslogik (Codebasis, Unit-Tests, Dokumentation)
  • Datenbank (Normalisierung, Indexierung, Datenqualität)
  • Integrationsschicht (API Dokumentation, Datenübertragung, Abhängigkeiten)
  • Infrastruktur (Cloud, Serverkonfiguration, Wartungsautomatisierung)
  • Sicherheit (Verschlüsselung, Single Sign on, Monitoring)

kategorisieren.

Für die in weiterführender Literatur diskutierten Organisatorischen Schulden wie Prozess-, Anforderungs-, Projektmanagement-, Kultur- oder Entwicklungswerkzeugschulden wollen wir an dieser Stelle nicht weiter eingehen und verweisen Sie an die unten stehenden Lesempfehlungen.

„Technical Debt verursachen Ihnen (wiederkehrende) Kosten. Aber auch das Beseitigen und Vermeiden bedarf wiederkehrender Investitionen. Strukturieren, verbessern und erhalten Sie nur, was sich auch wirklich lohnt. Mischen Sie Schuldenabbaumaßnahmen die dem Fachbereich gut vermittelbar sind mit solchen, die insbesondere aus der IT-Perspektive umgesetzt werden sollten.“

Dr. Christopher Schulz

Technische Schulden

Indikatoren für Technische Schulden entlang eines IT-System-Stacks

Auswirkungen – Weshalb sind TechDebt ein Problem?

Technische Schulden…

  • verringern die IT-Entwicklungseffizienz (insb. Geschwindigkeit, Kapazität und Team-Moral) mit denen das bestehende IT-System mit neuen Funktionen und verbesserten Qualitätseigenschaften weiterentwickelt werden kann,
  • reduzieren häufig die Nutzererfahrung (insb. Bedienungseffizienz, Zufriedenheit) der immer starrer, fragiler und zäher werdenden Applikation und
  • erhöhen das Risiko von IT-Systemfehlern, die im Worst-Case zu einem hohen fachlichen Schaden führen.

Erneut mit einer Metapher zusammengefasst: Technische Schulden lassen Ihr Unternehmen für Betrieb, Weiterentwicklung und Nutzung des IT-Systems wiederkehrend Technische Zinsen in Form von Zeit, Qualität und Kosten (bzw. Nerven) bezahlen.

Dabei akkumulieren sich die Schulden im Rahmen der Weiterentwicklung des Systems und vergrößern sich in der Regel mit seiner fortschreitender Nutzungsdauer. Um in der Metapher der Finanzwelt zu bleiben: Die Zinslast wächst. Zum Zins gesellt sich der Zinseszins, Zinseszinseszins usw..

Geringe IT-Entwicklungseffizienz

Gedrosselte Umsetzungsgeschwindigkeit und Entwickungskapazität bei verringerter Team-Moral

Beeinträchtigte Nutzererfahrung

Starres, fragiles und zähes IT-System

Potentielle IT-Systemfehler

Fehlverhalten, Qualitätsdefizite und mögliche Ausfälle

Ursachen – Wodurch entstehen Technische Schulden?

Technical Debt entsteht durch bewusste und unbewusste Entscheidungen bei der Entwicklung, dem Betrieb und dem Ausbau eines IT-Systems. Ganz gleich ob Sie Ihre IT-Systeme umsichtig und vorausschauend bereitstellen: Aus unserer Sicht lassen sich die Schulden nicht vollständig verhindern

  • Geschäftsmodelle und damit Fachprozesse und -anforderungen wandeln sich.
  • Nachbarsysteme werden (samt Schnittstellen) ergänzt oder angepasst.
  • Basistechnologien altern, erfahren Updates oder werden komplett ersetzt.

Um weiterhin nutzbar zu bleiben und für die Anwender einen (wachsenden) Mehrwert zu stiften, muss ein IT-System gewartet und weiterentwickelt werden. Dabei bedingen Faktoren wie…

  • fachlicher Druck – die übereilte Lieferung vieler neuer Funktionen und Eigenschaften mittels ‚Abkürzungen‘ auf Kosten der Systemqualität
  • fehlerhafte Code-Implementierung – fehlerhafte Schnittstellenumsetzung, Missachtung von Compiler-Warnungen, nachlässige Codedokumentation etc.
  • unzureichende Qualitätsroutinen – fehlende Teststrategie, unangemessene Testprozesse und unzureichende Schuldensensibilität
  • komplexe IT-Systeme – groß, monolitisch gewachsen und kaum noch beherrschbare Legacy Architekturen
  • fehlendes Knowhow – Treffen falscher technischer Architektur- und Entwicklungsentscheidungen
  • ungenügende Governance – das Zulassen von individuellen Entwicklungswerkzeugen und -prozessen
  • geringe Kommunikation – mangelnde Abstimmung von Fachanwendern, Entwicklern und Betriebsverantwortlichen

bei ausbleibenden Gegenmaßnahmen zum unablässigen Anwachsen des Technischen Schuldenbergs.

Dabei sind nicht alle TechDebts gleichermaßen sichtbar. Bekannte Technische Schulden sind für Sie und Ihre Kollegen sichtbar. Unbekannte IT-System-Verpflichtungen liegen jedoch im Nebel und kommen erst durch gezielte Analyseaufträge (z.B. Code-Reviews, Dokumentationsprüfung, Architekturchecks) oder bei Änderungsvorhaben bzw. Fehlerfällen ans Tageslicht. 

„Technische Schulden entstehen, wenn bewusst oder unbewusst falsche oder suboptimale technische Entscheidungen getroffen werden.“

– Howard G. Cunningham, US-amerikanischer Programmierer

Garage Method: How to pay back technical debt (3min)

„Machen Sie es wie die Formel 1: Bei schlechten technischen Bedingungen vereinbaren Sie mit dem Fachbereich eine Safty Car Phase. Während einer bemessenen Zeit optimiert Ihre IT die Prozesse, Tools und Organisation und steht anschließend wieder für Fachbereich und seine Anforderungen zur Verfügung. Nun ist die Straße frei und Sie können mit Fachfunktionen wieder Vollgas geben.“

Dr. Christopher Schulz

Reduzierung – Wie lassen sich Technische Schulden senken?

Eine Reihe von Maßnahmen helfen Ihnen technische Schulden zu messen, zu bewerten und einzudämmen bzw. gar nicht erst entstehen zu lassen. Diese wirken auf der Prozess-, Fach- Organisations- (Business & IT) sowie Systemebene sowohl der während IT-System(weiter)entwicklung als auch dem Systembetrieb. Unterscheiden Sie zwischen…

  • Symptomen (z.B. zahlreiche Fehlervorfälle eines IT-Systems, hohe Code-Komplexität),
  • Ursachen (z.B. unvollständiges Software Testing, fehlende Coding-Konventionen) und
  • Gegenmaßnahmen (z.B. striktes Testmanagement, Coding-Konventionen und Trainings).

Ihr Ziel ist es hohe, unberechenbare Kosten für Wartung & Betrieb eines IT-Systems in den Zustand berechenbare Kosten für Wartung & Betrieb zu überführen. Nachfolgend eine Liste grundlegender Maßnahmen die Tech Debt sowohl nachträglich als auch präventiv zu senken.

Tipp #1: Leitplanken definieren

Verhindern Sie das Entstehen Technischer Schulden, indem Sie für Design, Programmierung und Testing eines IT-Systems feste Prozess-, Ergebnis- und Werkzeugvorgaben vereinbaren. Im Scope dieser IT Governance Maßnahme liegen der verfügbare Technologie-Stack und gültigen Programmcode-Konventionen gleichermaßen wie die Architekturprinzipien und die einzusetzenden Test-Tools.

Tipp #2: Analysewerkzeuge einsetzen

Messen Sie Technische Schulden mit Hilfe von Softwarewerkzeugen. Speziell für den Programmcode gibt es einen Menge ausgereifter kostenfreier und kommerzieller Analyse-Tools, die sogenannte Code-Smells automatisch aufspüren, bewerten und visualisieren sowie Korrekturen vorschlagen.

Tipp #3: Refactoring vorantreiben

Reduzieren Sie die Technische Schuld durch iterativ und kontinuierlich durchgeführte Strukturverbesserung des Programmcodes. Das beobachtbaren Systemverhalten bleibt bei diesen Maßnahmen unangetastet. Beachten Sie: Der Abbau technischer Schulden ist eine langfristige Investition. Halten Sie diszipliniert an Ihrer Reduktionsstrategie fest. Nutzen Sie die durch künstliche Intelligenz bereitgestellten Software Co-Piloten.

Tipp #4: Entwicklung agilisieren

Verhindern Sie das Entstehen neuer technischer Schulden durch agile Techniken wie das Pair Programming oder der Retrospektive. Verankern Sie in der Definition of Done eine ‚Schuldenbremse‘. Versehen Sie Ihre User Stories zusätzlich zu Story Points ebenfalls mit sogenannten Pain Points.

Tipp #5: Testprozesse optimieren

Vermeiden und senken Sie Technische Schulden durch Test Driven Development, institutionalisierte Code Reviews, automatisiertes Testen und ein gemeinschaftlich Qualitätsbewusstsein. Beherzigen Sie dabei die Broken-Window-Theorie. Bereits ein kleiner Betrag an Technischer Schuld in Architektur, Code, Tests oder Dokumentation sorgt für Nachlässigkeit und damit Anstieg.

Tipp #6: Kompetenzen doppeln

Vermeiden Sie den sprunghaften Anstieg Technischer Schulden aufgrund des plötzlichen Weggangs einzelner IT-Wissensträgers. Verteilen Sie das System-Knowhow auf mehrere Köpfe und lassen Sie das System dokumentieren. Sichern Sie damit die IT-Entwicklungseffizienz ab.

Tipp #7: Kommunikation fördern

Mindern Sie das Anwachsen Technischer Schulden durch visuelle Kommunikation. Das Reduzieren von Schulden ist eine Sache des gesamten Entwicklungsteams. Techniken wie die Story Map, das Datenmodell, der System Footprint oder das Kontextdiagramm helfen ein einheitliches Verständnis zu Ist- und Soll-Stands des IT-Systems sowohl für Fach- als auch IT-Experten zu erzeugen.

Tipp #8: Reduktionsstrategie bewusst wählen

Das IT- und Beratungsunternehmen IBM unterscheidet zwischen zwei Formen der Schuldenreduktion. Bei ‚Höchste Zinsen zuerst‚ beseitigen Sie dort die Technischen Schulden, wo die Auswirkungen am größten sind. Bei ‚Geringster Stand zuerst‚ konzentrieren Sie sich zunächst auf die Quick-Wins und reduzieren die kleinsten technischen Schuldenberge. Beide Ansätze haben ihre Vorteile. 

Tipp #9: IT-Systeme ausphasen

Jedes neue System hebt die Komplexität Ihrer IT-Landschaft – der technische Schuldenberg wächst. Machen Sie es sich zur Regel bei einer zusätzlich eingebrachten IT-Anwendung eine bestehende Anwendung zurückzubauen. Ein Einschalten bedingt ein Ausschalten. 

„Wenn eine Gruppe Pfadfinder ihre Zelte für die Nacht aufstellt, dann müssen sie am nächsten Tag den Ort so aufräumen, dass er in einem besseren Zustand ist als bei Ihrer Ankunft. Befolgen Sie auch bei der Änderung von IT-Systemen die Pfadfinder-Regel. Tragen Sie bei der Änderung eines IT-Systems technische Schulden ab.“

Dr. Christopher Schulz

Fazit

Bei all den Nachteilen die Technische Schulden mit sich bringen: Bitte tappen Sie nicht in die ‚Zero Technical Debt‘-Falle. Technische Schulden wird es immer geben. Die Technical Debt eines IT-Systems komplett abzubauen ist perfektionistisch und dauerhaft nicht finanzierbar.

Investieren Sie dann in die Reduktion der Technischen Schulden eines Systems, sobald dies seiner Entwicklungs- und Nutzungsproduktivität messbar zu Gute kommt. Moderne Analyse-Tools, ein ausgeprägter Qualitäts-Mindset sowie das bewusste Entscheiden pro oder contra neuer Technischer Schulden helfen Ihnen die richtige Balance zu halten.

Ebenfalls interessant 

Leseempfehlungen

Sie wollen die Technischen Schulden Ihres IT-Systems bewerten und reduzieren?
Gerne unterstützen wir Sie!

Dr. Christopher Schulz

Dr. Christopher Schulz

Business Analyst, Enterprise Architect & Projektmanager

Bitte akzeptieren Sie unsere Datenschutzerklärung.

11 + 1 =