With TDD, the inner programming loop is:
1. form a belief about requirements
2. write a test to express that belief
3. write code to make that test pass
Without TDD, the loop is:
1. form a belief about requirements
2. write code to express that belief
3. futz around with manual testing, REPLs, and after-the-fact testing until you're sufficiently happy that the code actually does express that belief
And in my experience, the former loop is faster at producing working code.