The Classic TDD Approach
The classic TDD approach revolves around the idea of creating messy code and constantly refactoring it to clean it up. The mess in classic TDD is critical, since it provides feedback for refactoring the design.
The ideas of implementing the simplest thing that can work, and deferring important design decisions, are at the heart of classic TDD. The refactoring phase in classic TDD is vital; hence, good refactoring skills are key to its success. So having an understanding about code smells, the SOLID principles, and cohesion/coupling and connascence is a major advantage in changing the shape of the code before the mess turns into code that's too difficult to refactor.
The importance of the mess is highlighted by the Rule of Three, which stops us from premature refactors, maximizing the feedback to find the right pattern. The secret to this style of TDD lies in having the right amount of mess to provide feedback for design decisions, but not so much...