The user(s) of the system we are building is of paramount importance. They are the ones that will determine if the system is a success or if it's a failure. It is good to break the system down into parts, small enough so that you can think about each story the user will experience.
For example, if we are writing user stories for the ride-sharing app Uber, we break the system into parts and identify the user types:
Identify User Types
For Uber these user types would be:
- Driver (responsible for driving the car)
- Rider (looking to get from point a to point b)
- Driver-Rider Safety Admin (responsible for keeping driver and rider safe)
Break into Parts
Attempting to enumerate all the user stories in one sitting for a system will be impossible. Instead, break the system up into parts.
- Rider enter payment information
- Rider enter destination
- Rider waiting for pickup
- Driver enter bank information to get paid
- Driver specify availability
- Driver approval
Driver-Rider Safety Admin
- Admin approve new rider
- Admin approve new driver
Now that we have the app broken down into parts we can begin enumerating the user stories. Let's take the waiting for pickup.
Rider will be shown a waiting screen after they have hailed a ride
- Rider can see the progress of the car on a map
- Rider can see the estimated time of arrival
- Rider can cancel the ride
- Rider can see the license plate number of the incoming Driver
- Rider can see where they are on the map
- Rider can see the expected route of the incoming Driver
- Rider can see their upcoming destination
- Rider can click to call Driver
- Rider can click to message Driver
Within each of these bullets, you can further enumerate the actions that a Rider can take, painting a full picture of how the user will interact with the system.
Once you have these stories enumerated, you will have a better idea of what you are looking to build. Additionally, you will be able to test your system against these stories to make sure the system does what you intend.