PHP Classes

Define 'Failed'

Recommend this page to a friend!

      PHP Classes blog  >  7 Reasons Why TDD Fai...  >  All threads  >  Define 'Failed'  >  (Un) Subscribe thread alerts  
Subject:Define 'Failed'
Summary:Repudiation of the reasons and fact
Author:Steve Ash
Date:2014-06-11 16:20:05
Update:2014-06-12 20:03:28

  1. Define 'Failed'   Reply   Report abuse  
Steve Ash - 2014-06-11 20:33:07
1. TDD is Expensive

You need to test whether it is upfront or after! TDD allows you to fix bugs as they occur and not later when they are more difficult (ie expensive) to fix. Therefore, you should need less developers and take less time - TDD is cheaper!!! (If you do it right)

2. TDD Will Retard Your Project Launch

If you use TDD you will have production ready code very day that potentially can be released as an increment giving business value before the end of the 'project' - TDD can mean earlier business benefit

3. You Will Change Your Projects and Old Tests Become Waste

Projects don't change that much but products do. Yes all products change and some tests, whether they are written upfront or after will become old. Are you suggesting that we never write tests ie never do testing, because some will be seen as a waste later?

4. Testing the Means is a lot more Work Than Testing the Outcomes

To get the outcome right very bit of the means needs to be right.

Yeah - go ahead and just test the outcome and then try to find the problem that caused the outcome to break; takes a long time and is frustrating and expensive!

5. Extensive Testing is Boring

TDD can only work if you use automated tools which take the boredom out of extensive testing; if you don't use the TDD and CI tools then you will fail

Overall, I think that this list of reasons for TDD failure comes from people who don't understand the reasoning behind TDD; have speed read a book on it; never had an established practitioner coach them and don't really care about the bigger picture in their company.

Done properly, TDD is a game changer in most organisations.


  2. Re: Define 'Failed'   Reply   Report abuse  
Manuel Lemos - 2014-06-12 00:21:03 - In reply to message 1 from Steve Ash
Do you have your own company working on products for your business? If not, that explains why you seem to have difficulty to see the problems of TDD.

  3. Re: Define 'Failed'   Reply   Report abuse  
Steve Ash - 2014-06-12 02:25:10 - In reply to message 2 from Manuel Lemos
No - I am an Agile transformation coach and in every organisation of all sizes where I have introduced TDD there has been a rise in developer/management morale and customer satisfaction.

Maybe we do TDD differently!

  4. Re: Define 'Failed'   Reply   Report abuse  
Manuel Lemos - 2014-06-12 02:47:04 - In reply to message 3 from Steve Ash
I totally understand and agree that TDD increases self-confidence in the code you write and the morale of developers. However, it has consequences that more than often get in the way of succeeding with the projects.

But forget about my opinion, think about other people that are against TDD, for instance David Heinemeier Hansson of Basecamp, or Joel Spolsky and Jeff Atwook of Stackoverflow. They are partners of their own businesses. They build their own software projects.

They know there is no time to waste because there is competition and their is market opportunity. If you miss your opportunity and the competitor takes over your market because you have been distracted with TDD and other delaying practices, there is no developer self-confidence that compensate the failure of your business.

  5. Re: Define 'Failed'   Reply   Report abuse  
Steve Ash - 2014-06-12 10:43:59 - In reply to message 4 from Manuel Lemos
And if you ship a product that has not been properly tested, then you are more likely to lose customers.

I have looked at some of the products you mention and would never recommend them!

  6. Re: Define 'Failed'   Reply   Report abuse  
Pablo Matias Perrone - 2014-06-12 19:07:57 - In reply to message 5 from Steve Ash
That's why the "Beta" stage exists!... you launch thinks that may fail, but does not care, you get feedback, correct the error and deploy, and again, like Gmail...

  7. Re: Define 'Failed'   Reply   Report abuse  
Manuel Lemos - 2014-06-12 19:52:10 - In reply to message 5 from Steve Ash
I am afraid you are still missing the point. You can properly test with doing TDD, test first.

  8. Re: Define 'Failed'   Reply   Report abuse  
Manuel Lemos - 2014-06-12 20:03:28 - In reply to message 7 from Manuel Lemos
Sorry, I meant "You can properly test WITHOUT doing TDD, test first."