The tests and code you write represent costly investments. In an ideal world, you would assume that all developers have the training needed, and more importantly the desire, to effectively write quality code. Yet a glance at just about any existing system suggests otherwise.
In this book, I’ve tried to make the case that most systems are a mess because programmers don’t have a mechanism (such as TDD) to actively ensure the code doesn’t degrade. But other reasons abound.
Lack of education: Too many developers don’t understand core design principles and constructs for coding well. Some think they already know enough and aren’t willing to accept that there’s more to learn.
Lack of concern: Too many developers don’t care that they ...