Nowadays everyone knows that TDD asks us to create unit tests first before the production code. But this rule is only the beginning.
First Law: You should not write the production code until you have created a failure unit test.
Second Law: You should not write more than one unit test than is necessary to fail, and not to complicate is a failure.
Third law: you must not write any other production code needed to apply the current failure test.