Building the Right Product with Hypothesis-Driven Development

In my previous post about Making Continuous Delivery work with Scrum and Sprints I wrote about how to shorten release cycles significantly by changing your process and adding in the obvious amount of test and release automation.

A comment challenged that by basically saying “Well, this might help you build your product right (and in shorter cycles), but building the right product is a whole different question. And maybe the more important one.” Hard to disagree.

I wanted to dig deeper. These days you can’t be wrong by starting in the vicinity of Lean Startup if you’re looking for how to build the right product efficiently. As an engineer I’m familiar with a lof X-driven development techniques but then I’ve came across one I haven’t about before: Hypothesis-Driven Development.

The basic idea is simple:

  • Instead of requirements, you formulate assumptions, or hypotheses
  • At the same time you define a measurable signal, that will tell you whether you were right or wrong in a reasonably short amount of time

This sounds like a great start to get to a structured approach to factor the question of the right product into your development.

But of course building the right product and building the product right aren’t mutually exclusive. Nor would I say one is more important over the other. They both are. Where hypothesis-driven development guides you to make sure you’re being intentional about your assumptions and the need to test them, good old fashioned engineering techniques like test-driven development and test automation make sure you’re implementing your hypotheses right. Without being able to successfully (bug-free and all) deliver an increment of your software that aims at testing an assumption, you’re not going to get the right answers either.

The article I stumbled upon was which also links to a great presentation about Replacing Requirements with Hypotheses.

  • Cool post. I just realized that you had responded to my comment from the previous post :)

    To clarify a bit, I didn’t mean the right product for the market, I meant if the product is built to scope. I like this approach above but I don’t think that you have to use a hypothesis-driven product approach in order to do continuous releases. Done right, your product counterparts are working with dev to still write stories, etc, etc. My only point being that you need to make sure that automation testing isn’t the only testing that is being relied upon. That kind of testing is great to make sure builds are stable/bug free for continuous deployment as they do not catch if something is supposed to be green or blue.