Will TDD become mainstream?

I have been asked a number of times in the last few years if I think TDD (Test Driven Development) will go mainstream. Firstly, we need to agree on what mainstream is – Wikipedia does not give any hard numbers (http://en.wikipedia.org/wiki/Mainstream) but it seems like 20% would be a good number for software development (I pulled this out of thin area – please share your thoughts).  For TDD to have that much mindshare (in the stubborn software development world) would firmly seat TDD as an established and accepted way of developing code.  So how much mindshare does it have now?  Again I don’t know how you would get a measure (Gartner studies maybe?) but my experiences with software development in the Washington DC Metro area makes me think it is far less than 20%.

Will this change – will it gain wider support?  I don’t think so for the following reasons:

  • TDD takes discipline – many developers don’t have discipline when coding.
  • TDD requires “buy in” at all levels within an organization.
  • TDD takes time to learn the practice effectively – this is difficult given the deadlines most teams face.
  • TDD works well with Pair Programming which tends to be too contentious to get by most management teams.
  • It is difficult to produce hard evidence for TDDs benefits since software is abstract and hard to compare across projects (and seldom would you build the same software twice just to compare techniques).  This evidence will be necessary to persuade many decision makers.

Please don’t think that I am bashing TDD or Pair Programming – we use both everyday and believe in their enormous value!  I am happy that TDD is not mainstream since this gives a great competitive edge over other software development teams.

If you are looking for a position with a company that believes in and practices TDD and Pair Programming, we are hiring.

 

Jonathan Cogley is the CEO and founder of Thycotic Software, a .NET consulting company and ISV in Washington DC.  Thycotic Secret Server is a secure web-based solution to both "Where is the password for this router?" and "Who has the password for our domain hosting?".  Secret Server is the leader in secret management and sharing within companies and teams.

3 Comments

  • I still think pair programming is a waste of money, but whatever. The real problem with TDD is that its advocates look at it as an all-or-nothing practice, and that's just not practical in any situation beyond developing 100% backend parts.

  • Jeff,

    Your statement about Pair Programming is not very interesting since you add nothing - have you ever tried it? what do you base your opinion on? We practice it daily with great results but I don't think the practice works for everyone.

    I have written almost every line of code that I write in a test first manner for the last 4 years including user interface, middle tier and backend - seldom has it been impractical for me and I am far more productive using the techniques than I ever was when using traditional techniques. I think the "all-or-nothing" is just a side effect of getting comfortable with the process and not wishing to code something without have a test to guide you.

    Thanks for posting.

  • I feel TDD is currently becoming modern and popular among some developers but I cannot convince myself it is worth using. The development time is supposedly prolonged twice or more (I have feeling that write a good test takes more time than write the method itself), more over I feel that 95% of errors I find in my programs could be hardly (if tests are extremely complex) or not at all (Opera browser handles incorrectly onload event for images and I had rewrite a module that relied on that event - how to test this unless try it manually?) catched by usual automatic tests. I can find only a relative low number of examples where I feel the TDD is really useful and productive.
    I am afraid that TDD will only catch 5-20% of errors in programs (depending on project type and a quality of a programmer) but increase expenses of development twice at least and programs won't be written any better than they are now.
    Am I thinking or doing something wrong?

Comments have been disabled for this content.