I think (I hope!) we all agree that we should spend some time thinking and that once we start writing code, we learn things that contradict the ideas we had when thinking. Now we come down to the question of how much time to think before writing code, which I genuinely believe amounts to a matter of style, and I don't dictate style.
Programmers will always make some design decisions before writing the first line of code. If you put two programmers together, one will want to start writing code before the other. It becomes a negotiation.
I teach TDD and evolutionary design through refactoring in order to show programmers that they don't have to do it all in their heads. How much they subsequently choose to do in their heads and through code becomes their choice.