Dealing With Codebase Horror

By Steve Popoola

Elevator Pitch

Have you ever taken on a dev role only to be given access to the codebase and got the shock of your life when you saw the code? This talk is about my experience navigating through messy codebases and how I was able to bring some order into the chaos of a badly implemented codebase.

Description

A codebase is like a living breathing organism. It goes through so many forms as it changes hands from one team of developers to another. The business is not interested in the quality of the codebase as long as the features work until it no longer works.

As an experienced developer how do you handle a messy codebase you have inherited either from a previous team or external vendor? Do you just tell the business the codebase has to be ‘binned’ and re-written? What if the business tells you, ‘Oh it works, there is nothing wrong with it’. Do you take up the challenge, roll up your sleeves and start building on a faulty and flakey structure or do you give up and walk away? There has to be another way! This is what I intend to speak about based on my experience.

In this talk, I will share my experience with dealing with various codebases and how I was able to navigate my way through to shape the codebase into something better that other developers were able to build upon with confidence.

Notes

Each codebase challenge will have its own peculiar solution but ultimately certain best practices and adherence to standard coding convention goes a long way to help but this is only the first step. The second step is how to convey to the business what needs to be done and ensure the business is carried along in any significant changes that may be required to improve the quality of the codebase.

There are situations where things are so bad that a complete re-write is the only way out but in other cases, a change in underlying infrastructure might just be enough to stem the tide pending when other concrete measures can be put in place.

In the last couple of years, I have worked in different dev teams with different styles and culture and worked on platforms with varied implemented architectural designs. This has helped me understand the various issues that plague codebases as they evolve.