Legacy Is Sexy
Find the English version below
Hi ,
Unpopular Opinion Warnung: Legacy ist sexy!
Um ehrlich zu sein - ich habe das nicht immer so gesehen.
Dir ging es bestimmt ähnlich.
Mein erstes (großes) professionelle Projekt war eine Legacy Anwendung
So alt war sie eigentlich gar nicht. Wenn ich mich richtig erinnere, dann hatte sie nicht mal ein Jahrzehnt auf dem Buckel.
Es fühlte sich aber viel älter an.
Dies lag hauptsächlich an den vielen unerfahrenen Entwicklern, die an der Anwendung arbeiteten.
Ich war selbst noch grün hinter den Ohren.
Das zentrale Architekturpattern: Die Gott-Klasse
Es war schrecklich damit zu arbeiten. Änderungen dauerten lange. Es gab allerlei Seiteneffekte. Die Testabdeckung war schlecht. Die wenigen Tests waren stark mit dem Produktivcode verdrahtet.
Ich war nicht unglücklich
Aber ich habe immer wieder mit Neid auf die Teams geschaut, die auf einer grünen Wiese angefangen haben.
Wie schön es doch wäre alles besser zu machen.
Ich wäre so produktiv. Ich würde alles perfekt machen. Ich könnte jede Anforderung umsetzen.
Wie sehr sich meine Perspektive seit dem verändert hat
Später folgte eine mehrjährige Phase in der ich nur in neuen Projekten war. Was ich mir immer gewünscht habe.
Und meine Erwartungen wurden erstmal erfüllt.
Ich konnte frei sein. All meine Wünsche erfüllen. Ich war schnell. Es gab noch keine User, um die ich mich kümmern musste.
Datenbank Migrationen - konnten weggelassen werden, die Datenbank kann immer platt gemacht werden.
API Changes - einfach machen, konsumiert ja noch niemand.
Einen weiteren Service einführen - kein Problem, ich brauche noch keine Zeit ins Monitoring stecken.
Aber dann?
Der Return of Investment ist nicht gut genug. Eine zeitlang probierten wir das Ruder herum zu reißen. Dann zog das Management den Stecker.
Also, auf zum nächsten Projekt
Wieder Greenfield. Es lief genauso. Der ROI war nicht gut genug. Abgesetzt.
Und wieder von vorne. Wir bauen etwas. Abgesetzt.
Und wieder. Und wieder.
Greenfield ist schön. Aber noch besser ist etwas zu bauen, dass benutzt wird. Legacy.
Legacy Applikationen sind legacy aus einem guten Grund.
Sie sind erfolgreich.
Es gibt User.
Es bietet einen Wert.
Es nützt Menschen.
Legacy ist sexy
Ja, jedes Projekt entwickelt technische Schuld. Manche mehr. Manche weniger. Aber technische Schuld bedeutet, dass etwas gebaut wurde. Etwas das genutzt wird. Die größte technische Schuld kommt in Zeiten in denen es gut läuft. In denen das Geschäft erfolgreich ist. In denen schnelle Entscheidungen notwendig sind. In denen das meiste aus dem Produkt herausgeholt wird.
Wer an einer Legacy Anwendung arbeiten darf, darf an etwas erfolgreichem arbeiten.
Und das ist ein schönes Gefühl
Für mich ist es heute motivierender eine sinnvolle Aufgabe zu haben. Die technische Schuld kann abgebaut werden. Immer. Aber ein Produkt kann nicht immer erfolgreich gemacht werden. Manchmal passt es einfach nicht.
Freue dich, wenn du an Legacy arbeitest. Du machst etwas wertvolles!
ps. Laut dem aktuellen Developer Ecosystem Report von IntelliJ arbeiten 50% aller Entwickler noch mit Java 8. Du bist nicht allein 😉
Rule the Backend,
~ Marcus
Hi ,
Unpopular Opinion Warning: Legacy is Sexy!
To be honest - I didn't always see it that way.
You probably felt similar.
My first (big) professional project was a legacy application
It wasn't actually that old. If I remember correctly, it wasn't even a decade old.
But it felt much older.
This was mainly due to the many inexperienced developers who worked on the application.
I was green behind the ears as well.
The central architectural pattern: The God Class
It was terrible to work with. Changes took a long time. There were all sorts of side effects. Test coverage was poor. The few tests were tightly integrated with the production code.
I was not unhappy
But I kept looking with envy at the teams that started on a green field.
How nice it would be to do everything better.
I would be so productive. I would make everything perfect. I could implement every requirement.
How much my perspective has changed since then
Later followed a multi-year phase in which I was only in new projects. Just what I always wanted.
And my expectations were initially met.
I could be free. Fulfill all my wishes. I was fast. There were no users to worry about.
Database migrations - could be omitted, the database can always be flattened.
API changes - just do it, nobody is consuming it yet.
Introducing another service - no problem, I don't need to invest time in monitoring yet.
But then?
The return on investment was not good enough. For a while, we tried to turn things around. Then management pulled the plug.
So, on to the next project
Again Greenfield. It went the same way. The ROI was not good enough. Discontinued.
And again from the beginning. We build something. Discontinued.
And again. And again.
Greenfield is beautiful. But it's even better to build something that is used. Legacy.
Legacy applications are legacy for a good reason.
They are successful.
They have users.
They provide value.
They benefit people.
Legacy is Sexy
Yes, every project develops technical debt. Some more, some less. But technical debt means that something was built. Something that is used. The greatest technical debt comes in times when things are going well. When business is successful. When quick decisions are necessary. When the most is being made of the product.
Those who get to work on a legacy application get to work on something successful.
And that's a nice feeling
For me, it's more motivating today to have a meaningful task. Technical debt can always be reduced. But a product cannot always be made successful. Sometimes it just doesn't fit.
Be happy when you work on legacy. You are doing something valuable!
ps. According to the current Developer Ecosystem Report by IntelliJ, 50% of all developers are still working with Java 8. You're not alone 😉
Rule the Backend,
~ Marcus