There is a post I am working on (called “Reason #537 why writing tests after the fact is a bad idea”) about adding tests to a project after much of it is already written. The post sucks right now because it does not have a good story about it (I can fix that problem), and because I have no data backing my opinions (this is a harder problem to solve).

This is a common problem with writing on the web.

Take for instance, this article by Jason Fried, from 37 Signals.

It is a great story. But, there is no data to back up what he is saying. Not publishing this might be their competitive advantage. Yet, all kinds of questions arise for me:

  • Can they do a business with high touch because they already have other businesses making high margins? Meaning, starting a business in this manner is impossible. Do as I do, because it will reduce my competition.
  • Is this a way to bring an “ownership” mentality to their employees? Having the team aware of when they bill makes billing (and being profitable) central to the new venture, which is hard to develop in people used to being just employees. If so, it is a clever reframing of that concept, but the blog post is disingenuous about the why.

37 signals are the masters of the opposite of groupthink: contrarianism. Blogs with this leaning fit in well with crowds that believe they are contrarians (like Hacker News). Yet, without data to back it up, how do we know this is a good idea?

The issues with my post is that I know empirically that adding tests after the fact is messy and an order of magnitude less effective than writing them during development. Yet, the people around me have their own opinions about why and when writing tests is a good idea, and all our empiricism is personal. There are many wonderful open source tools for testing, continuous integration, etc. Yet, as a community we are not sharing these results. That would be powerful.

Imagine if anytime you were blocked from working on your code because of a breaking change added to the repository that instead of getting incensed and browsing HackerNews you typed “record-my-anger” into your terminal. This would then connect to a database in the cloud and store metrics indicating the cost to your team for that. Somehow you could store all that anger and use it for good.

The only thing I know for sure right now is that my data clearly indicates we have many more opinions than assholes. Use that as you will.