You are here

Where's the juice in your requirements?

Website Migration Handbook
· ·

Requirements are difficult. I should say good requirements are hard to put together. One thing to look for in requirements, instead of a shopping list, is the juice in requirements. Sure you may need a bag of oranges, but what you're really after is orange juice. Of course, you also need a knife, juicer, pitcher, glasses, and to know how to make orange juice. But really, orange juice on it's own really isn't that interesting a requirement since pretty much anyone can make orange juice. So ideally you want to dig deeper and define more clearly what kind of juice you are attempting (perhaps mint orange juice made at your table?).

Many requirements are written as if each item on a requirements list is a magic pill, where if you just take, for example, one pill of "orange" you'll wind up with juice.

Let's step back and start with a shopping list.

The Shopping List

Many requirements I see look something like a shopping list (not that difficult to put together):

  • eggs
  • lemons
  • butter
  • flour

If you were handed this, would you know what's for dinner? It could be:

  • sauce
  • lemon butter
  • bars
  • cookies
  • muffins

It reminds me of the question you get on the plane: "would you like beef or chicken" when you have no idea how it's prepared. So in the list above, you can be pretty certain that you'll be eating something lemony, but you don't know if it's going to be sweet, savory, an accompaniment, or the main course.

Actually, you don't really know if it's going to be lemony. Perhaps lemons may be needed but you're not sure. Also, you may be using ingredients already in your pantry or refrigerator (perhaps lemon fried chicken?). Or the lemons could just be used to keep your apples from turning brown after you cut them. Or you could only be using the lemons to make lemonade. Someone in the house may have just said "I think we're low on butter" with no specific purpose in mind.

The Objective

What if you were handed a sheet that said "We're having your favorite tonight: lemon pancakes! To make the pancakes we need sweet butter, large organic eggs, those small lemons at the back of the store, and flour"? That's a bit more motivating, and something that everyone can understand and line up behind ("Junior, if you don't run over and get lemons we're not having lemon pancakes tonight").

Unstated Requirements, Important Details, Technique and Your Skills

So you get home, and find that you're the one making dinner. All you have is the objective (lemon pancakes) and the ingredients from the shopping list. No one gave you a recipe. And frankly you don't know your way around this kitchen. You look on the internet and find a recipe for lemon pancakes, but it calls for refined sugar which you're avoiding. Come to think of it you just remembered that your daughter is pushing you all to eat organic, and you got regular flour. Thinking that perhaps you can get away with the non-organic flour, you look around, and then see a recipe that uses honey rather than refined sugar. It looks like this recipe is actually harder to make, since they say honey browns really quickly. You vaguely remember that the stove runs hot, or is it cold? I'd probably burn regular pancakes! A sifter? Where's a sifter? Do we have a sifter? We have baking soda but not powder.

How did this happen? The shopping list was certainly correct: you did need lemons, butter, eggs, and flour. But even the list wasn't specific enough (for example, you needed organic flour). Also, there was a lot of implied/assumed stuff that was actually really very important to making the dinner. This included technique, unstated requirements, and your skills.

Does this kind of thing happen in large systems development? Yes. Someone thinks you should make lemon pancakes, no one knows that's what you're making, and you wind up with ramen noodles. The objective (compelling vision) should be clear to everyone, and the important details should be worked out. In large systems development, a useful way to do this is use cases since they are more easily understood by a wider group of people. Also, it helps pull things together to illustrate the point of the requirements. Is there juice in your requirements?

Website Migration Handbook

First published 14 September 2009