I fully agree on the "removing fear" aspect, since this was exactly one of the Aha! moments from my first serious experiment with TDD. Some months ago I wrote an "automator" for one of the more painful, manual processes I have to perform from time to time at work (build & package software releases for embedded targets).
I knew the Perl code would grow to several hundreds of lines, and the finished, automated process simeply HAD to work EVERY time, so I figured this would be a good time to get down and dirty with TDD. Yes, it took longer, but time and time again I made small improvements to my system while developing, and my tests proved me wrong or right.
But the best part was running the thing live for the first time: I just *knew* it would work! I had tested the darn thing hundreds of times already! It was almost an anti-climax....
No, I haven't discoverd any bugs yet, after 6 months of use. This is second benefit in my mind, the first one is the knowledge that I can (still) change things without fearing side-effects.
Thanks for a nice post, straight to the point :-)
]]>