People who practice test-driven development are doing design. It's important - actually, it's critical - to understand that. If you fall into the trap of thinking that TDD is about unit testing, then you'll probably miss the point.
Too many teams believe they're doing TDD, but are actually just writing unit tests for code they've already written, or writing one unit test and then writing 500 lines of production code before they move on to the next unit test.
Absolutely. Applications that have unit tests written before the actual code tend to have looser coupling, cleaner design and concentrate purely on what is required (rather than evolutionary dead ends).