Wenn technische Schulden nicht ordnungsgemäß verwaltet werden, können sie nicht nur die Entwicklungskosten erhöhen. Dies kann dazu führen, dass Kunden verloren gehen und Sie anfällig für Cyberangriffe sind. Erfahren Sie, wie Sie heute den Weg des Abbaus technischer Schulden beschreiten können, um Ihr Produkt für die Zukunft zu sichern.
A QUICK SUMMARY – FOR THE BUSY ONES
Technische Schulden werden häufig durch unzureichende Informationen über die Bedürfnisse der Benutzer, den Druck, der Veröffentlichung Vorrang vor der Qualität einzuräumen, und durch zu wenig Aufmerksamkeit auf die Codequalität verursacht.
Technische Schulden können Folgen haben, wie den Verlust von Kunden aufgrund einer schlechten Erfahrung, wodurch ein Produkt anfälliger und weniger leistungsfähig wird und die Entwicklungskosten steigen.
Um technische Probleme zu vermeiden, sollten Sie die Codequalität nur dann gefährden, wenn dies erforderlich ist, und denken Sie daran, den Code immer gemäß dem Plan zu überarbeiten. Wählen Sie Ihre präventiven Kennzahlen wie die Anzahl der Fehler oder die Anzahl der ausgefallenen CD und CI.
TABLE OF CONTENTS
Technische Schulden scheinen ein Kompromiss zwischen schnellerer Lieferung und hoher Qualität zu sein.
Oft macht es ein Geschäfts- und Entwicklungsteam flexibler, aber Der Schlüssel ist, die technischen Schulden pünktlich zurückzuzahlen. Andernfalls kann dies schwerwiegende Folgen haben.
Erfahren Sie, wie Sie mit technischen Schulden umgehen und präventive Prozesse für die Zukunft vorbereiten.
Technische Schulden (auch als Code-Schulden bezeichnet) sind die Folge von Entscheidungen, die der Geschwindigkeit der Bereitstellung und Veröffentlichung Vorrang vor der höchsten Qualität des Codes einräumen. Es ist der implizite Kosten für Nachbesserung und Refactoring in Zukunft resultiert das aus der Wahl einer derzeit einfacheren Lösung.
Der Begriff bezieht sich häufig auf die Kosten, die für die Erstellung und spätere Überarbeitung des Codes anfallen, nicht auf den Code selbst.
Wenn Sie sich fragen, was technische Schulden sind, und zu dem Schluss kommen, ob es sich um so etwas wie finanzielle Schulden handelt, haben Sie Recht. Der Begriff verbindet metaphorisch Softwareentwicklung mit finanziellen Schulden, wobei Zinsen zusätzliche Arbeit sind, die man später erledigen muss, um jetzt schnell zu programmieren.
Ein gewisser Betrag an technischen Schulden ist unvermeidlich, und es kann als wertvolles Tool verwendet werden, wenn die ultimative Qualität des Codes nicht entscheidend ist oder wenn die Zeit knapp ist.
Aber die Absicht, technische Schulden pünktlich zurückzuzahlen ist das, was gute technische Schulden von schlechten unterscheidet.
Zum Beispiel sind Produkte mit Minimum Viable in den meisten Fällen mit Codeschulden ausgestattet, aber das ist kein Problem, solange das Team plant, sie zu verbessern.
<span class="colorbox1" fs-test-element="box1"><p>Richtig eingesetzte technische Schulden können einem Unternehmen mehr Flexibilität bieten und die Ausführungsgeschwindigkeit verbessern.</p></span>
Auf der Suche nach Möglichkeiten, mit technischen Schulden umzugehen, könnte man zunächst beantworten, um welche Art von technischen Schulden es sich handelt. Weil es nicht nur um das Programmieren geht — es kann in jeder Entwicklungsphase passieren.
Schlechter Code und damit technische Schulden können von erfahrenen Programmierern produziert werden, die unter Druck stehen. Viele IT-Führungskräfte halten sich an 4-Typen-Klassifizierung von technischen Schulden, vorgeschlagen von Martin Fowler, einem Chefwissenschaftler und technischen Autor von ThoughtWorks. Er stapelt zwei Kategorien zusammen - rücksichtslos/umsichtig und vorsätzlich/versehentlich, um alle möglichen Szenarien zu beschreiben.
Es gibt auch eine einfachere Version, in der drei Grundtypen unterschieden werden: beabsichtigt (eine bewusste Entscheidung), unbeabsichtigt (veraltetes Design, neue Funktionen usw.) und Softwareentropie (Verschlechterung der Leistung im Laufe der Zeit). Die ersten beiden sind zwar nicht allzu gravierend, aber letztere sollten Sie in der Tat vermeiden. Sie können technische Schulden auch aufteilen in Design Schulden, Codeschulden, Dokumentationsschulden usw.
Das ist zwar eine bewusste Schuld oder eine informierte Entscheidung, wenn Sie so wollen, aber technische Schulden können auch unwissentlich oder unbeabsichtigt entstehen. Zum Beispiel ohne Anmerkungen zum Code, alte und nicht behobene Fehler oder kein automatisierter Test.
In den meisten Fällen, technische Schulden entstehen, weil ein Entwicklungsteam Termine einhalten muss. Ein weiteres Problem ergibt sich aus veraltetem Code und der Verwendung von Frameworks und Bibliotheken, die leicht veraltet sind.
Wenn ein Team kämpft mit ständigen Veränderungen, hohe Kundenerwartungen, sich ändernde Anforderungen, neue Cyberbedrohungen und Fluktuation bei Entwicklern — Teamleiter haben oft mit den daraus resultierenden technischen Schulden zu kämpfen.
Hauptgründe für technische Schulden:
Laut einem Bericht erstellt von Stepsize, technische Schulden führen nicht nur zu Qualitätsproblemen, sondern verlangsamen auch das Entwicklungstempo und wirken sich auf die Moral der Entwickler aus. Entwickler haben oft das Gefühl, dass sie gezwungen sind, neuen Funktionen Vorrang vor wichtigen Wartungsarbeiten einzuräumen.
Die rechtzeitige Reduzierung der technischen Schulden ist von entscheidender Bedeutung, da die angesammelten Code-Schulden nicht nur ein Risiko für ein Produkt selbst, sondern auch für das gesamte Unternehmen darstellen.
Wenn eine technische Schuld nicht ordnungsgemäß verwaltet wird, kann dies finanzielle Risiken wie höhere Kosten und verringerte Produktivität mit sich bringen, aber auch sicherheitsrelevante Probleme, eine verringerte Benutzerfreundlichkeit eines Produkts und den Verlust von Kunden, die mit einer Software voller Fehler unzufrieden sind.
Technische Schulden müssen rechtzeitig und wie geplant zurückgezahlt werden. Je länger das Team es verschiebt, desto schwieriger ist es, das Problem zu lösen, was zu einem Dominoeffekt führt.
Ignorierte technische Schulden können Konsequenzen haben wie:
Technische Schulden können sich auf verschiedene Weise ernsthaft negativ auf das Geschäft auswirken:
<span class="colorbox1" fs-test-element="box1"><p>Brauchst du Hilfe? Schau dir das an Ranking der führenden Unternehmen für die Modernisierung von Altsystemen</p></span>.
Es gibt verschiedene Verfahren und Techniken, um die technische Verschuldung unter Kontrolle zu halten, darunter:
Die Verwaltung technischer Schulden hat zwei Hauptaspekte — vermeiden technische Schulden, die sich nicht anhäufen — Bemühungen, sie zu identifizieren, sich ihrer bewusst zu sein und bestimmte Verfahren anzuwenden, und zurückzahlen Schulden — Priorisierung, Schaffung von Anreizen für qualitativ hochwertige Arbeit, Refactoring usw. Daher geht es bei dem Konzept nicht nur darum, die Entstehung technischer Schulden zu verhindern. Fangen Sie damit an, es zu definieren.
In einigen Fällen reicht eine Überarbeitung des Codes nicht mehr aus, da die technischen Schulden so weit eskalierten, dass es kostengünstiger und aufwandswirksamer ist, das Produkt von Grund auf neu zu schreiben. Darüber hinaus werden einige Jahrzehnte alte Technologien für Unternehmen, wie C oder .NET, alle Jahr/ein paar Jahre aktualisiert. Wenn Ihre App eine der älteren Versionen verwendet, könnte ein Upgrade auf eine neue Version Ihr Weg sein, um die technischen Schulden zu reduzieren. Im November 2021 hat Microsoft .NET 6 veröffentlicht, was entscheidende Verbesserungen mit sich brachte.
Der erste Schritt ist eine klare Definition und ein allgemeines Bewusstsein für technische Schulden. In vielen Fällen haben Programmierer und Manager ein anderes Verständnis davon, was technische Schulden sind. Oft werden Schulden, Codeänderungen und das Hinzufügen neuer Funktionen durcheinander gebracht. Teambesprechungen oder Schulungen zur Erörterung technischer Probleme sowie Prozesse ausarbeiten um damit umzugehen, sind gute Praktiken.
Trainieren Sie die kollektive Fähigkeit, technische Probleme anhand von Anzeichen wie fehlerhaftem Code, sich überschneidenden Technologien und Bugs verschiedener Bedrohungsstufen zu identifizieren. Die Definition von „erledigt“ sollte, wenn möglich, ebenfalls einstimmig verstanden werden. Unabhängig davon, ob es sich um eine geplante, unbeabsichtigte oder unvermeidliche technische Schuld handelt, sollte sich jeder der Konsequenzen bewusst sein, wenn sie aufgegeben werden.
Da das Team irgendwann zu den Aufgaben zurückkehren muss, die zur Seite gelegt wurden, ist es wichtig, sie nicht zu lange hinauszuzögern. Die Zeit und die Ressourcen, die Sie für die Nacharbeit aufwenden müssen, entsprechen den Zinsen für finanzielle Schulden.
So wie die technische Verschuldung keine eindeutigen Kennzahlen zum Nachverfolgen In diesem Fall empfehlen Experten, eine Liste mit aufgeschobenen Aufgaben zu erstellen, alle darüber zu informieren und regelmäßige Zeiten einzuplanen, um sich „abzuzahlen“.
Sie können jedoch Metriken wie eine Reihe von Fehlern oder eine Anzahl von fehlgeschlagenen CDs und CI verwenden.
Da der Agile-Ansatz dem Tracking von Natur aus sehr nahe kommt, spricht einiges dafür, dass der Agile-Ansatz bei der Bewältigung technischer Schulden hilft. Die Agile-Umgebung, in der die Arbeit häufig wiederholt wird, Funktionen und Fehlerbehebungen bereitgestellt werden, kann eine alternativer Weg um technische Schulden zu verwalten. Kleine Arbeitsschritte könnten dazu beitragen, die Schulden kontinuierlich zu bewältigen.
Es ist natürlich vernünftig, einen Rückstand an aufgeschobenen Aufgaben zu führen. Um die technischen Schulden durch den agilen Ansatz zurückzuzahlen, könnten die Definition von „erledigt“ und die Testautomatisierung auf lange Sicht ebenfalls hilfreich sein. Agile Teams nehmen an, dass die Aufgabe „erledigt“ ist, als bereit zur Veröffentlichung, was in Bezug auf technische Schulden eine strenge Überwachung bedeutet.
Ein weiterer wichtiger Aspekt der technischen Schuldenprävention — die Kommunikation — darf nicht weggelassen werden. Entwickler und Manager sollten offen und ehrlich miteinander sprechen, vor allem, weil IT-Manager auch anfällig für Fehler sind. Es ist wichtig, aufgeschobene Aufgaben in die Planung der nächsten Sprints einzubeziehen, nicht nur in einen Issue Tracker.
Sie müssen auch die Mitarbeiter motivieren, qualitativ hochwertige Arbeit aufrechtzuerhalten oder sie sogar zu belohnen. Die Messung der Anzahl der bereitgestellten Funktionen oder der behobenen Fehler ist nur ein Beispiel dafür, wie motiviert und wie man technische Probleme lösen kann. Eine solche Teamkultur wird Code-Reviews, ordentliche Tests, gegenseitige Hilfe und bewährte Verfahren fördern.
Die DevOps-Kultur und -Umgebung sind hilfreich, um technische Schulden zu vermeiden. Kontinuierliche Entwicklung, Tests und die Integration von Betrieb und Entwicklung machen es schwieriger, technische Herausforderungen zu ignorieren und Entscheidungen zu treffen und Probleme unter Berücksichtigung der Geschäftsziele zu lösen.
Um technische Schulden in einer Finanzanwendung zu verhindern, ist ein umfassender Ansatz erforderlich, der sich auf bewährte Verfahren in der Softwareentwicklung, die kontinuierliche Bewertung und die Aufrechterhaltung hoher Codequalitäts- und Sicherheitsstandards konzentriert. Hier ist ein schrittweiser Plan, der speziell auf den Finanzsektor zugeschnitten ist:
<span class="colorbox1" fs-test-element="box1"><p>Brauchst du Hilfe? Schau dir das an Ranking der besten Fintech-Softwareentwicklungsunternehmen.</p></span>
Wenn eine technische Schuld groß wird, wird es schwierig, sie zu bewältigen, verlangsamt Ihre Markteinführungszeit und wird einfach teuer.
Es gibt Kennzahlen, die Sie verfolgen können, um eine wachsende technische Verschuldung rechtzeitig zu erkennen:
Ein effektiver Ansatz für den technischen Schuldenabbau ist von entscheidender Bedeutung.
Kommen wir zum Aspekt der „Rückzahlung“. Es könnten Aktivitäten sein, die von dringenden temporären Korrekturen bis hin zur Überarbeitung der gesamten Codestruktur reichen. Das Refactoring ist eine der am häufigsten empfohlenen Methoden, um mit technischen Schulden umzugehen. Irgendwann wird es tatsächlich unvermeidlich, und wir werden gleich darauf zurückkommen.
Setzen Sie Verfahren und Zeitpläne in Gang, um zu verhindern, dass sich technische Schulden ansammeln. Ähnlich wie bei Finanzschulden müssen Sie Auszahlungszeiträume planen um die Schulden zu reduzieren, was bedeutet, dass das Team Tage oder Stunden eingeplant hat, an denen das Team die Aufräumarbeiten durchführt. Eine beliebte Praxis besteht darin, es Stück für Stück zu erledigen, anstatt zu versuchen, die gesamten Schulden auf einmal zu begleichen.
Fazit: planen, vorhersagen, bezahlen.
Eine weitere Technik für technische Schulden sind Tests und Code-Reviews. Ebenso wichtig wie das Testen für den Softwareentwicklungsprozess ist eine Kultur der Code-Reviews. Ganz gleich, wie viele und wie strenge Tests Sie durchführen, ein unabhängiger, neuer Blick kann Ihnen helfen, übersehene Tippfehler, Bugs, Randfälle usw. zu erkennen.
Ein integraler Bestandteil sind automatisierte Tests. 99% der Ingenieure sind sich einig, dass dies der beste Weg ist, um Fehler zu vermeiden. Im Wesentlichen besteht automatisiertes Testen aus einer Reihe von Einzeltests — in Form von automatisierten Skripten, um den Code zu überprüfen und das System in seiner Gesamtheit zu validieren.
Apropos, eine der universellen Regeln ist es, Legacy-Code verständlich zu machen, weil Sie Legacy-Code erhalten, egal was passiert. Organisiert, sauberer und vernehmbarer Code wird neue Entwickler nicht verblüffen, wenn sie Monate oder Jahre später dazu kommen. Da „To-Do“ eine Art Insider-Witz für Programmierer ist und verschiedene Entwickler unterschiedliche Codierungsstile haben, könnte ein Quellcodeverwaltungssystem ein praktisches Artefakt sein, das eine Historie von Änderungen und Erklärungen liefert.
Und natürlich ist es in einigen Fällen nicht erforderlich, technische Schulden zurückzuzahlen. Der Aufwand lohnt sich einfach nicht, wenn Schulden im Zusammenhang mit Prototypen, experimentellen Projekten, Systemen stehen, die kurz vor der Abschaltung stehen, oder der Migration von einem Altsystem auf ein neues.
Es ist üblich, hier oder da ein paar Codezeilen hinzuzufügen, um einen Fehler zu beheben oder eine neue ungeplante Funktion hinzuzufügen. Es sammelt sich dann an, Ihre Codebasis wird unübersichtlich und irgendwann müssen Sie den Code nur noch umstrukturieren, um ihn geordnet zu machen.
Dies wird als Refactoring bezeichnet, und Sie haben es wahrscheinlich schon oft in Bezug auf technische Schulden gesehen. In der Tat, sobald das Projekt entworfen und gestartet wurde, Refactoring wird der einzige Weg um die technische Verschuldung zu reduzieren. Es kann die Dinge beschleunigen, aber wie in jedem umfangreichen Code gibt es immer einen Ort und einen Grund für das Refactoring. Der Schlüssel liegt darin, es an den richtigen Stellen zu tun.
Oft zögern sowohl Projektmanager als auch Entwickler beim Code-Refactoring, weil es nach ihren Worten keine Fehler behebt, zu riskant ist und Zeit in Anspruch nimmt oder der vorhandene Code einwandfrei funktioniert. Bevor Sie es tun, sollten Sie also besser alle „auf dieselbe Wellenlänge“ bringen. Wenn alle den Wert des Refactorings erkennen und auch die technischen Probleme anerkennen, besteht die Chance auf ein positives Ergebnis.
Ein paar Tipps:
<span class="colorbox1" fs-test-element="box1"><p>Entdecke wie dieses Entwicklungsteam technische Probleme priorisierte und seinen Code umgestaltete ohne Unterbrechungen der Produktion und des gesamten Projekts</p></span>.
Der iterative Entwicklungsansatz, der auf der Grundlage von Agile liegt, fördert die Qualität und hilft, sie auf einem konsistenten Niveau zu halten.
Die Definition von „fertig“ als bereit zur Veröffentlichung ist eine Möglichkeit, die Codequalität zu erhöhen.
Außerdem kann ein Product Owner (oder eine andere Rolle, die bei der Planung des Arbeitsumfangs für einen bestimmten Sprint am Ball bleibt) einem Team helfen, indem Reduzierung des Umfangs der Veröffentlichung, priorisieren und dabei keine Kompromisse bei der Qualität eingehen.
Technische Schulden sind nicht unbedingt eine schlechte Sache, es muss nur eine bewusste Entscheidung sein.
Fördern Sie das Bewusstsein und die Rechenschaftspflicht der Teammitglieder in Bezug auf technische Schulden. Erstellen Sie Backlogs für alle unvollständigen oder aufgeschobenen Aufgaben, unabhängig von Art, Bedeutung oder Entwicklungsphase — priorisieren Sie sie und schließen Sie sie ab. Verwenden Sie Tools, um technische Schulden transparent zu machen und zu kontrollieren.
Und denken Sie daran, dass dies entscheidend ist, um technische Schulden zu verfolgen, ihre Rückzahlung zu planen und dies pünktlich zu erledigen.
Unser Versprechen
Brainhub unterstützt jedes Jahr Gründer:innen, Tech-Leads und Entwickler:innen bei klugen Technologieentscheidungen – mit offen geteiltem Wissen aus der Praxis.
Authors
Read next
Popular this month