Building a Website: User Stories
Read from the beginning.
User stories are a neat, agile way of documenting quickly what your software needs to do. They are often very short (once sentence), and exhibit the following form:
As a U, I want to A so that V.
- U is the user type, such as Administrator, Publisher or Klingon.
- A is the action; it describes what the user needs to be able to do, and hence what function the system must support.
- V is the value that the action will deliver to the user. Forcing you (or the BA, or whoever is writing the user stories) to state the value of the functionality will ensure that only useful, valuable features are implemented.
User stories should describe what the system does; not what it looks like, or the structure, or the implementation. Granted, you can probably infer some structure, but the point is to come up with a collection of verb-based sentences that describes the complete set of functions supported by the software.
There’s the rub; a complete set of functions is very hard to produce. Any one person will never be able to recall every single aspect of a system. It’s much better to do it as a team.
The list below is incomplete, and will probably always be incomplete. In fact, when you’re trying to be agile, there will probably never be any single piece of documentation that is 100% perfect. Instead, you need to rely on the full collection of documents, drawing and other pieces of media to fully build the system to spec.
Problems arise when two documents conflict with each other and make it impossible to make an implementation decision. It’s important to identify and correct these conflicts when you find them. That being said, the UoD probably contains conflicts already. I will try to have it agree with my user stories.
What’s This Brew: User Stories
As a user, I want to …
- view published news articles, so I can stay up to date with events.
- see reviews of products, so I can get information/be entertained.
- rate reviews of products, so I can give a quick opinion
- leave a comment on a review, in markdown, so that I can give a more in-depth opinion.
- view product pages, so that I can get basic information.
- rate products, so that I can influence the popularity of them.
- leave a comment on a product, so I can give my opinion without having to write a whole review.
- view a manufacturer page, so I can get basic information.
- rate a manufacturer, so I can influence the popularity of them.
- leave a comment about a manufacturer, so I can give my opinion.
- edit a manufacturer page, so that I can make sure the information is complete and correct.
- edit a product page, so that I can make sure the information is complete and correct.
- write a review on a product so that I can contribute to the community.
- edit my reviews after they’ve been published, so I can make sure the information is correct.
- add images to my reviews, so I can document my experience with the product visually.
- view other user’s profiles, so I can see what they’ve written and get basic information about them.
- edit my own profile, so other users can see correct information about me.
- edit other user’s reviews, so I can correct spelling and grammar.
- delete my own reviews, so I can get rid of them if I change my mind.
- delete my own comments, so I can get rid of them if I change my mind.
- delete my profile, so I can be comfortable that my information is not public when I don’t want it to be.
- vote in polls, so I can have my opinion heard.
- choose whether or not to receive emails, so I can choose just how I get information from the site.
- link products to manufacturers, to clearly show relationships and improve the quality of the information.
- search for reviews, products and manufacturers by keywords.
- be awarded points for taking part in the community, so I can gain access to higher privileges.
- log on using any of my OpenID providers, so I can maintain my state between sessions.
- associate my account with my social network accounts, so I can automatically push my activity to those sites.
- see FAQs, so I can find out more information about the mechanics of the site.
- see tips while I’m writing a contribution, so I can write the best review/page/comment possible.
As an administrator, I want to…
- delete any review, so I can ensure the integrity of the site.
- delete any comment, so I can ensure the integrity of the site.
- delete a manufacturer, to ensure that only valid manufacturers are included.
- delete a product and all its reviews, to ensure that only valid products are included.
- delete a user, to stop malicious users from interacting with the site.
- publish news articles, to alert users about important information.
- approve manufacturer, product or review edits, so that untrusted users can have their changes included.
- create polls, so I can have medals awarded to products and manufacturers.
- delete images from reviews and pages, to make sure that only relevant images are included.
As a Super User, I want to…
- See usage statistics, so I can target my publicity.
- Tweak database parameters, so I can make the website perform optimally.
- Configure advertising options, to provide the best advertising to users.
- See a full feed of activity, so I can monitor site usage in detail.
- Tweak CSS styles, so I can change the look and feel of the site without having to make code changes.