According to an article in SYS-CON, Linus Torvald posted a message on the ‘net saying that specs don’t help in software development, that they are a needless level of abstraction.
Torvald may be right when the developer is the client, creating a program for his own use and perhaps for sale. But he is wrong when the developer is hired to fulfill someone else’s vision. Specs, and all the other stages in the planning process (project plans, wire frames, prototypes, mock-ups, etc.), are the language of negotiation between what the client wants and what the developer can deliver — given the time, the cost, and the limitations of the technology.
If you were a builder you might build a three-bedroom center-hall colonial based on your idea of what a three-bedroom center-hall colonial should be, and then sell it to someone willing to live in it. But no one is going to come to you and say “I want a three-bedroom center-hall colonial,” and then sit back and wait for the results. The future owner wants to have a say in exactly how big the kitchen will be, and whether there is a deck in back, and a host of other details. To avoid having to tear down walls later, you are going to sketch out the house and then create blueprints for the client’s review, long before you start digging the foundation.
Similarly, if a developer were to have an idea for software, and build it, he might not need specs: it would be his work, and he only has to communicate with himself. (Whether it would be a good idea for him to lay it out in increasing levels of conceptual detail before he starts coding is another issue.)
Our clients don’t say “I want a system that will handle all grants for the Department of Transportation” or “Give me a Web site that will help autism researchers” and give us a pile of money and wait for it to be delivered. They work with us step by step, and we reflect back what they say they want in increasing degrees of complexity — from back-of-the-napkin drawings to elaborate mock-ups through the actual design and build. At each point they are asked to review what we have produced so they can be sure we understand what they are aiming for. “Specs” just help people work together. They are an important step in the communication process.