Technische Schulden – Ist eine Neuentwicklung sinnvoll?

Heute möchte ich über ein Beispiel aus der Praxis berichten, das uns in der Form in den letzten 15 Jahren regelmäßig begegnet ist. Es geht im Kern um die Frage, ob man an einer in die Jahre gekommenen Technologie (Programmierung) festhält und sie weiterentwickelt, oder ob man einen harten Cut wagt und die Online Plattform auf neue technische Beine stellt.

Wir bekommen immer mal wieder Anfragen von Unternehmen, die seit über 10-15 Jahren im Internet mit ihrem Business aktiv sind, also funktionierende Geschäftsmodelle etabliert haben und diese erfolgreich betreiben.

Die Anfragen sind sehr unterschiedlich.

Die häufigsten 3 Gründe

  1. Kompletter Relaunch der Plattform, Shop bzw. des Webprojektes
  2. Neues (Responsive) Design für Smartphones, Tablets & Co.
  3. Weiterentwicklungen oder Funktionserweiterungen da der bisherige Programmierer nicht mehr erreichbar ist

Alle Anfragen haben eines gemeinsam. Sie sind gewachsene Projekte, sprich sie wurden vor langer Zeit initial erstellt und dann weiterentwickelt. Selten wurde dabei irgendetwas nachhaltig dokumentiert. In so gut wie allen Fällen wurden die Projekte von Einzelpersonen (Freelancern) entwickelt, die im Laufe der Zeit „abhanden“ gekommen sind oder sich und damit auch das Projekt technologisch nicht weiterentwickelt haben.

Bist auf den ersten Grund (kompletter Relaunch) sollte sich der Kunde der Risiken bewusst sein, die er eingeht, wenn er Änderungen und Erweiterungen an einer technisch veralteten Projekt vornehmen lassen möchte. Weiterentwicklung heisst immer, dass man mit einer Unbekannten arbeitet. Den Quellcode der bisherigen Programmierung kann man als neue Agentur nicht Zeile für Zeile nachlesen und zu 100% einschätzen auf die Möglichkeit zukünftiger Inkonsistenzen.

Übersetzt heisst das: Ändern Sie an einer Stelle der Programmierung etwas, kann es Auswirkungen an einer ganz anderen Stelle der Webseite haben, so dass an dieser anderen Stelle etwas nicht mehr funktioniert. Programmierer nennen das etwas abwertend Spaghetticode (siehe Wikipedia). In den Anfängen des Internet und bei den ersten Projekten war das mangels Erfahrungen durchaus üblich. Die Softwareentwicklung hat sich dahingehend allerdings sehr stark weiterentwickelt. Und genau das ist das „Problem“. Hält man an der technologischen Basis einer Plattform zu lange fest und will sie nun mit modernen Standards der Softwareentwicklung weiterentwickeln, kommt es zwangsläufig zu Komplikationen. Diese Komplikation sind in den meisten Fällen lösbar, aber mit sehr viel Mehraufwand. Dieser Mehraufwand kann als „technische Schulden“ bezeichnet werden, die sich von nun an summieren.

Als Projektinhaber muss ich mich nun fragen, ob es wirtschaftlicher ist, die bisherige Plattform mit der veralteten Technologie  weiterzuführen und regelmässig mehr in den Betrieb und Unterhalt zu investieren, oder ob es wirtschaftlich sinnvoller ist zu re-investieren in einen Relaunch mit neuster Technologie. Diese Entscheidung ist nicht einfach und sollte mit der Agentur intensiv diskutiert werden.

Ein Beispiel zum Verständnis:

Stellen Sie sich vor Sie haben eine VW Käfer Bj. 1970 und überlegen diesen weiterzufahren, nur dass Sie gern eine neue Karosserie (Hülle) wie beim aktuellen VW Golf hätten. Sie können nun in einen neuen Wagen investieren und ihn kaufen, oder Sie tauschen nur die Karosserie (Hülle) aus und belassen die Technik darunter. Es ist ziemlich deutlich, dass Ihre Unterhaltskosten in der Zukunft vermutlich mit der alten Technik immer höher sein werden als beim Neuwagen.

Ich will nicht behaupten, dass ein kompletter Relaunch immer der beste Weg ist, allerdings steigt nur selten von Programmier-Oldtimern der Wert mit den Jahren.

Wie können also mögliche Handlungsoptionen aussehen?

Eine Variante ist, eine neue Software im Sinne eines MVP (Minimum Value Product– Wikipedia) aufzubauen. In Kurzform heißt das, man definiert die absoluten Kernfunktionalitäten und programmiert diese zum Start. Anschließend erweitert man die Funktionen auf Basis der Erfahrungen. Es gibt bei uns einen weiteren Beitrag zu dem Thema:

Bootstrapping-Konzept: Schnell viel erreichen bei der Webentwicklung

Eine andere Option wäre eine sogenannte „weiche“ oder „softe“ Migration, sprich man entwickelt parallel zum laufenden System einzelne Module oder Komponenten neu und integriert diese nach und nach. Dieser Ansatz birgt gewisse Risiken die sich um die Kompatibilität zwischen „alt“ und „neu“ ranken.

Fazit

Wichtig ist mir die Sensibilisierung für die möglichen Probleme die bei der Softwareentwicklung auftauchen können, wenn man veraltete technologische Plattformen weiterentwickelt mit modernen Methoden der Softwareentwicklung. Es gibt in den wenigsten Fällen einfache Antworten und nur eine Schwarz/Weiss Entscheidung. Wichtig ist die Erfahrung der Unternehmen in der Softwareentwicklung und natürlich die jeweilige Applikation.

Gerade bei Projekten und Entscheidungen dieser Art ist eine langjährige Erfahrung zwingend erforderlich.