One view of the goal of Test Driven Development (TDD) is that it is specification and not validation meaning that it is a certain way to think through requirements or design before writing the functional code implying that TDD is both an important agile requirement and agile design technique. Another view of the goal of TDD is that it is a programming technique where the objective is to write clean code that works.
Discuss both these views and provide your opinion on which view do you support with arguments.