Technische Schulden

In diesem Blogbeitrag findest du eine Zusammenfassung eines Kurzvortrags von mir. Ich hatte damals das Thema Technische Schulden gewählt, da mir Qualität sehr wichtig ist und dieses Thema meiner Meinung nach ein wesentlicher Beitrag für ein erfolgreiches Produkt darstellt. Daher habe ich recherchiert, wie der richtige Umgang mit technischen Schulden aussehen könnte.

Was sind technische Schulden?

Die technische Schuld ist eine Metapher, die bereits 1992 von Ward Cunningham geprägt wurde und stellt eine Aussage über einen zusätzlichen Aufwand dar, den man für Änderungen und Erweiterungen an einer schlecht geschriebener Software im Vergleich zu einer gut geschriebener Software eingeplant müsste. Jede Technische Schuld macht gemäß Tom Popendieck den Code schwerer zu ändern und hat somit direkten Einfluss auf die Wartbarkeit.

Im Alltag hat sich schnell ein solcher Fehler eingeschlichen, indem eine Codestelle schnell kopiert wird oder die Dokumentation des Codes vernachlässigt wird, da man es erst später machen will. Auch eine in die Jahre gekommene Architektur oder ein unzureichender Test führt zu einer technischen Schuld.

Was sind die langfristigen Auswirkungen?

Folgende Auswirkungen entstehen in den verschiedenen Bereichen, wenn technischen Schulden ignoriert oder immer nur Symptome bekämpft werden:

Was sind die Ursachen von technischen Schulden?

Martin Fowler stellt in seinem Technical Debt Quadranten eine Kategorisierung zur Verfügung, in dem ersichtlich wird, dass technischen Schulden entweder Absichtlich (Deliberate) oder Unbeabsichtigt (Inadvertent) entstehen. Zusätzlich unterscheidet er, ob dies Leichtsinnig (Reckless) oder Bewusst (Prudent) geschehen ist.

Technische Schulden

Absichtlich und Leichtsinnig

Dies beruht meistens aufgrund einer Managemententscheidung und entspricht nicht dem agilen Qualitätsverständnis. Einen Umbau zur Sicherstellung der Qualität von solchen „Quick & Dirty“ Lösungen werden auch nicht in Zukunft eingeplant, sondern werden ggf. erst wieder relevant, wenn sich der Kunde beschwert.

Absichtlich und Bewusst

Die Entscheidung wird bewusst getroffen, um als Business Driver auf dem Markt agieren zu können. Die entsprechenden Risiken sind bekannt und es ist eingeplant, die technischen Schulden hier wieder zu reduzieren.

Erfolgt dies allerdings nicht, ist die technische Schuld irgendwann im ersten Quadranten angesiedelt.

Unbeabsichtigt und Leichtsinnig

Aufgrund von fehlendem Wissen können in diesem Fall unbewusst technischen Schulden entstehen. Durch Code Review, Coding Guidelines oder der Definition of Done in Scrum und entsprechenden Schulungen kann hier vorgebeugt werden.

Unbeabsichtigt und Bewusst

Zum Zeitpunkt der Entwicklung entsprach die Umsetzung dem damaligen Wissens- und Technikstand. Da eine Weiterentwicklung sowohl in der Technik als auch Wissen vorhanden ist, würde unter Umständen die Umsetzung nun anders aussehen. Durch ein nachträgliches Refactoring kann hier eine Verbesserung des Codes erzielt werden.

Wie soll man mit technischen Schulden nun umgehen?

Technische Schulden

1) Strategische Entscheidungen

Auf Basis einer Produkt-Portfolio Matrix, in der der Erfüllungsgrad der bereits umgesetzten und die zukünftigen Anforderungen gegenübergestellt wird, kann eine Entscheidung getroffen werden, wie mit der technischen Schuld umgegangen werden soll.

2) Visualisierung

Es stehen zahlreiche Tools zur Verfügung, mit dessen Hilfe eine statische Code Analyse durchgeführt werden kann. Es können auf Basis verschiedener Qualitätsmetriken wie potentielle Bugs, nicht eingehaltene Coding Standards, Doppelter Code, Fehlende Dokumentation, Unit test und Testabdeckung eine ungefähre Abschätzung berechnet werden. Somit können technische Schulden kontinuierlich überwacht werden, so dass entsprechende Maßnahmen abgeleitet werden können.

Beispiele: ReSharper, SonarQube, Checkstyle

Zusätzlich sollten technische Schulden ebenfalls in einem globalen Backlog in einem Issue Tracker System wie JIRA mit einem eigenen Issue Type gepflegt werden. Zusätzlich ist es sinnvoll eine technische Schuld mit einem „Pain factor“ zu versehen, mit Hilfe diesem eine Aussage getroffen werden kann, wie schmerzhalft es ist, wenn die technische Schuld nicht behoben wird.

3) Scrum

Scrum bietet einen guten Rahmen, dass das Scrum Team mit technischen Schulden umgehen kann:

Fazit

Es ist somit sehr gut möglich, vor allem mit einer agilen Vorgehensweise, technische Schulden in den Griff zu bekommen. Es stehen unterschiedliche Methoden zur Verfügung, so dass technische Schulden beherrschbar werden. Qualität bleibt einfach der Stellhebel dafür.

Link-Tip: Kennst du schon meine Agile Lernreise zum professionellen Software Entwickler?

Noch kein Beitrag vorhanden

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Viel Spaß beim Lesen des butterflying Blogs