We were bamboozled to document and analyse
A lot of issues in software creation and maintenance arise from lack of analysis of the problem at hand and out-of-date or missing documentation for what the software is expected to do. Test-driven development (TDD) promises to improve the quality and maintainability of produced software.
This discipline dictates to write minimal small failing tests, always first thing to have. Then, adding as little production code as possible to make these tests pass. Finally, cleaning up the result by removing duplication is in order.
By how does TDD plan to achieve the “good” properties of the resulting product? By bamboozling poor programmers into writing the documentation and analyzing the problems they are working on.
- Writing tests is actually writing documentation. The documentation in its best form — dynamically verifiable and thus guaranteed to be up-to-date.
- Refactoring is actually analysis. It is done in its best form — with results reflected in code and reusable for future readers.