I've talked about testability before, but I recently had an experience that reinforced for me how improving testability directly improves the product. I am working with my good friend and mentor John Gossman to write a Visio-to-XAML converter. Our first thought was to write a Visio add-in that yanked data out of a drawing and wrote it to XAML. Of course we immediately started thinking about how we were going to test our code. "If the parsers just take strings it would make testing them really easy", one of us said. "That eliminates our reliance on Visio." "That means the converter could run on a server - that could be super useful!"

Mark that - considering testability drove us to a decision that makes the product usable in a whole set of scenarios we had not originally thought of. We might perhaps have ended up at this point eventually, but testability drove us there early. I see this happen all the time. Far from being some "test thing" that sucks resources away from "the real work", testability directly contributes to making the product better.

Testing. It doesn't make the products you use; it makes the products you use better.

*** Want a fun job on a great team? I need a tester! Interested? Let's talk: Michael dot J dot Hunter at microsoft dot com. Great coding skills required.