Woher kommt Legacy Code? Was ist Legacy Code überhaupt? Warum sollte er uns kümmern? Können wir etwas gegen ihn machen? Und können wir verhindern, dass er aufs Neue entsteht?

Lasst uns eins klarstellen: Legacy Code wird nicht geschrieben. Wenn wir Code schreiben, wissen wir warum wir ihn schreiben und wie er funktioniert. Erst wenn dieses Wissen verloren geht – sei es weil wir vergessen oder weil Entwickler ihren Job wechseln und niemand ausreichend Dokumentation und Tests hinterlassen hat –, dann wird Code zur Legacy.

Legacy Code ist Code, der für uns wichtig ist, d.h. er ist profitabel. Andernfalls könnten wir ihn einfach löschen. Legacy Code löst ein komplexes Problem. Andernfalls könnten wir ihn einfach nachvollziehen oder neu schreiben. Legacy Code ist außerdem schwer zu verändern, weil wir nicht wissen wie er funktioniert und welche Bedingungen er erfüllen muss. Mit jeder Änderung laufen wir Gefahr den Code selbst kaputt zu machen oder anderen Code, der darauf aufbaut.

Legacy Code ist profitabler Code, den zu verändern wir uns nicht trauen.

Es ist unerheblich wessen Code zu Legacy Code wird (wer unschuldig ist, der werfe den ersten Stein…) oder wann es passiert ist (gestern war das alles noch Green-Field Code!). Es geht darum, dass wir Legacy Code haben und mit ihm fertig werden müssen. Wir müssen das Durcheinander aufräumen und zwar auf eine Art und Weise, die uns weder unseren Verstand, noch unsere Jobs kostet.

Im normalen Programmierer-Alltag haben wir nicht die Zeit um zu lernen wie wir mit Legacy Code fertig werden. Deshalb brauchen wir einen geschützte Umgebung um den korrekten und letztendlich auch schnellen Umgang mit Legacy Code zu erlernen.

Wir wäre es, wenn wir uns einen Tag zurückziehen um gezielt den Umgang mit Legacy Code zu trainieren?

Wie wäre es mit einem Legacy Code Retreat?

Die Idee des Legacy Code Retreats ist einfach: Wir finden eine Gruppe von interessierten Programmierern, nehmen ein vertrackt fieses Stückchen Software (verfügbar in 26 Programmiersprachen) und arbeiten uns durch verschiedene Designrettungs- und -verbesserungstechniken, sowie einige Tricks zum Erstellen eines ersten Test-Sicherheitsnetzes für Legacy Code. Das Hauptziel dieser Veranstaltung ist das Erlernen dieser Techniken in einer risikofreien Umgebung, bevor sie im Kampf gegen den alltäglichen Legacy-Albtraum zum Einsatz kommen.

Konkrete Themen für das Retreat sind beispielsweise:

  • Die Golden Master oder Characterization Test Technik.
  • Der Einsatz von Subklassen zum Erstellen von Tests für einzelne Legacy Code Bestandteile.
  • Der Einsatz von Mocking zum Ausklammern einzelner Legacy Code Bestandteile zu Testzwecken.
  • Das Extrahieren von Seiteneffekt-freien Funktionen zur Isolation einzelner Legacy Code Bestandteile.
  • Das Reduzieren von Duplikation zur Code-Vereinfachung.

Legacy Code Retreat light

Innerhalb dieses 90-Minuten-Workshops werde ich das Konzept des Legacy Code Retreats kurz vorstellen und wir werden in 1-2 Sessions ein Mini-Retreat durchführen. Hierfür sollten die Teilnehmer einen eigenen Laptop mit einer Entwicklungsumgebung für eine Programmiersprache in der unser Testsubjekt „Trivia“ verfügbar ist mitbringen. Gearbeitet wird immer zu zweit an einem Laptop.

Sven Amann TU Darmstadt

Sven Amann studierte Informatik an der TU Darmstadt und der Pontifícia Universidade Católica do Rio de Janeiro. Bereits in seinem Studium setzte er sich intensiv mit Software Engineering, agilen Methoden und Projektmanagement auseinander. Zeitgleich sammelte er praktische Erfahrung als Werkstudent bei Software AG und als selbstständiger Softwareentwickler u.A. für die GFTN e.V. und die Laborgenossenschaft Darmstadt e.G.. Seit 2013 promoviert er am Fachgebiet Softwaretechnik der TU Darmstadt zum Thema “API-Misuse Detection”. Seit 2014 wird seine Arbeit vom Führungskräfteentwicklungsprogramm Software Campus gefördert. Im Rahmen seiner Initiative „Let‘s Developer“ veröffentlicht er seit 2014 Materialien über Softwareentwicklung und Software Craftsmenship auf LetsDeveloper.com. Anfang 2017 gründete er AcademicsCode.com, mit dem Ziel Softwareentwicklung aus einem akademischen Blickwinkel zu diskutieren.