Here’s one thing test driven development solves that has nothing to do with testing - empathetic code. Soon as you force people to write testable pieces of code, by definition you just forced them to write a good interface that considers how others will/could use it (in this case the ‘other’ is a test suite).
When that’s not in place, people often create selfish code where only their own needs are addressed.
When that’s not in place, people often create selfish code where only their own needs are addressed.