What does extreme maintainability in software mean? What are the specific steps that your company needs to take to reach the goal of extreme maintainability?
In short, extreme maintainability means that you will be able to take a simple, small requirement from concept to production quickly, cheaply, and safely. You will be able to get working changes to your software in days or hours on average, not weeks or months or years.
There are four basic requirements to developing code with Extreme Maintainability:
- Your code must be easy to change.
- Your testing process must be fast
- Your deployment process must be fast
- Your people must work together quickly and efficiently
Let’s examine some specific ways to get apply each of these four basic requirements to your current development environment.
First, your code must be easy to change. This requires implementing good code practices. Practices focused on maintainability. Approaches such as Don’t Repeat Yourself (DRY), Modular Code, Legibility and Testable code. A focus on Simplicity, adherence to Standards and Collective ownership move teams towards high-quality, maintainable code. Paired Test-Driven Development is the best method we’ve seen to move teams towards maintainable code.
Second, your code must test quickly. Automated testing is truly the only way to do this. We will explain automated testing and how it works. Our discussion on testing will also explain what can be automated, and different kinds of testing. The testing process should also ensure that the new changes work as expected and does not break already existing code.This process should be completed in minutes, not weeks.
Third, your code must be fast to deploy. A six week deployment pipeline should be as acceptable as a six week production outage. Burn down all your build procedures “on accident”, and see what other choices you have. The modern term for build processes that run at appropriate speeds is Continuous Integration /Continuous Deployment (CI/CD). A good standard is: you should be able to move your product from written to tested and in production inside of fifteen minutes, with “canary blue-green”, and “fast rollback” capability.
Fourth, in order to get through the first three steps with maximum speed and efficiency your people must work together well. All of the members of the project need to work together both inside and outside of the team structure. The tech and business sides of the company must form collaborative teams in order to promote efficient change. And the product teams should be able to respond to changing customer needs with whatever urgency is appropriate, even when the change crosses multiple teams.