I just had an awesome comment made on my unit testing post by Tom Opgenorth. It was so good that I though it deserves a post in its own right!! Here it is:
In trying to explain the “why” of TDD, I like the example of paying cash vs borrowing money.
Using TDD is paying cash. You shell out the time (money) now, and all is good. Your account is clear.
Without TDD it is like borrowing money to buy something. You get what you want but there will come a time when you have to settle your debt, usually with interest.
From a code perspective, this interest is usurious: wasted time spent digging through a debugger, hoping that a breakpoint was set a the right place in code so you can see the error happen.
Awesome!! Thanks Tom.