"Test Driven Development" is our natural way of working. We question, analyze and synthesize our understanding of the problem and generate code as an artifact as per need.
Insightful analysis and synthesis is difficult, hence many of us find TDD difficult.
TDD does not take extra time. Writing tests _first_ is not overhead because they force you to think through the problem and partition it properly. You’d have to do that thinking anyway.
Testing after the fact IS overhead because you did all that thinking already.