Realität ist eine Ansammlung von häßlichen Ausnahmen, die alle mit modelliert sein wollen
Ich möchte ja niemanden demoralisieren oder verängstigen – besonders nicht jene jungen Kollegen, die mit großem Enthusiasmus am Arbeitsplatz nebenan mit mir im gleichen (Scrum-)Team sind, wo wir gemeinsam Software entwickeln.
Kristian Köhntopp benennt aber ein paar frustrierende Zusammenhänge, die man nicht los wird, indem man sie leugnet (wobei ich seinem Appell an die „Einsicht ins Notwendige“ nicht folgen mag, und das hier auch nicht zitiere – aber man sollte seinen Text doch besser komplett lesen).
Bei der Ausbildung von Software-Ingenieuren […] machen wir jungen Leuten falsche Hoffnungen.[…]
[…]
Junger Informatiker, hoffnungsvolle Uni-Abgängerin! Hier ist, was Dich in Deinem Beruf erwartet: Du wirst mit altem Code zu tun haben, der offensichtliche Schwächen hat. Du wirst mit Werkzeugen und Umgebungen arbeiten müssen, die Deiner Meinung nach nicht Stand der Technik sind. Eine Deiner Hauptaufgaben wird sein, den alten Code zu refaktorieren. Dabei wird die Zeit nicht reichen, diese Aufgabe zu Ende zu führen. Du wirst die Versuchung verspüren, den alten Kram wegzuwerfen und auf der grünen Wiese neu anzufangen.
Die schlechte Nachricht: Weder wirst Du jemals auf der grünen Wiese neu anfangen dürfen, noch würde es viel helfen, das zu tun. Der komplizierte Code-Wirrwarr, mit dem Du es zu tun hast, ist häßlich und besteht aus einem Haufen ekeliger Sonderfälle. Wenn Du auf der grünen Wiese neu anfängst, wirst Du ein Design haben, daß die Hauptfälle in einem schönen Modell abdeckt, und an den Sonderfällen umfassend versagt.
Du wirst sie schrittweise nachrüsten wollen, und Du endest mit einem Drahtverhau von vergleichbarer Komplexität zu dem, den Du jetzt hast. Das ist normal. Denn der Code, mit dem Du es zu tun hast, wurde wahrscheinlich nicht von sabbernden Idioten geschrieben, sondern von Leuten wie Dir, und er war am Anfang genau wie Dein Code: Klar und einfach. Dann traf er auf eine Realität, die alles ist, aber weder klar noch einfach. Heute ist er ein halbwegs korrektes Modell der Realität. Und weit mehr als die Hälfte des unübersichtlichen Designs mit dem Du es zu tun hast, ist wahrscheinlich nicht auf die Unfähigkeit Deiner Vorgänger zurück zu führen, sondern auf die Tatsache, daß die Realität nun einmal leider eine Ansammlung von häßlichen Ausnahmen ist, die alle mit modelliert sein wollen.
[Nachtrag:]
Aus einem Kommentar zum oben verlinkten Eintrag:
Es hilft übrigens ungemein, wenn man auch als Entwickler gut in Kommunikation ist und Kosten von Fehlentwicklungen deutlich machen kann. In Wahrheit halte ich das für die schlechte Nachricht für Leute, die glauben, sie können ihre sozialen Schwierigkeiten in einer Informatik-Karriere verstecken.