Reinventing ist nicht Rewriting

Vor ca. 3 Monaten habe ich auf der Devoxx und auf der W-Jax einen Talk über Legacy Code gehalten. Dabei kam auch das Thema Rewriting, also die Software mit modernerer Architektur und stabilerem Code neu zu schreiben, zur Sprache. Ich habe dabei die Meinung vetreten, ein Rewrite sei keine Lösung für schwer wartbaren Quellcode. Vielmehr sollte man die Codebasis langsam erneuern… Bis ich kürzlich den Artikel “Starting over Again” von Jason Fried (37signals) gelesen habe. Jason schreibt, dass die Konzepte des neuen aber noch nicht erschienenen Basecamp so revolutionär sind, dass  diese nicht in die 10 Jahre alte Codebase gepasst hätten. Hier hat sich 37signals also für ein Rewrite ihres erfolgreichen Task-Managers entschieden.

ReWriting

Bisher gab es für mich nur wenige Ausnahmen, die einen Rewrite einer Software gerechtfertigt haben.

  • die Programmiersprache ist so alt, dass meine keine Entwickler bekommt, die diese noch programmieren wollen / können
  • es handelt sich um eine kleine, sehr verschmutzt Codebase oder um einen kleinen unabhängigen Teil eines Programms (was ja schon eher ein Refactoring wäre)
Will man wirklich eine große Applikation neu schreiben, sollte man dies an der bestehenden Codebasis durchführen und langsam Teile des Programmes durch die neu geschriebenen austauschen. Natürlich vorausgesetzt, der Code lässt ein solches Vorgehen zu, sonst müsste man vorher doch noch die bestehende Basis erst mal refactorfähig machen.

ReInventing

Passt allerdings das neue Konzept so gar nicht in das Design des alten, ist ein Rewrite meiner Meinung nach auch sinnvoll. Wenn man sich das mobile Betriebssystem “Windows Mobile 6.5” von Microsoft ansieht und es mit dem seinerzeit auf dem Markt vorhandenen iOS vergleicht, war ein Rewrite sehr sinnvoll. Windows Phone 7 wurde entwickelt und kann jetzt auch wirklich mit dem Finger bedient werden (=neues Konzept). Ich schätze einmal, dass das nächste Jahr zeigen wird, ob Microsofts Entscheidung ein neues Betriebssystem zu entwickeln, nicht zu spät gekommen ist.

Allerdings würde ich das auch nicht unter das Thema Rewrite fallen lassen. Die Konzepte hinter Windows Phone 7 sind komplett andere, als bei seinem Vorgänger. Nichts wurde übernommen, sondern neu erfunden. Eine Art Reinvent also!

Fazit

Reinventing ist meiner Meinung nach nicht Rewriting. Wenn man also eine neue revolutionäre Idee für ein Produkt hat, macht es manchmal Sinn von vorne anzufangen, als die neuen Konzepte irgendwie in die alten reinzupressen. Das ist natürlich immer eine Gradwanderung: Wann handelt es sich wirklich um ein Reinvent?

Ich würde mich sehr über Feedback zu diesem Thema freuen!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s