What if someone argued that one of your basic conceptions about how to develop software was misguided? What would it take to change your mind? That’s essentially the dilemma faced by advocates of test-driven development (TDD). The TDD paradigm argues that the basic cycle of developing code and then testing it to make sure it does what it’s supposed to do-something drilled into most of us from the time we began learning software development- isn’t the most effective approach. TDD replaces the traditional “code then test” cycle. First, you develop test cases for a small increment of functionality; then you write code that makes those tests run correctly. After each increment, you refactor the code to maintain code quality.