How to engage a software development company -- Part 5 -- How to specify requirements The clarity with which you can articulate your requirements will directly affect the depth of response your supplier can give you.  With this in mind, I'm going to provide a reusable template that you can use to specify your high level requirements that's easy to remember, quick to do and will give your supplier a deeper understanding than the clichd specification scrawled onto a restaurant napkin! Here's the template: As a __________ I want to __________ So that __________ For example a small, online web store selling low volumes of widgets to the public may specify the following high level requirement: As a store owner I want to receive an email when a customer submits an order So that I can print the order, so it's ready to be filled Depending on the size of your project, you're probably going to end up with several dozen of these, so it's advisable to start with a table: The reason this template is so effective is that: -          It identifies the roles present in your project. Understanding the different roles builds a picture of the different people that will interact with your solution, the concerns that they have and the actions they are likely to take. -          It provides detail to the abstract. Stating 'I want an online store' is open to a wide range of interpretation. Specifying who can do what in your online store is