Was sind technische Schulden? Beispiele, Prävention und Best Practices

Die meisten Softwareentwickler sind vertraut mit Technische Schulden, aber das gilt weniger für Personen außerhalb des Programmierberufs.
Es ist wichtig, das Konzept zu verstehen, da es auf eine Vielzahl von Szenarien zutrifft, in denen kurzfristige Entscheidungen langfristige Konsequenzen haben können. Hier finden Sie Beispiele für technische Schulden und Best Practices, die Sie kennen sollten.
Was sind technische Schulden?
Technische Schulden entstehen, wenn schnelle Lieferungen einer optimalen Codequalität vorgezogen werden. Technische Schulden entstehen, wenn Softwareentwicklungsteams schnelle Lösungen langfristigen Lösungen vorziehen.
Die Metapher der Schulden ist angebracht. Wenn jemand Schulden macht, liegt das oft daran, dass er kurzfristig finanzielle Mittel benötigt. Dies führt jedoch später zu zusätzlichen Kosten, wenn die Schulden zurückgezahlt werden müssen.
Technische Schulden funktionieren ähnlich: Zweckmäßigkeit wird gegen zusätzliche Arbeit zu einem späteren Zeitpunkt eingetauscht.
Wenn der Code nicht irgendwann noch einmal überprüft und korrigiert wird, kann dies zu einem Problem werden, da auch bei nicht geleisteten Darlehenszahlungen Zinsen und Strafen anfallen können.
Technische Schulden sind nicht unbedingt ein Problem. Sie können jedoch zu einem werden, wenn das Produkt schlecht optimiert ist oder fehlerhaften Code aufweist.
Beispiele für technische Schulden
Ein klassisches Beispiel für technische Schulden ist das Jahr-2000-Problem (Y2K).
Um wertvollen Speicherplatz zu sparen, haben viele Softwareentwickler in den 1960er und 1970er Jahren Datumsangaben zweistellig gespeichert. Also „73“ statt „1973“.
Diese Praxis wurde über Jahre fortgesetzt, selbst als die Speicherpreise sanken. Viele dieser Programme wurden in das operative Geschäft integriert und blieben weitaus länger im Einsatz als erwartet.
Als das Jahr 2000 näher rückte, erkannten Tausende von Unternehmen und Regierungsbehörden, dass die Datumsberechnungen in großem Maßstab fehlschlagen würden. Dies führte zu einer hektischen Aufräumaktion, die schätzungsweise kostet $ 100 Milliarden.
Technische Schulden sind jedoch nicht auf Software beschränkt. Eine bewährte Methode in der Cybersicherheit besteht beispielsweise darin, Dateiberechtigungen Rollen innerhalb der Organisation und nicht Einzelpersonen zu erteilen.
Angenommen, ein Verwaltungsassistent erhält die Genehmigung für den vorübergehenden Zugriff auf vertrauliche Dokumente, die er normalerweise nicht einsehen darf. Wenn die IT-Organisation die Ausnahme gewährt und sie später nicht widerruft, hat sie dauerhaften Zugriff auf vertrauliche Dokumente gewährt. Das Konto könnte schließlich kompromittiert werden und eine Sicherheitslücke darstellen.
Was sind die Nachteile technischer Schulden?
Wenn kurzfristige Korrekturen schnell überarbeitet werden und Entwickler wissen, wie sie mit technischen Schulden umgehen, gibt es kaum Nachteile. Es kann sogar Vorteile geben, da ein Unternehmen dadurch schnell auf Chancen oder Probleme reagieren kann.
Das Risiko steigt, wenn sich mehrere Schulden häufen.
Schnellkorrekturen sind möglicherweise schlecht oder überhaupt nicht dokumentiert. Und wenn die Leute, die die Schnellkorrekturen durchgeführt haben, das Unternehmen verlassen, gibt es möglicherweise niemanden mehr, der weiß, wie der Code funktionieren soll – oder der überhaupt weiß, dass die Schnellkorrekturen existieren.
Verbesserungen oder Änderungen können unbeabsichtigte Konflikte verursachen, die dazu führen, dass Programme nicht mehr funktionieren oder langsamer laufen. Innovationen werden verlangsamt, weil Unternehmen aus Angst, dass die Änderungen die Anwendung beschädigen, keine Verbesserungen vornehmen.
Welche verschiedenen Arten technischer Schulden gibt es?
Die zwei Hauptkategorien technischer Schulden sind absichtlich und unbeabsichtigt.
Steve McConnell, CEO des Entwickler-Schulungsunternehmens Konstruierendefiniert absichtliche technische Schulden sind solche, die bewusst und strategisch aufgenommen werden.
Er definiert unbeabsichtigte technische Schulden als „das nicht-strategische Ergebnis schlechter Arbeit“.
Im Jahr 2014 entwickelte eine Gruppe von Wissenschaftlern eine Taxonomie das 13 verschiedene Arten technischer Schulden umfasst:
- Architekturschuld
- Schulden aufbauen
- Code-Schulden
- Defekte Schulden
- Designschulden
- Dokumentationsschuld
- Infrastrukturschulden
- Menschenschulden
- Schulden verarbeiten
- Bedarfsschuld
- Schulden bedienen
- Testautomatisierungsschulden
- Schulden testen
Diese Einteilung ist sinnvoll, da sie alle Bereiche abdeckt, in denen kurzfristiges Denken langfristige Probleme hervorrufen kann.
Wie entstehen technische Schulden?
Hier sind einige Möglichkeiten, wie bestimmte Arten technischer Schulden entstehen können.
Absichtliche technische Schulden
Absichtliche technische Schulden sind eine bewusste Entscheidung. Sie sollten dokumentiert und für die Umgestaltung eingeplant werden.
Beispiel: Ein regionaler Vertriebsleiter muss innerhalb einer Frist einen Bericht erstellen, den seine Plattform nicht erstellen kann. Um die Frist einzuhalten, verwendet der Manager einen Open-Source-Berichtsgenerator. Das ist technische Schuld.
Wenn das Entwicklungsteam jedoch Ressourcen aufwendet, um den Open-Source-Berichtsgenerator zu entfernen und das Master-Berichtssystem zu ändern, handelt es sich dabei um absichtliche technische Schulden.
Unbeabsichtigte technische Schulden
Unbeabsichtigte technische Schulden entstehen, wenn Änderungen aus Zweckmäßigkeitsgründen und ohne Pläne zur Überarbeitung des Codes vorgenommen werden.
Es kann auch das Ergebnis schlechter Designentscheidungen sein, die auf mangelndes Wissen oder Nichtbefolgen von Entwicklungsstandards zurückzuführen sind. Unbeabsichtigte technische Schulden im Bereich Tests entstehen, wenn:
- Test-Suiten sind unvollständig
- Tests werden verkürzt
- Der Einfachheit halber wird auf das Testen verzichtet
Dokumentationsschuld
Dokumentationsschulden kommen häufig vor und entstehen, wenn Entwickler zu sehr in Eile sind, ihren Code gründlich zu dokumentieren.
Dies kann auf lange Sicht zu einem Problem werden, wenn eine Person das Unternehmen verlässt und keine Anweisungen zum Verständnis ihres Codes hinterlässt. Dokumentationsschulden waren eine der Hauptursachen für das Jahr-2-Problem.
Infrastrukturschulden
Infrastrukturschulden entstehen, wenn Anwendungen so erstellt werden, dass sie auf bestimmte Komponenten wie Datenbanken und Dateisysteme angewiesen sind. Wenn diese Abhängigkeiten nicht dokumentiert sind und das Unternehmen auf eine neue Infrastruktur migriert, funktioniert die Anwendung möglicherweise nicht.
Was sind die Warnzeichen für technische Schulden?
Die Warnsignale für technische Schulden sind:
- Projekte geraten ins Stocken, weil den Entwicklern der Einblick in die Codebasis fehlt
- Fehler, die aufgrund der Komplexität oder fehlender Dokumentation schwer zu beheben sind
- Fehlerbehebungen, die neue Fehler oder eine stetige Leistungsverschlechterung verursachen
So verwalten und verhindern Sie technische Schulden
Der Umgang mit technischen Schulden beginnt mit fundierten Entwicklungspraktiken. In einer DevOps-Umgebung umfasst dies sowohl Shift-Left- als auch Shift-Right-Tests.
- Shift-Left-Test verschiebt den Testprozess früher und während des gesamten Entwicklungszyklus. Auf diese Weise werden Probleme vorhergesehen und gelöst, bevor sie in die Produktion integriert werden.
- Shift-Right-Test sucht Feedback, nachdem Anwendungen in Produktion gegangen sind. Auf diese Weise werden Fehler frühzeitig erkannt und behoben, bevor die Software weit verbreitet ist.
Sie schaffen Leitplanken, die verhindern, dass die Probleme überhandnehmen.
Die Workarounds, die technische Schulden verursachen, sind unvermeidlich und oft notwendig. Es ist jedoch wichtig, dass Entwickler sie dokumentieren, einschließlich der Gründe, warum Hacks implementiert wurden, und Anweisungen zu deren Behebung.
Durch regelmäßige Überprüfungen des vorhandenen Codes können Teammitglieder außerdem die Arbeit der anderen prüfen und Lücken oder Unregelmäßigkeiten in der Dokumentation erkennen.
Was sind die besten Praktiken?
Wenn Organisationen DevOps-Techniken einführen, sollten sie klären, was technische Schulden sind, und agile Taktiken anwenden, um sie zu verwalten. Dies kann die Implementierung folgender Punkte umfassen:
- Shift-Right- und Shift-Left-Tests
- A/B- und Canary-Testtechniken zum Erkennen von Problemen, bevor sie außer Kontrolle geraten
Durch Peer-Code-Reviews kann die Arbeit der Entwickler mit einem frischen Blick geprüft werden. Entwickler sollten mit einem konsistenten und begrenzten Satz von Tools und Sprachen arbeiten und eine Checkliste mit Aufgaben haben, die in jeder Phase abgeschlossen werden müssen.
Eine effektive DevOps-Organisation gibt Entwicklern die Freiheit, zu entscheiden, wie sie ihre Kreationen bauen. Und es bietet auch Leitplanken, um sicherzustellen, dass sie nicht außer Kontrolle geraten.
Welche Tools können technische Schulden verhindern?
Die oben beschriebenen Vorgehensweisen sind ein guter Anfang. Weitere Vorteile können durch Folgendes erzielt werden:
- Die richtigen automatisierte Tests mehrere Debugging-Zyklen bei jeder Codeänderung auszuführen, wenn es eine Moduländerung gibt
- Festlegung Soundcode-Struktur Verfahren, einschließlich obligatorischer Dokumentation zum Schutz vor Workarounds
- Die richtigen Projektmanagement-Tools um Teams den Status der Arbeit aller zu zeigen
- Eine Programmierer arbeiten in Teams von zwei, um ihnen zu ermöglichen, die Entscheidungen des anderen zu verstehen
Heutzutage wird die meiste Software mit Low-Code- und No-Code-Tools geschrieben. Diese sind selbstdokumentierend und verwenden Flussdiagramme und Drag-and-Drop-Techniken, die eine visuelle Darstellung der Logik und der gewünschten Ergebnisse ermöglichen.
Durch die Anwendung dieser Tools in der professionellen Softwareentwicklung können Sie von selbstdokumentierenden Funktionen profitieren. Entwicklungsmanager sollten Teams ermutigen, Low-Code/No-Code als Produktivitätssteigerung und nicht als Ersatz für ihre eleganten Kreationen zu betrachten.
Häufig gestellte Fragen
-
Sind technische Schulden gut oder schlecht?
Technische Schulden sind ein zweischneidiges Schwert: Sie sind strategisch, wenn sie absichtlich entstehen, und schädlich, wenn sie vernachlässigt werden.
-
Was ist die 80-20-Regel für technische Schulden?
Die 80/20-Regel schlägt vor, sich auf die 20 % der technischen Schulden zu konzentrieren, die 80 % der Probleme verursachen. Dieser Ansatz schafft ein Gleichgewicht zwischen unmittelbarem Fortschritt und langfristiger Nachhaltigkeit und stellt sicher, dass kritische Schulden abgebaut werden, ohne dass es zu einer Perfektionslähmung kommt.
-
Wie viel Zeit sollte ich für technische Schulden einplanen?
Reservieren Sie 20-30 % der Entwicklungszeit für die Verwaltung technischer Schulden. Dieser „Schuldenrückzahlungsplan“ erhält die Code-Gesundheit, ohne Innovationen zu behindern. Passen Sie ihn je nach Projektreife an: Neuere Projekte benötigen möglicherweise weniger, während ältere Systeme mehr benötigen. Regelmäßige „Schuldensprints“ können helfen, angesammelte Probleme systematisch anzugehen.
-
Welche andere Bezeichnung gibt es für technische Schulden?
Designschulden or Code-Schulden sind alternative Begriffe für technische Schulden. Manche nennen es Technische Haftung um die Auswirkungen auf die Bilanz hervorzuheben. Software-Entropie wird in akademischen Kreisen verwendet, während Code Geruch bezieht sich auf Indikatoren für zugrunde liegende technische Schulden. Jeder Begriff hebt unterschiedliche Aspekte der angesammelten Kompromisse bei der Softwareentwicklung hervor.