Advanced TDD
Once you start to get good at Test-Driven Development (TDD), you begin to learn the nuances of the discipline such as the fact that tests and code grow in very opposite directions. As the tests get more specific, the code gets more generic.