I'm putting here some of the things Sandro said in his 3-part session on Outside-In TDD (see the github repo here), and highlights some parts that are significant to me.
TDD does not lead to a good design if you don't know what a good design looks like.
The way I code in this video is the way I normally code but not the way I normally teach.
Some of you will notice that I skip the traditional refactoring steps a few times and I do quite a lot of design up-front (or "just in time design" as I prefer to call it) without much feedback from my code.