
2011/1/6 Arnaud Bailly
I would supplement this excellent list of advices with an emphasis on the first one: Test-Driven Development is *not* testing, TDD is a *design* process. Like you said, it is a discipline of thought that forces you first to express your intent with a test, second to write the simplest thing that can possibly succeed, third to remove duplication and refactor your code.
Change T in TDD from Test to Type and you still get a valid description like "It is a discipline of thought that forces you first to express your intent with a type, second to write the simplest thing that can possibly succeed, third to remove duplication and refactor your code." As for me, I prefer testing in the largest possible. I write functions, experiment with them in REPL, combine them and check combination result in REPL and when I cannot specify experiment in one line of ghci, I write test.