In this project, we struggled somewhat to explain to our subject-matter experts the importance of beginning with the (ultimate) end in mind. They thought they had to describe every little step, every button and every view of an IT application down to the smallest detail.
My favorite example was the following sequence (from a use case description), repeated a hundred times within the requirement specification:
- User does some inputs
- User "sends" the input, i. e. confirms his inputs
- System checks inputs against rules X and Y
- Systems shows an error message in case the checks fail.
- ...
- User does some inputs
- (System has to make sure rules X and Y are not broken)
- "I think I am an expert user."
- "I do these simple inputs. Damn I'm good!"
- "Now send the stuff to the stupid machine." *klick*
- "Ooops ... What the ...."
- "The stupid machine says I did it wrong?!"
- "Why didn't it prevent me from doing it wrong, is there anything this machine is useful for?"