Tuesday, January 28, 2020

Saying goodbye to some legacy code

When I joined Devex a bit more than six years ago most of the code base was in one large monolith. This monolith was based on Ruby On Rails and was responsible for delivering devex.com.
urn

This part was called "neo". I guess because it was a rewrite of a previous Java
version. I am not sure if it was a reference to Matrix or the Greek meaning. 

There were already some initiatives in place rewriting parts of it in different services, but the monolith was always looming in the background.
Any changes to it required increasing amount of work. It was like someone tried to put the definition of technical code into code.

I generally against rewrites, they tend to last for years and you loose a lot of knowledge that is baked into the original. I also have nothing against Monoliths. So I tried refreshing the code base by upgrading the dependencies, getting the few tests to run and making local development easier with Vagrant. I realized fairly early that this was not going to work.

So we went with a gradual rewrite. Whenever we worked on part of the site we migrated it to our new architecture (Also a Monolith or at least a Duolith).

Now six years later we finally switched off the remainders of "neo" and I thought we should celebrate in style.

Legacy code is after all something that successfully supported you for a long time and enabled you to start with something fresh. Devex wouldn't be were we are without "neo".
Cremation - ignore the dog

So we staged a proper funeral, where everybody who wanted said some words. We also collected printouts of the most annoying bits of code, some very dated looking screenshots and some email and chat conversations from the very beginning.



This was my eulogy:
Today we say goodbye to maybe the best known system at Devex.+
Neo - from Greek meaning young or new, which he was neither.
Or from the Matrix character, handsome, powerful and agile, which he was also not.

We all have memories of him that will stay with us for a long time.
We laughed about his quirks.
He had amazing depths, which brought us sometimes close to tears trying to understand him.

His heritage will live forever in our data structures.
Finally we burned the printouts, collected them in an urn (aka hummus glass) and cheered with Cava while chatting about the "good" old days.

I hope you can give your legacy code also the sendoff they deserve.

The End

Update (March 2020)

We got a present from our CEO while he was visiting the Barcelona Devex office this week....

RIP Neo Mug







No comments:

Post a Comment