Schulden sind manchmal ok. Auch wenn gerade Finanzkrise und Pleiten die Welt zeichnen, geht es mir jedoch nicht um das Thema Geld Schulden (da gibt es haufenweise Wege um schulden frei zu werden, oder unter Zuhilfenahme eines Schuldenberaters raus aus den Geld Schulden zu kommen), es geht um Software-Schulden.
Ähnlich wie bei Geld, dass man sich per Kredit leiht, gibt es auch bei der Softwareentwicklung Momente, in denen Schulden aufgenommen werden. Und auch hier werden Zinsen fällig.Im ideal Fall verläuft die Entwicklung einer Software so, dass es ein schönes Design gibt, um ein Produkt in eine Software-Gesamtarchitektur zu integrieren. Normalerweise gibt es hier noch keine Probleme – es sei denn, man befindet sich in einem Projekt, in dem der Auftraggeber „lieber anfangen als Papier produzieren“ möchte. Hiervon sollte man im besten Interesse sowohl des Auftraggebers, als auch einem selber Abstand nehmen. (Es wird sich sicherlich Tochter/Sohn eines Bekannten, oder ein Student finden, der eher zu den Vorstellungen eines solchen Projektes passt.)

Doch wann entstehen die Schulden – und wie wird man sie wieder los? Erstmal gilt es die Wahrnehmung zu schaffen: Meist wird ein Feature als Erweiterung oder Änderung (changerequest) gewünscht, das entweder etwas generischer und flexibel umgesetzt werden kann, oder als „auf die schnelle“ als Hack. Ist davon auszugehen, dass das Feature nicht weiterentwickelt oder als Grundlage für weitere Funktionalität genutzt wird, oder auf absehbare Zeit wieder ausgebaut wird, spricht gegen so einen Hack nichts.
„Requirements always change“ – und der kurfristige Hack von heute ist ein fundamentales Feature von morgen. Wird hier erst spät agiert, sind bereits hohe Zinsen aufgelaufen. Der Auftraggeber versteht nicht, wieso die Erweiterungen für die Software immer teurer werden, und erst recht möchte er nicht investieren, um Geld für ein vorhandenes Feature („tut doch“) auszugeben, bei dem sich für den Kunden garnichts ändert.

Refactoring oder re-engineering sind Wege mit so einer Altlast in Form von Software-Schulden umzugehen. Reagiert man zu spät, kommt der Zeitpunkt von dem man oft hört: „Rewrite from Scratch“, die Software wird von Grund auf neu gebaut. Extrem teuer, zeitaufwendig – Wettbewerbsvorteil für die Konkurrenz. (Auch populäre Seiten wie Slashdot haben gleiches bereits durchgemacht, siehe Slashcode)

Und wie bekommt man den Kunden dazu, mitzuziehen? Erstmal ist wichtig, dass man sich der Schulden bewußt ist. Dumping Angebote bei Ausschreibungen, nur um einen Auftrag zu bekommen sollte man für sich selber unbedingt vermeiden. Vernünftig kalkulierte Angebote, Transparenz und aktive Kommunikation mit dem Kunden sind hier entscheidend. Möchte der Kunde „Schulden“ machen, dann ist das ok, wenn er diese Entscheidung auch informiert und bewußt trifft. Auf diese Weise gibt es die Basis für eine langfristige und produktive Zusammenarbeit, und wenig Verdruss.