What i see occur quite often is that User Stories are to big, resulting in work that is not done at the end of the sprint.
Lets take a look at the story below:
As an office manager I would like to be able to lookup contacts quickly so that I can quickly find someone's contact details.
Acceptance criteria
- Given an Office Manager enters "como" When I press the search button Then he/she should see the contact details of everyone who's full name contains "como"
- Given an Office Manager enters"ce" When I press the search button Then he/she should see the contact details off everyone's title containing "ce"
- ...
Now if we think about this for a second, we could start to break down the tasks as follows:
- Create the database tables
- Create the data access layer
- Create the DTO's
- Create the UI
- Create the service layer
It makes more sense tobreak up the screen in functional components as shown below:
Then we could break the feature up as follows:
- Display Search Results
- Enter Search Criteria
- Display status message "x out of Y contacts"
The most important thing is the green grid displaying the search results. From a technical perspective this seems a bit weird, since we autmatically think that its not usable once we have hundreds of contacts. But this mindset is wrong, it is workable, whether its practical that is another thing.
If we would take this approach we could deliver the following screen to the Product Owner:
If he can get his hands on this he can allready take a look and maybe he could allready experience this bit of functionality and conclude he would like to add some fields to the grid like email and phone, that he did not think of immediately.
So an extra task is added to the story "Add email and phone fields to the grid"
In the meanwhile wile the product owner is allready playing around with the screen we can allready add the yellow part to the screen:
This will enable very short continuous feedback loops, moreover working like this will help you deliver functionality sprint after sprint.
This is what the end result could look like
As you see apparently there was no more time for the status message at the bottom of the screen and this task has been removed from the story another change from the initial version is also the "Search" button.
Find here an overview of what was implemented and what was removed:
As an office manager I would like to lookup contacts quickly so that I can quickly find someone's contact details.
- Display search results: Done
- Enter Search Criteria: Done
- Display status message "x out y contacts": removed
- Add phone and email fields to the grid: Done
- Filter results grid when typing text: Done
- Remove search button: Done
Great post, Jella!
ReplyDeleteOne remark: you applied one of the story writing anti-patterns to youe user story: "As a user I wnat X to reach X."
Why does the user wants to find contact details quickly? What's the business value delvered?
The business value delivered is that he can look up contacts and gets the information he wants... if they want the info quickly they could decide to split the story in 2...
ReplyDeleteits a bit in line with delivering options, this example shows that you could deliver a basic, barebone version and later on you could enhance that solution...