Published Sep 2, 2022

Building actually maintainable software ♻️

Explore the intricacies of building maintainable software with insights from Johnny Boursiquot, Sam Boyer, and Ian Lopshire, as they delve into Go's role in manageability, the importance of team dynamics, and strategies to tackle technical debt and complex code challenges.
Episode Highlights
The Changelog logo

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