That's one of the less obvious (to me, at least) benefits of test driven development: When you're writing out your unit test, you're forced to think about how the implementation is going to work.
If you're building something that's going to be used as a foundation by lots of other things, those 5% errors add up really fast.