TDD? I don’t have time
I’ve had one of my talks accepted for Developer Day Scotland: talking about Test Driven Design. I’ve got a basic idea for a talk, but in the spirit of Alt.Net and open source development, I thought I’d throw this important subject out to the crowd. I’ve got a few ideas for the talk that I’ll outline below, but I’m looking for ideas and stories from others to help illustrate this point. Lest you think this is the easy way out, remember that I’ll be editing, compiling and delivering the talk, and I’ll get all the hecklers and tricky questions.
In return, I will release the presentation under a creative commons licence so that anyone else can take it, adapt it, and use it to help sell the principles of TDD to their colleagues. I’ll also make sure all contributors are included in the acknowledgments, provided they give me their name. If you want to give feedback, comments below are preferred as they’re public, but you can also send them to me via twitter ( @craignicol ) or via my gmail address (which I won’t give here to avoid spam harvesting, but it’s the same username as my twitter account)
The basic structure of the talk will be a series of slides titled with a reason not to to TDD, followed by a few suggestions why that reason is a myth, or is not as big a problem as you might think. Based on last year’s DDDS, I expect most of the audience will have come across unit testing, but I might need to add that to the sales pitch. I’ll list below the basic ideas I’ve got so far. Any arguments, expansions, examples or other feedback gratefully received.
I don’t have time
- Do you have time to debug a live system?
- Do you spend time adding new features?
- Do you have the right tools?
I don’t need to test
- Are you a perfect programmer?
- Are you working alone?
- Will you ever maintain your code?
I need to know about IoC, mocking, etc
- Not when you start
- Don’t let the terms scare you, it’s the principles that are important
- The principles are worth learning
I love TDD, but I can’t get my team to adopt it
- Don’t keep it to yourself. Show it off.
- If you’re the lead, make it happen. CI is your friend.
I don’t know what tools to use
I need 100% code coverage
- Have you been talking to Joel?
- You don’t need 100%, but until you try and reach it, you don’t know what you don’t need.
- You have to decide which of this, and many other aspects you feel comfortable with, and which you don’t.
Quality doesn’t matter
- It matters to the customers who have to wait longer for a working product
- It matters to the developers who have to maintain your code and will leave or stop caring
- It matters to the accounting department who lose money for either of the above
You can’t test a UI
- Make sure your logic can be tested without a UI
- Test the right thing on your UI
- There are frameworks (NUnitForms, WatiN)