If you think of the software development life cycle as a machine, then the inputs to the machine are the requirements. The output is working software. If your inputs are poor quality, then no matter how great the machine is, your output is going to be poor quality too. Garbage in; garbage out. So it stands to reason that any attempt to improve an engineering team’s output must start not with coding, testing or design, but with requirements.
At :Different, our primary requirements document, and our source of all truth, is the product outline (PO). Here we’re making public our guide to writing product outlines and a dummy product outline.