As part of the feature definition process, I’ve been focused on writing quick functional specs with wireframes and data requirements to facilitate discussions with developers and our tester on what we’re trying to accomplish from a product perspective. This process is proving to be extremely valuable, even in a quasi-Agile, get something up quickly and iterate. Thinking time at the beginning, before a single line of code is written, is extremely cheap. Also, the act of writing to communicate an idea to others is incredibly powerful. Lots of vague intellectual leaps get examined and made explicit. Everybody benefits. These are typically short documents (2-6 pages) and they are not technical or engineering specs. The functional spec is used to have a schedule conversation with engineering and to prep ops and test for what’ s coming. Once this is done, we proceed with comps/html markup in parallel with development.

Thanks, Joel for getting me thinking about this a while ago.

I believe that on any non-trivial project (more than about 1 week of coding or more than 1 programmer), if you don’t have a spec, you will always spend more time and create lower quality code.

Another document I found extremely useful in this process was the spec written for Copilot. What’s your take on specs? Do you find them helpful or are they an annoyance?