Tuesday, April 22, 2008 12:48 AM
Wouldn't it be great if we could just utilize some new methodology or tool out there and instantly insert quality directly into our software? Like, just add *whatever* and *poof* - you get quality!
Of course, that isn't reality. TDD will not *guarantee* quality. NHibernate will not guarantee quality. NUnit will not, neither will BDD, or DDD, or any other buzzword that is happening currently.
The output of software may be something automating a process, but the process of software development is still inherently human.
Aaron blogged about how TDD doesn't guarantee quality. I fully support this statement. That's like saying you followed a book to build a deck, and therefore the quality of your deck is associated with the book: its only true up to the quality of the book, but a human still needs to do the actual building.
With TDD we have a *mindset* that *encourages* quality to be a first-thought instead of an after-thought. It trains developers to ensure that their code will do what its supposed to do and in a way that its supposed to do it. But how do you know if you've covered all the test scenarios when writing your unit tests? How far do you go with obscure test scenarios that end up reducing overall productivity and delivery?
There's always a human angle, and I think we need to keep that in mind...especially since we've grown up in a spoon fed, drag and drop world. We are the biggest influence of quality in our organizations...tools can help, but the first place we need to evaluate is where we're at with our own skills and abilities first. There is no easy-fix, quality out of a Betty Crocker box that we can rely on.
D