>Automated tests are not the only way to write code with less bugs.
It's absolutely a prerequisite.
Humans can model the behavior of small parts of a code base without the aid of automation, but once a code base grows beyond a certain size, you either need to have automation to have a handle on the code or let it congeal (which ends up accelerating the creation of technical debt).
There are bad tests just like there is bad code. All of the rules for good code apply to tests too.
It's absolutely a prerequisite.
Humans can model the behavior of small parts of a code base without the aid of automation, but once a code base grows beyond a certain size, you either need to have automation to have a handle on the code or let it congeal (which ends up accelerating the creation of technical debt).
There are bad tests just like there is bad code. All of the rules for good code apply to tests too.