We all know the basic reasons for the Spec:
- A Specifiation allows better Planning on the Programmer's part, which has about a bazillion ++'s of it's own.
- Questions can be answered from the Spec instead of calling your Manager every hour with a question about how he wants something done.
- A good Spec from the client allows proper time/money cost estimation and resource allocation.
- It saves Time by causing fewer rewrites when things have to change (assuming you can stick to the Spec, which is Key).
Programmers are well known to work better on interesting projects and the new and cutting edge. One can sit and consider the proper algorithms and data structures that are important to the project and let this get you through the inevitable drudgery of input verification and collecting data from your forms.
However, when (purely hypothetical example I swear) you've completely finished the project and most of testing and your employer decides it suddenly needs to be compatible with Netscape as well and now you have to rewrite not only the browser interface but also how the underlying document structure is formed but not so much how anything actually works, it reduces to being purely tedious.
All but the most diligent programmer will then end up rushing it or slacking off (by posting to Perlmonks for instance), which is inevitably bad for your final product. What a difference a simple decision can make. ;)
Anyone else have any not-so-obvious benefits from getting that Specification correct the first time (or at least entertaining anecdotes when it wasn't)? I could list a bunch of names of Monks who know better than I, but I wouldn't use a cheap trick like that. ;)