Top Ten Reasons That TDD Sucks

With all of that talk about test driven development, I thought I would enumerate why TDD is completely misguided.

  1. I never have enough time to write the tests, once I’ve finished the
    main functionality
    .
  2. Testing isn’t my job, because it’s QA’s job to make sure I do quality work.
  3. Unit tests don’t help me, because my code works perfectly the first time.
  4. Unit tests don’t help me, because my code always works perfectly when I add new features.
  5. There’s no need to test drive my code, because the design handed to me by the architect covers every possibility
  6. Running the tests is a pain, because it takes too long to scan through
    all of the output to see if everything was fine
  7. Running the tests takes too long, because reloading the database
    and restarting the app server between tests takes forever
  8. I can’t do TDD, because they don’t make JUnit for Z80 assembly
    language
  9. I don’t like TDD, because I enjoy the hours I spend in my
    debugger
  10. TDD is just a fad, and it’s completely unnecessary anyhow since projects always succeeded before
  11. (BONUS) TDD sucks because I agree with all of the points here, and I don’t understand sarcasm.


9 Responses to “Top Ten Reasons That TDD Sucks”

Robert Watkins on March 19th, 2004 4:17 pm:

You should have waited a couple of weeks and posted this up on April 1… :)


Kevin Dangoor on March 19th, 2004 5:10 pm:

This isn’t subtle enough for April 1 :)

BTW, I should mention that the format of this was inspired by:

http://www.blueskyonmars.com/archives/2004/02/29/12_reasons_gay_marriage_will_ruin_society_not.html


Jari Aarniala on March 19th, 2004 7:51 pm:

Very nice :)


Vazz on March 20th, 2004 9:25 am:

Excellent!


Fred Grott on March 21st, 2004 7:41 pm:

The danger of doing TDD jokes ot TDD insiders is that no one else will get the jokes..


Ed Darnell on February 11th, 2009 10:29 am:

Reading this 5 years after the fact but I like this post – particularly the onward links (I’ll follow and read them all at some stage).

Has thinking moved on?
Any newer blogs you would recommend?


Kevin Dangoor on February 11th, 2009 12:00 pm:

5 years on, I’m still very much a proponent of TDD and operate that way as much as possible. I’m working on a project now that will soon be open source and the server side was test driven all the way.


Sebastian on October 6th, 2009 12:23 pm:

Hey! are you working @ Microsoft?

# I never have enough time to write the tests, once I’ve finished the
main functionality.=> you shouldn’t be a programmer in that case, your code will be full of bugs

# Testing isn’t my job, because it’s QA’s job to make sure I do quality work. => Test is code and you’re being paid to code. Testing is part of the development cycle. Best Practice!

# Unit tests don’t help me, because my code always works perfectly when I add new features.=> code isn’t yours… there’s an 80% chance of getting legacy code => what happens if you modify that code or add new features?

# There’s no need to test drive my code, because the design handed to me by the architect covers every possibility => what’s your architect?? Eric Evans??

# Running the tests is a pain, because it takes too long to scan through => Have you ever heard about Continuous Integration?

# Running the tests takes too long, because reloading the database
and restarting the app server between tests takes forever => same as above

# TDD is just a fad, and it’s completely unnecessary anyhow since projects always succeeded before => projects were a lot simplier, and the idea is to complete things with less efort that what we’ve done in the past

# Unit tests don’t help me, because my code works perfectly the first time. That’s not true… are you coding beans? have you tried c++???

# I don’t like TDD, because I enjoy the hours I spend in my
debugger => but your boss don’t, and it’s paying for your time


Kevin Dangoor on October 6th, 2009 12:27 pm:

@Sebastian: it looks like you are taking this post literally, rather than as sarcasm. Please don’t.