The goal of TestDrivenDevelopment is EmergentBehavior. Suppose you write a new test case that requests behavior completely orthogonal to your existing behavior. The fewer code edits required to pass that case, the more EM you have achieved. ''Huh? The goal of TestDrivenDevelopment is better code.'' Better code... * Exhibits the OpenClosedPrinciple * Obeys DontRepeatYourself * Does not create ten thousand bugs just because you add one more feature. Put them, together, and code is Emergent when it's better. You can easily add new features without refactoring old ones or causing bugs, or making too many edits, or adding too much new code. And the fewer edits required to add that feature, the more Emergent the code is. Respect StandingAndRunningRigging. But beware the HyperBug...