• If you tell what you want, you're quite likely to get it.
• If you don't tell what you want, you're quite unlikely to get it.
In a typical experiment, five teams were given the same requirement for a computer program except for a single sentence that differed for each team. One team was asked to complete the job with the fewest possible hours of programming, another was to minimize the number of program statements written, a third was to minimize the amount of memory used, another was to produce the clearest possible program, and the final team was to produce the clearest possible output. The actual results are shown in Figure I-1.
Figure I-1. Experiments show that programming team performance is highly sensitive to stated requirements.
In short, each team produced exactly what it was asked to produce, and didn't produce what it wasn't asked to produce. Before these experiments, we had often heard software buyers complaining about the inability of programmers to give them what they wanted. The experiments convinced us that in many cases, the buyers simply did not tell the programmers clearly what they wanted.
In the ensuing years, we have confirmed this observation in software development organizations all over the world. Moreover, we've found that the difficulty in stating requirements is not confined to software development, but is found whenever people design and build products for other people. Between your two authors, we've devoted more than a hundred years to overcoming this difficulty. We've developed techniques to help people negotiate a common understanding of what they want. If you require such techniques, then this book was designed for you.
Some of our readers would readily agree with the need to resolve the ambiguities in requirements, but they would argue the problem is not with the techniques, but with the technicians. In order to do a better requirements job, they would claim, remove the people from the process and instead use a methodology. Indeed, their preference would be a totally automated methodology, with no people in the development process whatsoever.