Abstract :
As developers, we\´re expected to turn out implementations proven by tests that we or others have written. Doing otherwise is considered unprofessional. But does code that\´s designed to be testable differ fundamentally from code that isn\´t? What does it mean to design for test? Advocates of test-driven development (TDD) write tests before implementing any other code. They take to heart Tom Peters\´ credo, "Test fast, fail fast, adjust fast." Testing guides their design as they implement in short, rapid-fire "write test code - fail the test - write enough code to pass - then pass the test" cycles. Regardless of whether you adhere to TDD design rhythms, writing unit tests forces you to articulate pesky edge cases and clean up your design.