Code maintainability refers to the ease with which a software system or application can be modified, updated, and extended over time. It is a key aspect of software quality because it affects the ability of developers to make changes to the codebase without introducing errors or introducing unintended consequences.
There are several factors that contribute to code maintainability, including:
What percentage of your codebase is searchable?
What is the median lead time to make a change to part of the codebase to which I don’t have write access?
What percentage of our codebase is duplicate code? What percentage is unused?
What percentage of applications aren’t using the most recent stable version of all the libraries they consume?
How many different versions of each library do we have in production? What’s the median? What is a good goal? How many versions are more than 1 year old?
How often do teams upgrade their libraries? How long does it take to do this?
Adoption Expectations
Practices | MVP | MVP+ |
---|---|---|
Common Code Style |
+ |
+ |
Static Code Analysis |
+ |
+ |
Common Commit Message |
+ |
+ |
Dependency Management |
|
+ |
Documentation as Code |
|
+ |
Technical Debt Backlog |
|
+
|
Tools
Functionality | Tool Name |
---|---|
Version Control System |
Git |
Version Control Collaboration |
Azure DevOps Repo, Bitbucket |
Documentation notation |
.md notation |
Static code analysis |
SonarQube, Code Linters |
Roles
Name | Responsibilities |
---|---|
Scrum Master/Team Coach |
Coach and support usage of the best engineering practices to support code maintainability |
Product Owner |
Support continuous process and code improvement initiatives and priorities those related activities |
Developer |
Adopt and apply code styles and code quality standards |
Build Engineer |
Integrate automated code quality gates |
Security Engineer |
Propose and adopt new automated security quality solutio |