September 4, 2014

That much fuss about TDD

One of the important event in Agile this year seems to be an argument around Test Driven Development (TDD). More precisely, high profile personalities in our industry debated against the statement "TDD is dead". Initially launched by David Heinemeier Hansson at the RailsConf keynote, it created quite a buzz in the Agile community. Key Agile figures addressed the statement through Google Hangouts and posts on their blogs. On this quickly generated Google Trends graph, you can see how the words "tdd is dead" spiked during the summer.

TDD_Is_Dead

I'd like to add my 2 cents to this debate: Really! That much fuss for just a Agile dev practice.

I recall from one of Mary and Tom Poppendieck book how the goal of IT is to solve a problem. And most of the time, it is a business problem we are trying to solve.

In my opinion, Agile hasn't got us better at doing this. We deliever features faster and of better quality but nothing is saying that we are actually solving the business problems at hand. Surveys by CHAOS, Standish Group or Dr. Dobbs don't even agree on a definition of what a successful project is. It is hard to state that Agile solves the business problem better than other methods. In the epilogue of their book "The Lean Mindset", the Poppendieck summarized their view of Agile methods. They stated how "agile methods often fail to deliver significantly improved business results".

I believe we should work harder at finding ways to work with our customers to identify solutions to their problems. We should engage with them to build software which is of value to them. This should be our most important concern. Once this is discovered, identified and proven, use TDD or whatever suites your needs to build this feature.

I recall a few years ago a popular commentary TV show where the host interviewed the minister of Health in my home province. The host asked tought questions about the latest reforms in healthcare. The politician replied with well made answered throughout the interview. He was well prepared. He had his pre-fabricated answers with him. The host then asked: "What about the patient in all of this? I haven't heard anything about the patient in your answers."

Doctors work to save the lives of patients. They do not argue all day about which kind of scalpel to use. As professionnals, we should do the same. We should work on solving the business problems of our customers and then pick the scalpel that is the most fitting to our situation.