Building actually maintainable software ♻️

Topics covered
Popular Clips
Episode Highlights
Defining Maintainability
In the realm of software development, defining maintainability is crucial yet often subjective. raises an interesting point about the distinction between maintainable and good code, suggesting that the best code is easy to delete rather than extend 1. emphasizes that maintainability is context-dependent, much like the term "performant," and relies heavily on an organization's willingness to allocate resources for code improvement 2. This episode of Go Time, led by , explores these nuances, highlighting the importance of long-term software maintenance over short-term innovation 3.
The best code is code that is easy to delete, not necessarily easy to extend.
---
Understanding these definitions helps in setting clear criteria for maintainability, which is essential for sustainable software development.
Technical Debt
Managing technical debt is a pivotal aspect of maintaining software over time. discusses the necessity of distinguishing between "good" and "bad" technical debt, emphasizing that some debt is acceptable if it leads to beneficial trade-offs 4. warns that ignoring technical debt can lead to unmaintainable software, where multiple solutions to the same problem coexist, complicating future development 5. also highlights the importance of maintenance engineering, suggesting it should be prioritized over product engineering to ensure long-term software viability 6.
Technical debt is part of the currency you trade for features, but it must be managed to avoid long-term issues.
---
Effective management of technical debt is essential for sustaining software functionality and performance.
Unmaintainable Code
Identifying unmaintainable code involves recognizing certain detrimental elements and symptoms. suggests that unmaintainable software often lacks clear definitions and is difficult to test, making it challenging to ensure correctness 7. adds that unclear scope and design can lead to divergent interpretations of what the software should do, resulting in long-term maintainability issues 8. notes the importance of balancing initial development pressures with the need for maintainable code, suggesting that these tensions exist from the start 9.
Untestable code is unmaintainable because you can't verify its correctness.
---
Recognizing these elements early can help developers create more maintainable software from the outset.
Related Episodes


Build software that lasts! (Interview)
Answers 383 questions

Reproducible builds and secure software
Answers 383 questions

Back to Agile's basics
Answers 383 questions

Actual(ly) opening up
Answers 383 questions

Why smart engineers write bad code
Answers 383 questions

What it takes to scale engineering
Answers 383 questions

Building software for yourself
Answers 383 questions

BONUS - Sustain Open Source Software
Answers 383 questions

ANTHOLOGY — Maintaining maintainers
Answers 383 questions

Discovering discovery coding (Friends)
Answers 383 questions

Practical ways to solve hard problems
Answers 383 questions

Conversations about sustaining open source
Answers 383 questions

Maintainer week!
Answers 383 questions
Practices of reliable software design (News)
Answers 383 questions

Good tech debt
Answers 383 questions
