Programming is to driving like unit tests are to seat belts. - Tom Bryan % Of course you can have it both ways. What you do is write an automated test case for every bug that you fix in your code. When you write the new version it has to pass the old test suite, then you've got new code and all the experience from the old code. - John G. Cumming % ...you cannot rely on static checking to verify program correctness, and therefore it is unreasonable to obscure the meaning of your program with high-ceremony syntax under the illusion that it is somehow safer. For full safety, you'll always have to have run-time tests, and you'll always have to write your own tests. - Bruce Eckel, March 2004 % Comprehensive unit testing means never having to rely on a programmer who says "Trust me". - Mark Pilgrim, Dive Into Python % You do have an automated test suite, right? And it does run periodically (daily or upon every check-in) in a continuous integration system, right? And you have everything set up so that you're notified by email or RSS feeds when something fails, right? And you fix failures quickly so that everything turns back to green, because you know that too much red, too often, leads to broken windows and bit rot, right? - Grig Gheorghiu, February 2007 % I'm always telling people about how Python just gets out of your way and lets you focus on the problem, but I didn't even realize that it was unittest that was in my way before. Heck, I just thought unit testing was hard. I'll bet that that's what happens with Java programmers, too. They probably just think programming is hard. :) - Phillip J. Eby, dirtSimple.org, November 2004 % A good analogy to test-driven development is scaffolding in a building construction. It's not something you're going to deliver to your custom- er, but it's an absolute necessity, it needs some time commitment to set it up, and you wouldn't dream of doing any complex building without it. - Noel Llopis, Sean Houghton, March 2006