When discussing TDD with my friends and coworkers, often heatedly, an interesting pattern has appeared. All of the arguments about expensive refactoring and the need for up-front design are never really challenged. Instead, what has always been the final refuge for those arguing for TDD is that it makes development fun again.
It makes testing fun, and that is what really matters. There is no need to invoke questionable rationalizations. If TDD makes coding and especially testing fun that in and of itself makes it all worth it. Finding joy in your work is what counts. Turning a traditionally boring task, like testing, into something cerebral and exciting, that’s all the justification I need.
The way I see it, no matter what field you work in, the boring tasks tend to be the ones you skip or skimp on. Most developers I know seem to suffer from the delusion that testing is boring. It isn’t, not by a long shot. What we need is a way to show how testing can be fun. Maybe with TDD we’ll have developers testing the shit out of their code, no guns to heads, no superhuman discipline needed. Because it’s fun.
Source: TDD’s Redeeming Quality, http://blog.olafssons.com/post/TDD%27s%20Redeeming%20Quality