Moin Moin!
Vor ungefähr drei Jahren hab ich einen neuen Arbeitgeber gefunden. Mein neuer Job sollte Pflege und Weiterentwicklung eines alten Systems sein, nichts weltbewegendes. Kleiner Haken an der Sache war, dass ich die Laufzeitumgebung bisher nicht kannte. Aber alles kein großes Ding, "yet another C derivate", ein paar Mausschubser-Tools, eine bekannte relationale Datenbank dahinter, und viel Sourcecode von $VORGÄNGER.
$VORGÄNGER war noch etwa einen Monat parallel zu mir beschäftigt, eigentlich als Zeit für die Übergabe geplant. Nur leider hat sich $VORGÄNGER dermaßen in völlig unrealistische Terminzusagen verstrickt, dass er den ganzen Monat lang von früh morgens bis spät in die Nacht gecodet hat, um irgendeinen Termin zu halten. Eine "eingearbeiteter" $KOLLEGE sollte mir das System erklären. Schade nur, dass $KOLLEGE davon noch weniger Ahnung hatte. De facto gab es keine brauchbare Übergabe.
Der Monat war weg, $VORGÄNGER auch, $KOLLEGE hat keinen Plan, aber die Terminzusagen blieben. Glücklicherweise hab ich schon beim Vorstellungsgespräch oft und deutlich genug gesagt, dass es etwas dauern kann, sich in ein altes System einzuarbeiten. Termine wurden verschoben, ich hab mit kleinen Dingen angefangen und feststellen müssen, dass $VORGÄNGER von Software-Entwicklung exakt NULL Plan hat. Modularität, Kapselung, Funktionen, Schleifen, Fehlerprüfungen - alles Fremdworte für $VORGÄNGER. Ebenso wie Quelltextverwaltung, Issue-Tracking. Von Pflichtenheften oder gar Spezifikationen hat $VORGÄNGER auch noch nie etwas gehört. Aber von Copy&Paste. Man kann tatsächlich riesige Programme mit unglaublich vielen Funktionen fast ausschließlich durch Copy&Paste aus einer riesigen, gescheiterten Projektruine bauen. Nicht schmerzfrei, definitiv nicht schön, aber $VORGÄNGER war in der Hinsicht komplett schmerzbefreit und bar jeglicher Esthetik.
Es kam wie es kommen mußte, man konnte am System fast nichts ändern, ohne dass die Änderungen sich wie ein Tsunami auf ein Kartenhaus auswirkten. Termine waren völlig unhaltbar, die Code-Basis konnte man eigentlich nur in ein Stahlfass einschweißen, mit Beton auffüllen und möglichst tief verbuddeln. $KOLLEGE war keine Hilfe, eher die kleinere Version von $VORGÄNGER. Das führte irgendwann zu Diskussionen in immer hochrangiger besetzten Meetings, bei denen von mir immer wieder die selbe Aussage kam: "Aufwand schätzen unmöglich, Code von $VORGÄNGER ist unbrauchbar und unwartbar, eigentlich müßte man das komplett neu schreiben". Das wollte keiner hören, ich sei "zu akademisch".
Irgendwann nahm das Mutterunternehmen uns das Projekt weg, suchte und verschliss einen externen Dienstleister, wandte sich dann in ziemlicher Verzweiflung an den Hersteller der Laufzeitumgebung, und werkelte mit dem über zwei Jahre an dem Projekt. Neulich wurde uns der aktuelle Zwischenstand präsentiert. Wenig optische Änderungen, ein paar neue Funktionen, hinter den Kulissen offensichtlich ein wenig aufgeräumt. Und folgende wunderschöne Aussage, die ganz stolz von den hochrangigen Leuten gemacht wurde:
"Das ist fast alles neu geschrieben worden, da ist kein Code mehr von $VORGÄNGER drin."
Ach, war das schön! Das "ich hab's doch gleich gesagt" kam mir nicht über die Lipppen, aber die Kollegen aus den früheren Diskussionsrunden wußten ganz genau, was mir in dem Moment durch den Kopf ging. Das lag vielleicht auch am extrem breiten Grinsen. ;-)
Alexander
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".