- What the developer is to do
- How the developer will know when it the work is done
- Anticipate and eliminate points of potential confusion
Item #3 is the whole reason for the specification. It is in thinking the design through in which truly calendar-busting problems are resolved. A recent client suggested that because development tools (and frameworks) had evolved to such an efficiency point, the task of software design was obsolete. Nothing, in my opinion, could be further from the truth.
"...I have always found that plans are useless but planning is indispensable." - Dwight D. Eisenhower
More on this subject shortly...