Writing Great Requirements
Tips From an Engineer's Perspective
Why requirements are hard
Who is this guy?
I make web stuff.
Now, who are you?
Engineering or business?
Do you speak the language "across the aisle?"
Difficulty with requirements in the past?
Requirements are hard.
Requirements are easy to get "wrong".
(We'll come back to this.)
Problems with requirements affect everything later in the process.
Communication gaps exist.
- (Insert your agile animal metaphor here)
Too little detail:
Make it blue.
Implementation details in the requirements:
Add a field to the user profile for email
opt-in status for each site.
Don't cross the streams!
If there is time, we could also integrate the new schedule widget in....
2 for 1 special: One thing at a time!
Detailed "what," but no "why":
Business: "What" is the most important thing.
Engineer: "Why" is often at least as important as what.
Should be able to download list of users in CSV.
We need authentication.
Registration functionality - email and password can't be blank.
As a User I want to see a chart built with D3.js
As an administrator, I want to have a screen in the admin section where I can enter booth data and link booths to pages. (see PM for details)
If we have time, we should also build the front end for booths.
As an administrator, I want to have a screen in the admin section where I can view and update user data. This should include a button which will send a password reset email to the user.
Goals: We wish to be able to look up user data in order to correlate usage statistics to distinct users, and initiate password reset if the user is having trouble logging in.
Requirements are important at every stage.
Requirements need to be detailed.
Engineers should know the "why" of the task in addition to the "what."
One "thing" for each requirement. Avoid "and," "also," and other such words.
When in doubt, reach across the aisle before it's time to actually start working.