What are Common Traits of Maintainable Software?
Reading time: ~ 2 minutes
A few months ago, we launched the Maintainable Software Podcast. On Maintainable, host Robby Russell discusses with guests how to overcome issues that are often associated with technical debt and legacy code. We have since released over 20 episodes of Maintainable and have heard from over 20 wonderful guests with unique perspectives.
On Maintainable, there is one question that our host, Robby Russell asks almost every guest: what constitutes a Maintainable software codebase? Our fascinating group of guests work at such places as Lyft, Github, and Bugsnag, so they offer some very interesting insights. They’ve had a variety of experiences working with and overcoming technical debt. Here’s what a few guests had to say about Maintainable codebases.
Pim Elshoff – Software Developer at Procurious
“A well-maintained codebase just radiates business language. To me, that’s the most important aspect. That the code actually reflects what the software is all about”
Matt Weagle – Engineering Manager at Lyft
“For me, it’s really more goal-based. What properties does the codebase have to have such that the team can effectively make forward progress and it doesn’t suffer from some of those technical debt things that are inevitable when you have codebases.”
Liran Haimovitch – Co-Founder of Rookout
“The two most important traits of a maintainable software codebase are readability and stability. Even better if you already have tests in place.”
Jonathan Cutrell – Host of the Developer Tea Podcast
“I think the first thing I look for for maintainability is testing … Testing, and having a consistent way of testing, is critical to maintainability. If you have to go and read every line of code to know how that software works, that’s problematic. You don’t want to leave any black holes for future developers to fall into. You don’t want to leave dead code.”
Liz Keogh – Lean & Agile Coach and Trainer
“I look for tests primarily. If it’s got TDD (Test Driven Development), it’s very hard to do TDD on a codebase which doesn’t have separation of concerns or nice readable interfaces. I find, especially if you’re doing tests first, it tends to drive out really nice, readable code. So I look for code that’s easy to use and code that’s understandable.”
Bryan Liles – Senior Staff Engineer at VMWare
“Maintainable means that you can change it and have confidence in changes. It’s beyond having tests. It means we can add a feature or remove a feature and we don’t have to rewrite the entire application.”
If you found these answers to be interesting, you'd probably enjoy listening to Maintainable! You can listen to it on our website, on Apple podcasts, or just search "Maintainable" wherever you stream your podcasts.
What does Maintainable software mean to you? Let us know in the comments of this post or tweet us @_maintainable.