- Reduced Time in Up-Front Design
- Refactoring Versus Up-Front Design
- Reduced Time Producing Non-Executable Documentation
- Reduced Time in Reading/Updating Materials
- Less Time Wasted Reading Inaccurate Materials
- Reduced Debugging Time
- Reduced Number of Defects
- Reduced "Mulling" Time
- Reduced Amount of Code and Increased Reuse
- In Conclusion
Reduced "Mulling" Time
TDD is a cyclical practice. Execute the cycle over and over, and you’ll fall into a predictable rhythm. You’ll also learn how to think about design incrementally, as opposed to having to do a large up-front detailed UML sketch. And you’ll learn how to tackle problems in small, small steps.
These small steps can allow you to make progress on a problem even if you don’t have a complete solution for it up front. You can progress incrementally through simpler cases, getting a better understanding of the problem with each small piece that you tackle successfully. You can represent unknowns with stubs, and later figure out how to fill in these holes as you understand the problem better.
The amount of time I feel compelled to go off into a dark cube and think about a problem has been minimal since I’ve been doing TDD.