Dave Thomas of The Pragmatic Programmers posted an interesting blurb on the differences between test-driven and test-first development. In Agile / XP circles, these two practices are usually lumped into one, but Dave points out some good arguments for distinguishing between them. Test-driven development simply means that the design is influenced by the unit tests, for example by refactoring the code to make it more easily testable, since code that is difficult to test is often an indication of bad design. However, this does not necessarily imply that test cases are written before the actual code, as in test-first development, which takes this concept to an even stricter level. Dave describes this as “unnecessarily high-church”, and I would tend to agree with this statement. I definitely know that I could benefit from at least following test-driven development a little more closely than I may have in the past…