This brings up another way to gather intelligence on the problem at hand: build a prototype. Briefly, forget all the rules you have been taught about careful documentation and complete understanding of the project before you begin. Simply plunge into building a prototype with code you expect to throw away, and get a feel for the challenges involved in building the real thing. Your time estimate for the project after such a challenge will be far better.
- Douglas J. Reilly - From Why Do Good People Write Such Bad Software?, Software Development, October 1994.