The Agile Tribe

Putting the "N" back into INVEST

on August 2, 2009

Author: Andy Marks

Mike Cohn was the first person to popularise the INVEST principle for user stories. In short, he states that good stories should reflect the following six key elements:

  • Independent
  • Negotiable
  • Valuable
  • Estimatable
  • Small (or Sized Appropriately, depending on when you joined the conversation)
  • Testable

Most of these items are fairly easy to accept on face value, but Negotiable usually causes the most confusion. Here’s a nice (real) story that demonstrates the value of a negotiable story requirement…

A long time ago in a galaxy far, far away (all good stories start like this I believe) a developer was working on an online insurance quoting application. He came across a story something like:

“”I need to use a Captcha to prevent robots from reverse engineering the pricing algorithms”.

There was a fear that automated tools could be used to repeatedly hit the quote generation page, varying each parameter a little at a time to determine the pricing model behind the system. They wanted to use a challenge-response Captcha to make sure only humans could submit the form to obtain a quote.

Sound reasonable?

The problem with this story is that it’s not negotiable – or not very negotiable. In fact, it’s half requirement (“I need to prevent robots from reverse engineering the pricing algorithm”) and half solution (“I need to use a Captcha”). The canny developer spotted this and abstracted back to the core requirement to make the story negotiable. And when he did this, he identified another solution which still addressed the core requirement: the reverse captcha! The negotiated solution required zero additional work for the human users of the system (unlike Captcha which most would agree are painful at best) and was implemented.

The problem with stories that aren’t negotiable is that they pre-emptively limit the solution space available to the story. When you abstract the solution from the core requirement to leave a negotiable story, it’s much easier to find other solutions, some of which may be simpler and/or quicker and/or cheaper and/or better than the original.

Good analysts will naturally create negotiable stories.

Good developers will push back on non-negotiable stories because of the above.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s