Today I was again researching software quality for an internal presentation and came across some ideas from Martin Fowler I found interesting. The first was from the video keynote Making Architecture Matter to OSCON in 2015. In it he explains that developer’s notions of using moral grounds for spending time to improve the maintainability of a code-base are doomed to failure.
Moral grounds, like ‘standing up for professional standards’ or being a craftsman, are doomed to failure because they’re always beaten by economic concerns. Added cost is not something the business wants however there is another argument that is economic and therefore persuasive. He talks about this in the second half of the video (linked here).
That argument is that the cost of adding features increases as cruft builds up around a project. Projects that maintain a high-level of quality do not create no cruft, just that they work to reduce it consistently so that it never gets in the way as new features are being added. Velocity is maintained for much longer than in projects with poor quality.
Martin Fowler probably describes this best in his blog which I found later, and was only published last year. I have it linked here. He explains how cruft builds up much like the dishes accumulate as you are cooking a large meal. One corollary is that removing cruft is easier when it is fresh, and will slow you down by getting in the way if left to build up.
Also worth noting is that a large software project is unlike building any physical object such as a building or a bridge because software requirements often change throughout the project. Additionally technology evolves and costs change giving yet another plane of change between the kick-off and delivery of a software project.