Thoughts on specification and requirements documents

There is some debate as to whether product requirements and specifications documents are  necessary steps in building a software application. But before giving my thoughts on whether they are useful or not, I need to explain how I define requirements versus specifications. A requirements document is a short description of what the application is supposed to do and who is going to use it. I emphasis short because there are many requirements templates out there that ask writer to fill out all kinds of garbage such as assumptions, dependencies and constraints. I don't know how anyone could answer these questions because 1) they are either asking you to predict the future or 2) perform some self-administered psychoanalysis.

A specifications document is defining how the application will actually function from a user's and technical perspective. This is where the details come into play. Screen specifications, site maps and user flows are used to detail each screen's content and functional components.

So back to original question, are either of these documents necessary? For my the answer is "Yes", but not because I think anyone is actually going to read them. The main reason I create these documents to fact check my wireframe. For me, the wireframe is the primary deliverable because it something people can actually view and interact.  It is the application. However, some things just can't be fully explained through the wireframe alone. Calculations, rules, flows and other bits of logic that define what the user can see and do should be written down. If not, your going to have a difficult time getting your application coded.

Another benefit is it helps me catch mistakes or omissions within my mock-ups. The act of writing out how a particular screen will work uses a different part of my brain than the visual/design part. It like someone else running quality control on my work.

So is writing a requirements and specifications, mind numbing, tedious work? Definitely! Does it improve quality and save time? Yes, but keep in mind that these documents are not etched in stone, they can be changed, ignored or just plain disregard as soon as the code starts to fly.