TDD Is Dead? Let’s Kill The Messenger Instead!

David H. Hansson (@DHH) sparked the “TDD being dead”  latest twitter storm. DHH is no stranger to controversy, and he certainly picked the right title for it. Of course, the responses followed immediately. and most of them fell directly into his trap.

Most people were defending TDD. How? By saying that Ruby on Rails (originally authored by DHH) was built so badly that TDD was bound to fail on it. Others said DHH simply doesn’t understand TDD, and he’s a bad influence on software newbies. And some cited their excellent record in TDD and how it all made sense and created exquisite code.  They were worried of the impact the article will have on people who don’t understand enough about the topic.

There was a very small minority saying DHH is right, and that TDD was a fad that didn’t live to its promise. They also mentioned failed experiences. Too few voices.

Since I like TDD and  promote it wherever I go, you might think I’d join the pro-TDDists.

Not this time.

TDD doesn’t always work

Anyone who says differently is selling something. So, let’s just ignore the fact that many of the TDD supporters live off TDD in some way (coaches, trainers, yours truly as well). They have an interest in TDD promoted as good, (much like SAFe), and this kind of publicity is bad publicity. But let’s put that aside.

The TDD proponents actually believe that TDD is the best tool for the job. And it many times is.

But surely not all of the time, and for all people. There is no silver bullet, remember?

It may be that with enough experience and acquired skill, we can apply TDD to many problems, with ease and success. Not always.

When I started doing TDD, I dismissed it quickly as good in theory, but  not likely to work in real life. It didn’t work for me then.

Many people in the beginning think the same. Some of them keep working in TDD and see the value, again in some cases. Some drop it off completely.

It’s ok to experience bad TDD.

DHH was right about one more thing, though

Did you notice how quickly (minutes!!) the discussion became about DHH the person, his understanding and skills? Rather than making the discussions about where TDD helps, and where it doesn’t.

We’re really good at religious wars in the software world, aren’t we? Isn’t it ironic that agile always happen in context, but if someone decides to against the stream, and he’s suddenly and obviously he’s wrong?

From contextual ideas to instant dogma in minutes!

As Uncle Bob Martin said in his response (in the more important 2nd half, of the article), TDD is a good tool, and many have found it worked for them.  And as he said, if other tools provide the benefits of TDD, go ahead with them.

I second that. Let me quote one of my favorite sentences in software (somehow related to Bob):

“We are uncovering better ways of developing software by doing it and helping others do it.”

We’re not done uncovering yet. TDD is one item we found on our journey, there are others.

Related Whitepaper:

Software Architecture

This guide will introduce you to the world of Software Architecture!

This 162 page guide will cover topics within the field of software architecture including: software architecture as a solution balancing the concerns of different stakeholders, quality assurance, methods to describe and evaluate architectures, the influence of architecture on reuse, and the life cycle of a system and its architecture. This guide concludes with a comparison between the professions of software architect and software engineer.

Get it Now!  

One Response to "TDD Is Dead? Let’s Kill The Messenger Instead!"

  1. Alexander Volkov says:

    TDD is not for everyone…

    TDD is not for me. As many of us I have tried TDD by letter and dismissed it in its purest form. Why I have tried it and why should everyone try it? TDD provides very powerful message in the form of mantra, i.e. Red-Green-Refactor. Although I do not follow TDD I always keep it in mind as a reminder to (1) write as minimum amount of code as possible before testing it; (2) always test your code; (3) and the most important, after your small piece of code works DO NOT forget to refactor. I love TDD for reminding me to refactor my code right after tests pass. My real mantra is Minimum of Code-Red/Green-Refactor. When you try TDD, whether you succeed or not, you will really appreciate the produced clean code. The simple mantra in your head helps you to be more disciplined and will make sure the basic steps are followed. You can incorporate three TDD steps in your own process any way you want as long as you produce clean code. It is worth it.

Leave a Reply


4 − = two



Java Code Geeks and all content copyright © 2010-2014, Exelixis Media Ltd | Terms of Use | Privacy Policy
All trademarks and registered trademarks appearing on Java Code Geeks are the property of their respective owners.
Java is a trademark or registered trademark of Oracle Corporation in the United States and other countries.
Java Code Geeks is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.

Sign up for our Newsletter

20,709 insiders are already enjoying weekly updates and complimentary whitepapers! Join them now to gain exclusive access to the latest news in the Java world, as well as insights about Android, Scala, Groovy and other related technologies.

As an extra bonus, by joining you will get our brand new e-books, published by Java Code Geeks and their JCG partners for your reading pleasure! Enter your info and stay on top of things,

  • Fresh trends
  • Cases and examples
  • Research and insights
  • Two complimentary e-books