The document discusses test driven development (TDD) and how it can improve software design. It provides examples of unit testing a bowling game score calculation to demonstrate TDD principles like single responsibility, open/closed design. It shows how TDD reveals design flaws and drives the developers to refactor and improve the design. The document advocates using TDD to design in small increments and defer large upfront design decisions until absolutely needed.