Don't Live with Broken Windows
A quote from Andy and Dave, "In a very structured environment, people tend to abdicate responsibility". Every bug reported to production support represents an abdication of responsibility.
The Java compiler identifies problems with syntax. Wouldn't it be nice if there was a way to identify problems in the business logic and application behavior in the same way? Unit tests do this. In Java, unit tests are Java methods annotated with @Test.
Toyota's quality stems from each employee knowing it is his or her responsibility to stop the production line when he finds a problem. Software developers automate that manual task by including unit tests in the automated build.
Software that "can't be changed" has calcified and petrified. It is no longer software. It is hardware. Code that has unit test coverage is easy to change.
Don't write unit tests? Congratulations, you're a hardware developer.
There is a new age of software development upon us. Its single, defining characteristic is unit tests.
How much hardware are you going to write today?