Sustainable growth is the ability to keep evolving a software project without development speed collapsing or regressions multiplying. Unchecked software entropy increases disorder, complexity, and the cost of change; continuous cleaning, refactoring, and effective tests counter that decline. section 1.2 section 1.6
Use these rules to protect growth over time:
- Treat tests as a safety net against regressions, not as proof that the design is good. section 1.6
- Keep tests whose benefits outweigh their costs; remove tests with negative net value. section 1.6
- Use difficult unit testing as a warning about tight coupling, but do not treat easy testing as a quality guarantee. section 1.2
Growth dynamics
A project without tests may advance quickly at first, then slow as architectural problems and existing code accumulate. Bad tests can follow the same path, eventually producing stagnation or frequent regressions. section 1.2 section 1.6
Figure 1.1. The difference in growth dynamics between projects with and without tests. A project without tests has a head start but quickly slows down to the point that it’s hard to make any progress.
Compare the early speed and later stagnation of projects with and without tests. section 1.2
