This document discusses Test Driven Development (TDD). TDD involves writing a failing test, writing the code to make it pass, then writing another failing test. This leads to an application design that is leaner and simpler, with interfaces better designed from the user's perspective. Some key points:
- TDD breaks complexity into small, simple steps and thinks from the outside in from the user's point of view.
- TDD results in tests that act as documentation and bugs being identified and fixed sooner.
- Challenges of TDD include it being hard work and some things not lending themselves to automated tests.