Code that doesn’t have tests rots. It rots because we don’t feel confident to touch it, we’re afraid to break the “working” parts. Code rotting means that it doesn’t improve, staying the way we first wrote it. I’ll be the first to admit that whenever I write code, it comes in its most ugly form. It may not look ugly immediately after I wrote it, but if I wait a couple of days (or a couple of hours), I know I will find many ways to improve it. Without tests I can rely either on the automatic capabilities of refactoring tools, or pure guts (read: stupidity).
Source: Everyday Unit Testing, Gil Zilberfeld, https://leanpub.com/everydayunittesting