Live data from Hacker News

The Failures of “Intro to TDD”

blog.testdouble.com

11–20 of 58 posts

Re: The Failures of “Intro to TDD”

#11

I have just come onto a project that has tests up to the armpits, mocked everything, and the test lead wielding an almost evangelical bent across the developers. And the codebase and system is still shit. Why? Because the team though loads of tdd and bdd equals a great system. Wrong. They can help, when used sparingly, but to make them your design methodology, praying at the church of testing dogma is insane. So, no…

At least you can be sure that it does what you expect. You can have bad architecture with and without tests, but testing will help you to avoid surprising behaviour, regressions, that kind of stuff.

Re: The Failures of “Intro to TDD”

#13

I have just come onto a project that has tests up to the armpits, mocked everything, and the test lead wielding an almost evangelical bent across the developers. And the codebase and system is still shit. Why? Because the team though loads of tdd and bdd equals a great system. Wrong. They can help, when used sparingly, but to make them your design methodology, praying at the church of testing dogma is insane. So, no…

Yes, I've witnessed a over emphasis on TDD and BDD lead to a team regressing. TDD/BDD became the deliverable not the product.

This is even more prevalent in the test masturbation known as Cucumber. Like your experience the lead in this case a weak developer was extremely pleased we had a very high coverage using Cucumber and because we where using Cucumber, by proxy we where doing BDD right??? ;) So bonus points are to be gained when reporting to management. The fact was the Cucumber sweet was a heavy set of UI tests against the most fragile part of the system; what changes most in a html app? A: The UI. The implementation in Cucumber is poorly executed leading to hours debugging because of it's shared mutable state in Cucumbers global world giving absolutely no value as features under test could be tested lower down the stack more reliably, faster, giving more value. I'd go as far to say the only person getting benefit from Cucumber is the person reporting to management trying to look like they've been busy and proactive or someone selling their consultancy fee. Cucumber is nothing more than the work of Satan seeing how much punishment a team can take while chasing the mythical utopia promised but never quite reached! Better tools exist!!!

I'm not saying TDD/BDD is bad, I use it when I think needed and enjoy it when used sparingly when requeied. Doing tdd because someone told you so and then the tests taking higher priority than deliverable code is bad unless your code results in death or other hardship upon someone, in these cases you're best of using a more formal approach to testing! Cargo culting at it's best.

Re: The Failures of “Intro to TDD”

#14

I have just come onto a project that has tests up to the armpits, mocked everything, and the test lead wielding an almost evangelical bent across the developers. And the codebase and system is still shit. Why? Because the team though loads of tdd and bdd equals a great system. Wrong. They can help, when used sparingly, but to make them your design methodology, praying at the church of testing dogma is insane. So, no…

At least you can be sure that it does what you expect. You can have bad architecture with and without tests, but testing will help you to avoid surprising behaviour, regressions, that kind of stuff.

I hear this argument a lot for TDD, but most of the bugs I I get are from subtle ways in which data enters the system in a way that is unexpected.

Re: The Failures of “Intro to TDD”

#15
Methodologies aren't a substitute for creativity or intelligence.

At best they can give a person with good judgement a different angle to look at their problems with.

At worst they are thought-stopping slogans that turn a gullible novice into a crippled novice.

Re: The Failures of “Intro to TDD”

#16
post #15

Methodologies aren't a substitute for creativity or intelligence. At best they can give a person with good judgement a different angle to look at their problems with. At worst they are thought-stopping slogans that turn a gullible novice into a crippled novice.

If only management understood this. Actually, I think good managers do understand this, and do it anyway, because if you take the general case and look at it from above, methodologies do improve upon chaos.

Re: The Failures of “Intro to TDD”

#17
I wish I had time to write a decent post. Lacking time, I'll try to be concise. If you want to really understand the benefits of TDD, the best book I know on the subject is actually Michael Feathers, "Working Effectively with Legacy Code". It is rather dense and getting a bit dated, but by showing you what you need to do to improve legacy code in a methodical fashion, he provides the basis for learning how to do good TDD.

Re: The Failures of “Intro to TDD”

#18
This article sums up the problems I've seen with TDD first hand. I've never seen a team end up with a better design than they would have using the old maxim: "Think hard. Then code.". I'm sure they exist, but adopting TDD does not automatically lead to better design, that much seems certain.

Another issue with TDD is that it is incredibly difficult to reason about. In many groups, there are at least one developer sold on the concept, and when I voice my concerns with the methodology they immediately demand an explanation why I "hate testing", or alternatively preach about all the goodness of unit testing. Which of course isn't the issue at all. Many developers seem to confuse TDD and unit tests, and the supposed benefits of the former is very hard to quantify.

Re: The Failures of “Intro to TDD”

#19

The tl;dr of this article - some programmers _really_ need to get exposed to a Systems Engineering course.

Here here to this. I never continue to be surprised by the number of people who don't realize that engineering is the practice of breaking big and confusing things into small things you understand.

Re: The Failures of “Intro to TDD”

#20
I can't detect any difference between his proposed approach and Harlan Mills's Top Down System Development. Basically, he's going to take this 'traditional' team and introduce them to the hot new development methodology of 1970, all while showing no awareness that he has done so. What's that saying about people who don't understand history?

At least they won't have to change the acronym.

Post reply on HN