August 3, 2013
Techniques for for software development are many and varied. As the discipline software development matures we will no doubt adopt better techniques and set aside techniques which are not as effective (indeed, we already have done so). But is there a method of software development which is better than all of the rest?
If there is one thing I have learned as a developer, it is the simple fact that special cases always exist. So I am rather confident that there is not one best technique for software development. However, after a few years of applying Test Driven Development to most of my software creation activities, I can’t help but think that TDD is the best way to develop software for most situations.
When should we use TDD?##
If we can determine all of the cases when TDD is not the best technique for software development, then we should also know when it is the best technique. I have come up with three arguments to prove the following statement.
Test Driven Design is the always the best technique for software development.
- Test Driven Design is the application of the scientific method to software development.
- Test Driven Design requires us to dogfood, making the use of our software easier for our clients
- We are already practicing Test Driven Design, so why not replace ourselves with a small shell script?
Syllogisms are a useful tool for analysis of statements. If we can state each of these arguments as a syllogism, then we can explore the conditions when the syllogism does not apply. Those are the same conditions when TDD is not the best method for software development.
If these are all, or at least most, of the cases where TDD does not apply, then we can be confident that TDD is the best method for software development in the other cases.
The following posts will describe a syllogism for each argument, and attempt to analyze each syllogism.