Technische Schulden sind vielfältig. Oft anzutreffend sind Codewiederholungen bzw. schlechte Wiederverwendung. Ein zentrales Problem wird mehrfach gelöst, was zu weiteren Problemen führt. Und die Wurzel des Übels liegt kaum im Wettbewerb zwischen den Entwicklern. Die relevanten Gründe zu kennen hilft, diese konkrete Schuld zu vermeiden.
Es ist wieder passiert – und zum Glück ist es gleich beim Review aufgefallen:
«Warum hast du das nochmals anders implementiert? Das gibt es doch schon!»
In der Softwareentwicklung ist das ein typisches Szenario. Man hat sich mit einem generellen Problem stundenlang auseinandergesetzt und eine grossartige, wiederverwendbare Lösung erarbeitet und implementiert. Jetzt entdeckt man, dass diese nicht verwendet wird und eine andere Lösung entstanden ist.
Codewiederholung ist eine Hydra
Erstmal bedeutet für ein einzelnes, zentrales Problem mehrfach erstellter Code weitere Probleme. So suchen etwa andere nach der Implementation zum Problem und nehmen die erstbeste, ohne zu wissen, dass noch eine zweite vorhanden wäre. Welche Implementation sie finden und nutzen, ist von ihrer Suche abhängig.
Ändert sich ausserdem etwas am Problem oder deren Lösung, so wird eventuell nur eine Implementation angepasst. Die zweite Implementation verhält sich ab dieser geänderten Situation nicht mehr wie gewünscht und damit falsch. Zu erkennen, dass mehr als eine Umsetzung für das gleiche vorhanden ist, ist schwierig und braucht viel Wissen und Erfahrung.
Beide genannten Folgeprobleme treten schnell gemeinsam auf und multiplizieren sich. Manifestieren tun sie sich beim Kunden, was zu Fehlermeldungen aus dem laufenden System führt. Diese zu beheben, führt schliesslich dazu, dass man bei der richtig implementierten, aber für die Fehlersuche falschen Implementation landet. Es braucht Überwindung, bis man bei der Fehlersuche weiter vorne anfängt, um zur entsprechenden falschen Implementation zu gelangen.
Technische Schuld
Codewiederholungen oder fehlende Wiederverwendung sind in der Softwarearchitektur und im Deutschen eine Technische Schuld. Es gibt viele weitere Technische Schulden wie schlecht geführte Dokumentation, fehlende Coding Standards oder der Verzicht auf automatisierte Tests.
Natürlich haben Technische Schulden Ursachen wie fehlendes technisches Wissen, schlechte Kommunikation oder fachlichen Druck. Ebenso wirken sich alle auf die Wartbarkeit aus oder führen dazu, dass Meilensteine nicht eingehalten werden können. Doch am Ende sind sie einfach eine Verschwendung von Zeit und Geld. Vor allem in Anbetracht dessen, dass sie sich gefühlt mit jeder Stunde weiter verankern und schwieriger abzubauen sind.
Generell können Technische Schulden mit steigender Komplexität und fortschreitender Zeit nicht verhindert werden. Aber eine Investition in die Vermeidung lohnt sich immer.
Prävention
Codewiederholungen entstehen nicht, weil andere Entwickelnde es besser wissen und sich ein Denkmal setzen möchten. Sie kommen vor, weil in der zunehmend komplexeren Software die guten Lösungen untergehen und das Wissen darüber weder kommuniziert, noch dokumentiert wurde.
Eine zentrale, gut strukturierte technische Dokumentation muss das A und O sein, um Codewiederholungen zu vermeiden. Des Weiteren muss die Dokumentation allen Entwickelnden bekannt sein und sie müssen stets darauf zugreifen können.
Um das Bewusstsein weiter zu steigern und das Risiko für Codewiederholungen zu minimieren, sollte das ganze Entwicklungsteam regelmässig geschult und über zentrale Problematiken informiert werden.
Wer diese meist unliebsamen Tätigkeiten von Anfang an durchführt, kann sich dagegen viel grössere, unangenehmere Tätigkeiten sparen: nämlich im ganzen System verankerte Codewiederholungen herauszuflechten.
Weiterführende Links zum Thema: