What are some examples of awesome companies/products built with TDD?

A couple of weeks ago I asked on twitter/facebook for examples of awesome companies(*) built with TDD, and never got a satisfying answer.

As a TDD advocate and practitioner, I want those companies to exist. TDD (or at least “an insane amount of tests”) has been working for me for almost a whole decade, and it would be disappointing if the technique only works for average companies or products (I still haven’t built a product worthy of awe).

I was told that there’s no correlation between TDD and product awesomeness. In that case if, say, 1% of all teams in the world practice TDD (or lotsa tests), then for every 100 awesome companies, I should be able to find one that was built thanks to TDD.

I can’t think of any (perhaps Rails by 37 signals?). If you know of one, or even better, work or worked there, I would like to hear about it.

(*) I want to be very clear about the fact that I already know that TDD works great for building good enough products. I don’t need to see examples like how Division 37 of BigCorp has 82.3% code coverage which allowed them to ship in 3 months instead of 6. I do mean awesome companies or products. For example: gmail, google 1.0, netflix, amazon, firefox, mac os, blizzard, facebook.

I’m also less interested in TDD used to maintain products, great or not. So for example, if World of Warcraft 1.0 was built with TDD I want to know about it. If a team of developers added test coverage after wow 1.0 was out, so fixing bugs would be easier, it would be nice to hear, but it’s not what I’m looking for.

My hypothesis is that TDD is great for making average products better. But for building truly exceptional products, you need truly exceptional individuals, and those individuals tend to be slowed down by TDD. Therefore truly exceptional products are not built with TDD. QED (unless proven otherwise :p)

Of course bad or below average programmers also would never user TDD, and that’s where the similarity ends.

10 Comments »

  1. Jeffrey Fredrick said,

    August 14, 2009 @ 10:27 am

    I think you’re dealing with the law of small numbers.

    Can you think of 100 awesome companies?
    How many truly exceptional individuals are there?
    What percentage of all developers actually do TDD?

    Looking for the intersection of three small percentages is going to be difficult.

    That said, I think awesome companies/products are not correlated with TDD. I think the impact of implementation techniques are dwarfed by product management & corporate strategy.

  2. EGHM said,

    August 14, 2009 @ 12:26 pm

    Ten years is rather typical of how long it takes for new technologies, tools, and techniques to make it into main stream IT. So I don’t find it to surprising that success and failure stories of TDD are still hard to find. Given how few TDD “experts” exist, many of the success stories do not get told, as the people who teach TDD are usually contractually obligated to not talk about the client and clients with success stories may also view TDD as a competitive advantage.

    Couple that with the points Jeffrey Fredrick makes and the set of awesome TDD stories is cut down even further. It takes a lot more than great software and quality to make a successful product, let alone an awesome one. In the extreme I know of at least two instances where high quality did not align with the business model resulting in overall failure. I have 3 success stories from a client I worked with that were published, but I get the feeling they don’t meet your definition of awesome.

  3. Scott Brown said,

    August 14, 2009 @ 6:21 pm

    I think it may be difficult to find good examples, because most commercially successful development processes are walled gardens. We may never know exactly how Amazon’s platform was built unless an ex-employee writes a book or Amazon themselves choose to publish a case study.

    I will take a stab, though: Google Chrome. My understanding is that Google uses their enormous cache of websites to extensively test Chrome (and has throughout the browser’s development). This seems to be test-driven development in every sense of the word, as the test cases are clearly outlined beforehand (the browser must render site x properly) and used as the basis for releasing builds publicly.

    However, Chrome has a little more than 1% market share, so it may not meet your definition of an exceptional product (though I believe it is).

  4. Julio Santos said,

    August 26, 2009 @ 7:34 am

    Jeff, I think I can find 100 companies/products/technologies/discoveries/etc I (and most of the world) consider awesome. I know you can too. “Companies” is shorthand for all those major breakthroughs.

    Perhaps you’re right on the TDD/awesomeness non-correlation. In fact, I’m sure TDD can never be the only factor. But all things being equal, awesome strat, etc, what are examples of awesome discoveries/products/inventions/etc where the authors used TDD?

  5. Julio Santos said,

    August 26, 2009 @ 7:43 am

    EGHM, good point on the 10 year thing.

    Perhaps unfairly, but I do want to extend “companies” to more than just that. I want to also include inventions, products, even ideas, where the authors got there test first.

    Reading books on history of science, or history of inventions, or whatever (and presumably, if an invention/idea/product/works of art makes history, it’s because it has some awesomeness…for the most part), I’m not convinced the authors used test first. Perhaps they did, perhaps that’s how science/art works in the first place. I’m just not seeing it yet. I hope I will though, as like I said, test first/high quality is my bread and butter.

  6. Kevin Lawrence said,

    August 26, 2009 @ 3:03 pm

    > what are examples of awesome discoveries/products/inventions/etc where the authors used TDD?

    Microplace!

  7. Julio Santos said,

    August 26, 2009 @ 3:56 pm

    Kevin, that’s nice :)

    Though one day I wish I will be able to say that microplace changed the world (and then I can use it as an example of tdd success), I don’t think it’s fair to claim victory yet.

  8. Julio Santos said,

    August 28, 2009 @ 6:44 am

    Scott, chrome fits my awesomeness model very well. We agree there. I don’t know if it was built using TDD the way you and I used to do it. Do you know?

    I also agree that we may never know how Amazon was truly built, though I’m guessing that if any (awesome) company or product had TDD/agile at its core, someone would mention it. Especially nowadays where agile is really a marketing tool and less a software development one.

  9. Julio Santos said,

    October 7, 2009 @ 9:46 am

    Uncle Bob started his own list of great products that were created with TDD:

    http://blog.objectmentor.com/articles/2009/10/07/tdd-derangement-syndrome

  10. Jeffrey Fredrick said,

    October 7, 2009 @ 1:09 pm

    MSBuild, excellent!

RSS feed for comments on this post · TrackBack URI

Leave a Comment