Writing Great Requirements

Tips From an Engineer's Perspective

Why requirements are hard

Common problems

Discussion

Who is this guy?

Craig Burton

Sr. JavaScript Engineer

PlatformQ

I make web stuff.

Now, who are you?

Quick poll!

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)

Common problems

Too little detail:

Make it blue.

Common problems

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!

Common problems

Escape pods:

[...]

If there is time, we could also integrate the new schedule widget in....

[...]

2 for 1 special: One thing at a time!

Common problems

Detailed "what," but no "why":

Story time!

Business: "What" is the most important thing.

Engineer: "Why" is often at least as important as what.

Common problems

Missing details:

Should be able to download list of users in CSV.

Discussion

We need authentication.

Discussion

Registration functionality - email and password can't be blank.

Discussion

As a User I want to see a chart built with D3.js

Discussion

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.

Discussion

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.

Conclusion

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.

Thank you

Craig Burton

Software Engineer

PlatformQ