In TV, there is a series named restaurant tester. Each week, the tester tests selected restaurants, complains about the bad food and finally tries with his magnificient gastronomic knowledge to improve the service of the poor restaurant. As a first step, he often recommends more hygiene, neatness and cleanliness. This often upsets the cooks, because they were hoping for useful tips, tricks and recipes. Everybody knows that a kitchen should be clean. Both parties are a bit right. On the one hand, even the cleanest kitchen will not help to produce tasty and delicious meals. On the other hand, of course one can also cook in dirty kitchens, but in the long run, it is not recommendable to have undetected cockroaches in the kitchen.
In the software world it is similar, of course one can write programs without tests, but in the long run, it is not recommendable to have undetected bugs in the house. Automated tests are a good step towards cleaner code. Maybe neatness and cleanliness are as important in software engineering as in cooking. Certainly a little discipline is needed in both fields to get rid of bugs, and if you clean up a little bit each time, the big mess can be avoided: it is recommendable to add tests as fast as possible (or even before code is written), and it is useful to check in your code a little bit cleaner than when you checked it out.