Today I was again researching software quality and came across some very interesting ideas from Martin Fowler. The first was the video keynote Making Architecture Matter to OSCON in 2015. Here he explains that developer’s notions of a moral grounds for expending extra time to improve maintainability of a code-base are doomed to failure.
They’re 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 includes economics and is persuasive. He talks about this at the end of the video (you really should watch it).
That argument is that the cost of adding features increases as cruft builds up around a project. Unlike a physical object such as a building or a bridge, software requirements often change throughout the project. Additionally technology evolves and costs change giving another plane of change between the kick-off and delivery of a software project.
Accordingly the economic and persuasive argument is that 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 maintain for much longer than in projects with poor quality.
Martin Fowler probably describes this best in his blog which I found later today, and was only published last year. I have it linked here. He explains how cruft builds up much like when you are cooking. Removing that cruft is easier when it is fresh, but will slow you down by getting in the way if you leave it to build up.