Search

Best Ways To Split User Stories For Efficient Product Backlog Refinement

Product Backlog and User Stories: Product Backlog is an essential artefact of Scrum Framework. It comprises of a list of items (referred as PBI) that are planned to be implemented in the future. PBIs are generally in the form User Stories. A user story is the concise representation of a functional or technical requirement of a system. Writing appropriate user stories forms a strong base for achieving the sprint goals successfully and progressing towards the product vision eventually. "If you want to know more about a 'user story' you may also watch“ INVEST  The attributes of a well formed user story goes by the acronym INVEST, which was coined by Bill Wake in his book "Extreme Programming": Independent - Each story should be atomic and not dependent on any other stories Negotiable - Should have scope to allow negotiation between the scrum team and business team on the grounds of technical , functional  and budget constraints and modify itself accordingly Valuable - Must deliver some value to the stakeholders. If it is a functional user story, then there should be provide some business value , whereas technical user story should focus on architectural and non functional improvements. Estimable - Team should be able to arrive at a fair estimation for implementing the user story in terms of story points.  Small - Should be small enough to plan and implement within a sprint Testable - Should have a clear acceptance criteria , which gives the team all the necessary information to test every possible flow.   Product Backlog Refinement Product owners have to maintain a healthy backlog by frequently grooming the user stories in it. In the grooming sessions (Product Backlog Refinement), PO discusses with the team and work on improvising the poorly written user stories, breaking down the large user stories into manageable size, adding more clarity to the acceptance criteria , prioritizing the user stories and estimating them. As a Scrum Master, we should guide the team and PO in this backlog refinement activity by aiding them with the best practices in writing user stories of right size and prioritization. User Story Splitting Splitting user stories is a significant task in product backlog grooming. A user story should be neither too small nor too big. It has to be sized appropriately , in such a way that , the implementation of it could be decomposed into one or more tasks. All the tasks planned must be completed within a sprint. Generally , user stories of size more than 8 or 13 story points are split further. However this number may vary from one scrum team to another based on their capacity and velocity. Benefits of splitting a story: Smaller is always better. User stories of relatively less story points are  * Easy to understand and groom * Leads to accurate estimation * Results on quicker implementation * Aids thorough testing   Size of an user story is said to be optimal if it could be implemented within 0.5 day (half a day) to 10 days. Methods of splitting :  A user story can be split: Horizontally - through architectural tiers as one layer at a time Vertically - as functional pieces across all the layers at a time. The horizontal layers split accordingly can be further divided as tasks. A common metaphor used to differentiate both these methods is cutting a cake layer by layer ( horizontal) and portion by portion of all the layers (vertical). Only by tasting a portion of all the layers, one would be able to feel the essence of the entire cake. Same is the case with story splitting. Vertical (Functional) splitting is more valuable than the horizontal one. Advantages of vertical splitting: Dependencies and risks could be identified at an earlier stage Nice to have features can be segregated and deferred for later sprints Considerable progress can been seen on functional part every day, whereas in horizontal slicing no benefits are seen until all related stories are complete Leads to quicker testing and faster feedback loop - in horizontal , need to wait until all the dependent stories are done  Helps to prioritize based on incremental value Techniques for splitting stories vertically: User stories can be split vertically based on the following patterns: Generic Terms: If an user story has more generic terms, then there is a possibility to split it vertically.  For eg : As a library member, I want to search the availability of various kinds of books for children and share it with my network. Here, "various kinds" , "share it" are more generic terms. They provide a way to split the story incrementally as below : * Develop a UI that displays all the book categories when a registered library member login * Provide a search functionality to the member, where in results are also categorized such as "fiction for kids under 10", "fiction for kids 11-15" and so on * Enable to users to share the result via email, whatsapp etc Connectors : If the user story is represented using a compound sentence, then it is obvious that it can be split vertically. In such cases, look out for conjunctions in the user story like "and, or, as well as, when, if" and split it based on these connecting words or conjunctions like : and, or, if, when, but, as well as. Acceptance criteria:  Read out the acceptance criteria; if it is too complex and some parts of it can be pulled out and developed as an independent user story, follow the same. Eg:  As a senior associate  of the organization, I want to register for the in house training programs so that I can attend the trainings and upskill myself. Acceptance criteria :  All the senior associates must be informed about the training programs through mail. Senior associates should be able to submit their details through a form for registration. Mail confirmation must be sent on successful registration. In the above scenario, each of the criteria can be designated as a separate user story. Workflow steps:  Identify the workflows that connect different roles for a specific function, and if they can be completed independently split them as a separate user story. Eg: For an assignment approval system in a school, the following can be the possible user stories        As a student, I should be able to submit my assignments to the teacher for grading         As a teacher , I should be able to view the assignments submitted by the students        As a teacher, I should have the UI to request for more clarifications Apart from the above, below are the other patterns based on which user stories can be split vertically: Operations - Create, Read, Update, Delete operations required for a functionality Business Rules deviations Variations in Data given as input to the system Variations in User Interface Spikes - If there are many unknowns in a user story and it requires research for uncovering the grey areas, then create spikes to get the insights of the user story. Based on the spike's outcome, we can proceed with the implementation of actual user story. Best practices for story splitting: * Do not split the stories too early - split just in time, when it's priority for implementation is high. * Do not compromise quality / non functional requirements - NFRs must be taken into consideration while splitting. If having a choice between a couple of user story splitting strategies, prefer the one that will result in similarly sized sub-stories. — Wojciech Zawistowski (@velesin) May 29, 2015 * Ensure that there is no feature debt - splitting should not leave out any functionality without implementation. * Story splitting is not a task to be owned by the PO alone - Along with the Scrum Master, other team members also give their view on best possible ways to split the stories as they are the actual persons who are going to develop the stories into working functionalities.

Best Ways To Split User Stories For Efficient Product Backlog Refinement

2K
Best Ways To Split User Stories For Efficient Product Backlog Refinement

Product Backlog and User Stories:

Product Backlog is an essential artefact of Scrum Framework. It comprises of a list of items (referred as PBI) that are planned to be implemented in the future. PBIs are generally in the form User Stories.

A user story is the concise representation of a functional or technical requirement of a system. Writing appropriate user stories forms a strong base for achieving the sprint goals successfully and progressing towards the product vision eventually.

"If you want to know more about a 'user story' you may also watch“


INVEST 

The attributes of a well formed user story goes by the acronym INVEST, which was coined by Bill Wake in his book "Extreme Programming":

Independent - Each story should be atomic and not dependent on any other stories

Negotiable - Should have scope to allow negotiation between the scrum team and business team on the grounds of technical , functional  and budget constraints and modify itself accordingly

Valuable - Must deliver some value to the stakeholders. If it is a functional user story, then there should be provide some business value , whereas technical user story should focus on architectural and non functional improvements.

Estimable - Team should be able to arrive at a fair estimation for implementing the user story in terms of story points. 

Small - Should be small enough to plan and implement within a sprint

Testable - Should have a clear acceptance criteria , which gives the team all the necessary information to test every possible flow.
 

Product Backlog Refinement

Product owners have to maintain a healthy backlog by frequently grooming the user stories in it. In the grooming sessions (Product Backlog Refinement), PO discusses with the team and work on improvising the poorly written user stories, breaking down the large user stories into manageable size, adding more clarity to the acceptance criteria , prioritizing the user stories and estimating them.

As a Scrum Master, we should guide the team and PO in this backlog refinement activity by aiding them with the best practices in writing user stories of right size and prioritization.


User Story Splitting

Splitting user stories is a significant task in product backlog grooming. A user story should be neither too small nor too big. It has to be sized appropriately , in such a way that , the implementation of it could be decomposed into one or more tasks. All the tasks planned must be completed within a sprint.

Generally , user stories of size more than 8 or 13 story points are split further. However this number may vary from one scrum team to another based on their capacity and velocity.


Benefits of splitting a story:

Smaller is always better. User stories of relatively less story points are 

* Easy to understand and groom
* Leads to accurate estimation
* Results on quicker implementation
* Aids thorough testing  

Size of an user story is said to be optimal if it could be implemented within 0.5 day (half a day) to 10 days.


Methods of splitting : 

A user story can be split:

Horizontally - through architectural tiers as one layer at a time

Vertically - as functional pieces across all the layers at a time. The horizontal layers split accordingly can be further divided as tasks.

A common metaphor used to differentiate both these methods is cutting a cake layer by layer ( horizontal) and portion by portion of all the layers (vertical). Only by tasting a portion of all the layers, one would be able to feel the essence of the entire cake.

Same is the case with story splitting. Vertical (Functional) splitting is more valuable than the horizontal one.


Advantages of vertical splitting:

  • Dependencies and risks could be identified at an earlier stage
  • Nice to have features can be segregated and deferred for later sprints
  • Considerable progress can been seen on functional part every day, whereas in horizontal slicing no benefits are seen until all related stories are complete
  • Leads to quicker testing and faster feedback loop - in horizontal , need to wait until all the dependent stories are done 
  • Helps to prioritize based on incremental value

Techniques for splitting stories vertically:

User stories can be split vertically based on the following patterns:



Generic Terms:

If an user story has more generic terms, then there is a possibility to split it vertically. 
For eg : As a library member, I want to search the availability of various kinds of books for children and share it with my network.

Here, "various kinds" , "share it" are more generic terms. They provide a way to split the story incrementally as below :

* Develop a UI that displays all the book categories when a registered library member login
* Provide a search functionality to the member, where in results are also categorized such as "fiction for kids under 10", "fiction for kids 11-15" and so on
* Enable to users to share the result via email, whatsapp etc

Connectors :

If the user story is represented using a compound sentence, then it is obvious that it can be split vertically. In such cases, look out for conjunctions in the user story like "and, or, as well as, when, if" and split it based on these connecting words or conjunctions like : and, or, if, when, but, as well as.

Acceptance criteria: 

Read out the acceptance criteria; if it is too complex and some parts of it can be pulled out and developed as an independent user story, follow the same.
Eg:  As a senior associate  of the organization, I want to register for the in house training programs so that I can attend the trainings and upskill myself.

Acceptance criteria :  All the senior associates must be informed about the training programs through mail. Senior associates should be able to submit their details through a form for registration. Mail confirmation must be sent on successful registration. In the above scenario, each of the criteria can be designated as a separate user story.

Workflow steps: 
Identify the workflows that connect different roles for a specific function, and if they can be completed independently split them as a separate user story.

Eg: For an assignment approval system in a school, the following can be the possible user stories
       As a student, I should be able to submit my assignments to the teacher for grading 
       As a teacher , I should be able to view the assignments submitted by the students
       As a teacher, I should have the UI to request for more clarifications

Apart from the above, below are the other patterns based on which user stories can be split vertically:

  • Operations - Create, Read, Update, Delete operations required for a functionality
  • Business Rules deviations
  • Variations in Data given as input to the system
  • Variations in User Interface
  • Spikes - If there are many unknowns in a user story and it requires research for uncovering the grey areas, then create spikes to get the insights of the user story. Based on the spike's outcome, we can proceed with the implementation of actual user story.

Best practices for story splitting:

* Do not split the stories too early - split just in time, when it's priority for implementation is high.

* Do not compromise quality / non functional requirements - NFRs must be taken into consideration while splitting.


* Ensure that there is no feature debt - splitting should not leave out any functionality without implementation.

* Story splitting is not a task to be owned by the PO alone - Along with the Scrum Master, other team members also give their view on best possible ways to split the stories as they are the actual persons who are going to develop the stories into working functionalities.

KnowledgeHut

KnowledgeHut

Author

KnowledgeHut is an outcome-focused global ed-tech company. We help organizations and professionals unlock excellence through skills development. We offer training solutions under the people and process, data science, full-stack development, cybersecurity, future technologies and digital transformation verticals.
Website : https://www.knowledgehut.com

Join the Discussion

Your email address will not be published. Required fields are marked *

Suggested Blogs

Combination Of Agile & DevOps – The Roots

Agile and DevOps are two notions that originate from the same schools of thought, but whose paths now have digressed. However, a major amount of confusion still remains within the IT services industry with regards to the relationship between the two and has emerging agile & devops trends in 2017. Hence, it is of value to look at the origins of each and to clarify the disparities between them. ‘Tell me what you want, what you really really want!!’ Does the tune ring a bell? Back in the 1990s, the Spice Girls were expressing to the world what they really really wanted, and similarly business owners and corporate leaders were doing pretty much the same, indicating what they wanted to software developers who were working on enabling these organizations through technology. Unfortunately, these business owners were not as lucky as the Spice Girls. More often than not they really didn’t get what they wanted. By the time business requirements were properly understood, validated and finally realized through software products the business requirements more or less had changed.  This was mainly due to the ‘application delivery lag time period’ that sometimes went up to three years. The result of the aforementioned delay from concept to realization meant that a large proportion of projects were stopped before completion. Even then, those that eventually reached the finish line more often than not did not meet the end users’ expectations.  The introduction of Agile – The change-driven management approach The search was on for a more lightweight approach to solution delivery and the result was ‘agile’ – a project management approach with a series of new concepts with regards to collaboration between business owners and the implementation team including UI / UX engineers, developers and even QA engineers. Instead of eliciting, documenting and signing off all the requirements up front and getting it signed off before work began, the focus shifted to delivering value through increments of functional software that would evolve over time. The results indicated that the software implementation team had become more productive, businesses could be more responsive in responding to queries of the implementation team, and user demands could be met more efficiently. However, problems remained. The agile approach didn’t always deliver on the promise of continuous, seamless software development. Blockers continued to exist. So, what is DevOps? The first thing to note is the fact that DevOps is not an individual tool or a suite of solutions but more of a philosophy whose primary purpose is to reduce the distance between the worlds of software development and IT operations. It defines how the original concepts of agile have moved downstream to the level of infrastructure and operations. The DevOps concept sounds relatively straightforward, but in reality it is a little bit more complicated. Software development and IT operations have historically had very different approaches. Software developers appreciate the ability to change things quickly and often they do end up changing things rapidly. In the meantime IT operators focus on stability and on minimizing alteration. This philosophical disparity has often resulted in conflicts. Thus, one of the main challenges of DevOps is to ensure that this conflict decreases before it affects the businesses. Importance of DevOps Principles For this very reason indicated above, it is very important to consider and act up on the core principles of DevOps. They are, Close collaboration and communication between developers, system operators and software testers Continuous integration that requires developers and operators to commit to changes more frequently Continuous delivery to increase the team’s speed and efficiency while enabling early detection of bugs Continuous deployment to ensure new developments can be released without system downtime The DevOps philosophy goes hand-in-hand with the delivery processes described in ITIL Framework in terms of support and IT services management. DevOps can therefore be seen as a way to implement ITIL processes in such a manner that meets the demands placed on systems today.  
3323
Combination Of Agile & DevOps – The Roots

Agile and DevOps are two notions that originate fr... Read More

Metrics that matters for DevOps Success

DevOps is generally introduced for the development teams to speed up the software delivery. DevOps is considered as a step beyond Agile. Many enterprises accepted DevOps as a part of software delivery process from planning, developing, deploying and updating an application, according to reviews. In this competitive world, DevOps allows businesses to speed up with the rapid pace of demands by the customers.Here are the top Ways to Obtaining Business Benefits of DevOps. Customers of today demand quality as well as security based products. DevOps, making the best use of its principles, provides superior quality and lowers the risk. On the contrary, in traditional software development approach, increased speed often results in poor quality and increased vulnerabilities. Why are metrics essential? Most organizations implement DevOps because of the demand for quality, time improvement and the need for defect-free products. Since DevOps has no specified framework, there exist a few standard ways to measure DevOps success. How do you find out how well it can work? How will you come to know whether it is working or not? The answer to this question, and the solution to all the existing problems, is the use of Metrics. Metrics are essential to stay in sync with DevOps. DevOps will be used extensively which therefore requires continuous treatment. But if you are not measuring its outcomes, you cannot understand how to incorporate DevOps in your organization. The focus of DevOps metrics is on deployment, operations, and support (feedback). Let us have a look at the Devops metrics which will lead to improved delivery performances. People: People are the major elements of the DevOps process. People-oriented metrics measure the things like yielding, capacity and response time. People are the hardest element of DevOps. So always start with the phase ‘People’. Process: In some ways, DevOps is considered as a process of  continuous deployment. There are many process-oriented metrics. Development to deployment is a large process-oriented metrics. Process metrics can be the measurement of speed, appropriateness and effectiveness. Technology: Technology metrics also plays a major role in DevOps. It measures the things like uptime (time during which the computer performs operations), network and support, and failure rate. Deployment (or Change) Frequency: DevOps metrics includes continuous deployment. Updated software deployment in every few days can be possible with fast feedback and piecemeal development. In a DevOps environment, deployment frequency can be measured in terms of the response time, the teamwork, the developer capacities, development tools and the overall efficiency. Change Lead Time: Change lead time is the time period between the initialization phase to the deployment phase. In DevOps, it is a measure of development process efficiency, code and the development systems’ complexity, and also of team capabilities. A protracted ‘change lead time’ is an indicator of an inefficient deployment system. Change Failure Rate: One of the main goals of DevOps is to do frequent deployment with less failure rates. Failure rates metrics should be decreased over time, as the experience and the capabilities of the team and developers get increased. If the frequency of failure is very high, it is definitely a red flag, as it gives rise to problems in the overall DevOps process. Mean Time to Recover: Time taken between ‘recovering the failure’ from the ‘failure’ is known as Mean Time to Recover (MTTR). It can be fragmented into three phases- detection, diagnosis and recovery phases. MTTR metrics is the sign of a good teamwork which identifies how effectively the teams handle the changes, and also, how collaboratively they do so. By all means, this metric is becoming a trend for DevOps to remodel organizational processes in a better way.
Metrics that matters for DevOps Success

DevOps is generally introduced for the development... Read More

Agile and DevOps Or Agile vs DevOps: Differences

Agile is the standard in today’s application development world. Development teams are adopting it over the last 10 years, as it has been proved to be more efficient methodology of getting quality software. Agile has improved user experience by frequently rewarding with focussed goals and quick delivery. In addition to this, the broad use of DevOps in Agile methodology has made it a more compelling approach for IT commercials. In this context, it is important to know that Agile is not DevOps, and DevOps is not Agile. It is difficult to achieve success in DevOps, if Agile practices are not followed. While Agile can make sense independent of DevOps, it can be more complete when accompanied by DevOps practices.Here are the emerging Agile and DevOps Trends. Many people have set their minds about Agile, that Agile means Scrum and DevOps means continuous delivery. This simplification creates unnecessary confusion between Agile and DevOps, making people think that they are perfectly compatible. So, let us have a look at the practical connections between Agile and DevOps. Planning for Unplanned work: In the DevOps circle, those using Agile acknowledges that Scrum is used to track the planned work. Tasks like releasing updated system, performing system upgrades etc, can be planned. On the other hand, the operations like performance spikes, system expiry, and standard security, can be unplanned. These types of tasks need immediate response. You cannot wait for the next sprint planning session. For this reason, many organizations embrace DevOps (more than Scrum and Kanban), which helps to track both kinds of work. Before, there were priorities from multiple masters, but now a single set of priorities are in use. Similarly, for a long list of assigned work, the time period is planned to accomplish the work. These lightweight management practices by Scrum make a huge difference for a team. Speed vs Risk: Teams using Agile with or without DevOps have to remember that, to support the rapid change, a sound application structure and a solid foundation are mandatory. Applications must have good underlying framework that must be used constantly by the team members. In the DevOps context, the teams must make sure that the changes which are made to the architecture should not introduce any risk. Also, there should not be any hidden side-effects associated with the changes, because the iterative process consists of regular changes in the architecture. So you should be concerned about the risks associated with each and every change made. Only with this type of work will you get rapid delivery without any risk. Agile and Quality: Both Agile and DevOps help develop an application fast, keeping sound structure and risk-free application.  But neither of them concentrates on the quality of the product. Mostly, IT organizations rely on the ‘fail fast’ principle- “ Early failures cost less to fix”. But with this, only fast deployments can be maintained, not quality. Agile produces applications that fit better with the desired requirements and can adapt quickly to respond to the requirement changes made on time, during the project life. DevOps, along with the automation and early bug removal, contributes to creating better quality. Developers must follow Coding and Architectural best practices to  embed quality in the applications. Agile and DevOps should try reach the next level to become highly effective within the organizations. They must conform to the industry standards using Agile and DevOps practices, to allow the development team to improve quality, make delivery faster and avoid software risks.
1442
Agile and DevOps Or Agile vs DevOps: Differences

Agile is the standard in today’s application dev... Read More

Useful links