Software Archaeologist

Many companies have Software Architects in their dev teams these days. But I have not heard of anyone employing Software Archaeologists yet. I think this should change.

Imagine you are running a successful company. It has been 25 years, you have pivoted several times and your team have exactly zero people who have been with you for more than a decade.

Does it sound familiar? If so, you have at least some code that is doing something nobody knows what. Perhaps you have a DB table that is no longer referenced by the application. But you may be afraid to remove it. What if the table is touched by a dynamic SQL under some rare conditions? Nobody remembers what was its original intent...

Or maybe you have an old system that works perfectly. Nobody committed a line to it in years. And suddenly a bug appears and the team struggles to even build it from the source code, not to mention actually changing its behaviour.

I love those tasks. I love carefully plunging through remains of once mighty functionality trying to uncover its original purpose. Some arcane function checking the state of a variable that nobody ever sets. What were the authors thinking? Looking through the commit history in a dusty CVS backup, searching through the old builds - all of that sounds terrifying to most of my fellow engineers. But I love it.

I love how you slowly, by a tiny shred at a time, enter the state of mind that mirrors the original creators. At first you might think "This is stupid!", then you'd get to the "Well, I get the idea, but it is the worst possible implementation" and finally you'll see "Ah, that's why!" and the code glows.

Of course it may be that the restrictions of days past no longer apply and the code can be safely refactored. But in order to prove it, you would need to understand it first.

It is always faster to rewrite a system from scratch. But you always run a risk of not understanding its purpose, spending long hours debugging a cryptic issue in production and at the end replicating the original design all over again. Most of the time not even knowing that you are replicating it.

If you have code that engineers prefer not to touch, perhaps you could spend a bit more time digging through it.

Posted On


Tags: /