«Die Software ist zu langsam und nicht skalierbar. Es wäre besser, das Ganze von Grund auf neu zu programmieren. Dies gibt uns einen besseren Ausgangspunkt.»
Kennen auch Sie solche Aussagen? Leider kommen sie sehr häufig vor, denn es gibt viele Entwickler, die lieber neuen Code schreiben, als bisherigen Code zu lesen und anschliessend weiterzuentwickeln. Die Gründe dafür sind vielfältig. Oft jedoch liegt es daran, dass Entwickler den alten Code für ein Chaos halten und ihn zu lesen, viel Aufwand benötigt.
Meiner Meinung nach ist dies aber nicht die beste Lösung.
Vorteile der bestehenden Software
Die Vorstellung, dass der neue Code besser ist als der alte, ist in den meisten Fällen absurd. Denn die «alte» Version wurde bereits von Kunden verwendet und abermals von Entwicklern getestet. Viele Fehler, welche während der Laufzeit der Applikation schon aufgetaucht sind, konnten wahrscheinlich bereits mit viel Aufwand behoben werden.
Sollte ich zum Beispiel den bestehenden Code wegwerfen und bei Null anfangen, würde ich all diese Denkarbeit, welche hinter der Software steht, wegwerfen. All die gesammelten Lösungen zu den unterschiedlichsten Problemen würde man verwerfen.
Ein Beispiel
Netscape Navigator – erstmals 1994 veröffentlicht – war jahrelang der beliebteste Internet-Browser. Erst 1998 tauchte der Microsoft Internet Explorer auf. Folglich entschied sich Netscape ihre ganze Software von Grund auf neu zu schreiben, um der Konkurrenz folgen zu können. Das Entwicklerteam fokussierte sich ab dann hauptsächlich auf den neuen Code und vernachlässigte den alten.
Der Browser von Microsoft wurde stets beliebter und Netscape konnte ihren Marktanteil nicht halten. Die Niederlage ist wahrscheinlich nicht allein auf die Neukonzeptionierung zurückzuführen. Aber das Neu-Schreiben der Software hat sicherlich dazu beigetragen. Das Endergebnis war der Untergang eines Unternehmens, welches einst sehr erfolgreich war. Siehe zu diesem Beispiel auch diesen Blogeintrag.
Der bessere Weg
Die bessere Lösung besteht in den meisten Fällen darin, weiter am existierenden Code zu arbeiten. Wenn Sie feststellen, dass einige Teile Ihres Codes ineffizient oder unlesbar sind, rate ich Ihnen, diese Teile Schritt für Schritt zu verbessern – statt sie komplett zu verwerfen. Im Verlauf der Jahre besteht das Entwicklerteam wahrscheinlich nicht mehr aus denjenigen Personen, welche an der ersten Version gearbeitet haben. Schliesslich hat das aktuelle Team wohl nicht wirklich «mehr Erfahrung». Demzufolge besteht die Gefahr, dass alte Fehler wiederholt oder neue Probleme auftauchen würden, die in der ursprünglichen Version nicht vorhanden waren.
Wenn Sie allerdings merken, dass es grosse Unterschiede zwischen der aktuellen Version und der besten Version Ihres Produkts gibt, dann würde ich empfehlen, eine neue Software zu bauen, jedoch ohne die bisherige wegzuwerfen! So bleiben die bisherigen Learnings erhalten.
Fazit
Obwohl Renuo sich von «to renew» ableitet, beurteilen wir jedes Projekt individuell und entscheiden uns je nachdem fürs Neu-Schreiben oder Weiterentwickeln eines bisherigen Codes. In Fällen wie bei Uber zum Beispiel, macht es durchaus Sinn, eine Applikation neu zu konstruieren. Ich rate Ihnen allerdings, dass Sie eine Neukonzeption immer erst sorgfältig evaluieren und dabei nicht vergessen, dass bereits einige Unternehmen an diesem Schritt gescheitert sind.