|Do you know where your variables are?|
Working in Japan for the last year, I have come to know the importance of a good Specification. What can I say, I'm young, I hadn't programmed anything that really demanded one before. The Importance is especially relevant now that I've discovered the Japanese don't know how to produce one, but that's neither here nor there.
We all know the basic reasons for the Spec:
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. ;)