← All DORA Capabilities

Code Maintainability

Engineering Excellence
DIRECT DRIVER

Code maintainability determines how easily software can be understood, modified, tested, and extended over time. In long-lived systems, most effort is spent not on writing new code but on changing existing code. Poor maintainability increases delivery time, defect risk, onboarding difficulty, and operational fragility, while accumulating technical debt that slows the organisation’s ability to respond to new requirements.

High maintainability enables sustainable development, predictable change, and resilience to staff turnover. It emerges from clear design, consistent standards, effective modularity, comprehensive tests, and disciplined engineering practices. Mature organisations treat maintainability as a first-class quality attribute, actively measuring and improving it rather than accepting gradual decay. At the highest level, systems evolve continuously with minimal friction, supporting rapid innovation without compromising stability.

Fragile and Opaque Codebase
(Difficult to understand or change)

The codebase is hard to navigate, poorly structured, and risky to modify. Changes often introduce unintended side effects.


  • Inconsistent or absent coding standards
  • Complex, tightly coupled components
  • Limited documentation or outdated comments
  • Reliance on tribal knowledge
  • Duplicate logic scattered across the system
  • Fear of modifying existing code

  • Rapid accumulation of technical debt
  • Reduced development velocity
  • Increased operational risk
  • Difficulty onboarding new engineers
Basic Structural Discipline
(Some order, inconsistent quality)

Coding standards and design practices exist but are applied unevenly, leading to variable quality across the system.


  • Documented coding guidelines
  • Periodic refactoring efforts
  • Code reviews performed inconsistently
  • Modularisation attempted but incomplete
  • Documentation present but not comprehensive
  • Legacy areas significantly harder to modify

  • Manageable but growing complexity
  • Uneven productivity across teams
  • Risk of declining maintainability as system evolves
  • Difficulty sustaining quality under pressure
Maintainable by Design
(Consistent, modular, understandable code)

Maintainability is actively considered during development. Systems are structured to support safe and efficient modification.


  • Consistent coding standards applied
  • Clear modular architecture
  • Meaningful naming and documentation
  • Regular code reviews focusing on design quality
  • Refactoring integrated into normal work
  • Reduced duplication and complexity

  • Sustainable development pace
  • Reduced technical debt growth
  • Higher confidence in modifying existing code
  • Requires ongoing discipline
Measured and Optimised Maintainability
(Quality managed using evidence)

Maintainability is monitored using objective indicators, enabling proactive improvement and risk management.


  • Metrics tracked (e.g., complexity, duplication, test coverage)
  • Automated quality analysis integrated into pipelines
  • Identification of high-risk components
  • Systematic refactoring strategies
  • Architecture reviews informed by data
  • Investment prioritised based on impact

  • Efficient use of development effort
  • Reduced risk of system degradation
  • Better planning for future enhancements
  • Risk of over-reliance on metrics without context
Evolvable Software System
(Continuously adaptable architecture)

The system is designed and maintained to evolve smoothly over time. Changes can be made rapidly without destabilising the product.


  • Highly modular and loosely coupled components
  • Continuous refactoring and improvement
  • Architecture supports independent evolution of parts
  • Knowledge widely shared across teams
  • Minimal reliance on legacy constraints
  • Strong alignment between design and business needs

  • Long-term sustainability of the system
  • Ability to innovate without major rewrites
  • Reduced total cost of ownership
  • Competitive advantage through adaptability
Maintain high-quality, well-governed, interoperable data that supports reliable analytics, decision-making, and AI applications.