User Stories


Published on

  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Stories should instead be written so that the benefits to the customers or the user are apparent.
  • User Stories

    1. 1. User Stories For Agile Software Development CHET RATHOD MBA, CSM
    2. 2. Content <ul><li>Two Sections: </li></ul><ul><li>User Stories </li></ul><ul><li>Frequently Discussed Topics </li></ul>
    3. 3. 1. User Stories
    4. 4. Overview <ul><li>A story captured on a card or sticky contains a short description of the user- or customer- valued functionality. </li></ul><ul><li>A story should initiate conversations between the customer and developers about the story. </li></ul><ul><li>The user stories emphasizes verbal communication and encourages deferring of details. </li></ul><ul><li>The stories are prioritized based on their value to the organization. </li></ul><ul><li>The acceptance tests validate that a story has been developed with the functionality the customer team had expected. </li></ul><ul><li>The customer team should include testers, product managers, real users, and interaction designers. </li></ul>
    5. 5. Writing Stories <ul><li>A good story is: </li></ul><ul><ul><li>I ndependent </li></ul></ul><ul><ul><ul><li>Avoid introducing dependencies between stories, so that stories can be developed in any order. </li></ul></ul></ul><ul><ul><li>N egotiable </li></ul></ul><ul><ul><ul><li>Not a written contract but a negotiation between the user and the developers. </li></ul></ul></ul><ul><ul><li>V aluable to users or customers </li></ul></ul><ul><ul><ul><li>Avoid stories that are only valued by developers. </li></ul></ul></ul><ul><ul><li>E stimatable </li></ul></ul><ul><ul><ul><li>If story is not estimatable, increase domain knowledge. </li></ul></ul></ul><ul><ul><ul><li>Gain knowledge by creating two stories; a quick spike to gather information and then a story do the real work </li></ul></ul></ul><ul><ul><li>S mall </li></ul></ul><ul><ul><ul><li>Split stories or combine stories </li></ul></ul></ul><ul><ul><li>T estable </li></ul></ul><ul><ul><ul><li>Capture completion (done) criteria. </li></ul></ul></ul><ul><ul><ul><li>Especially non-functional requirements. </li></ul></ul></ul>
    6. 6. User Role Modeling <ul><li>User Roles </li></ul><ul><ul><li>Typically stories are written keeping one user type in mind. Re-evaluate this. </li></ul></ul><ul><li>Role Modeling Steps </li></ul><ul><ul><li>Brainstorm an initial set of user roles </li></ul></ul><ul><ul><li>Organize the initial set </li></ul></ul><ul><ul><li>Consolidate roles </li></ul></ul><ul><ul><li>Refine the roles </li></ul></ul><ul><li>Additional techniques </li></ul><ul><ul><li>Defining Personas – imaginary representation </li></ul></ul><ul><ul><li>Defining Extreme Characters – for otherwise missed stories. </li></ul></ul>
    7. 7. Gathering Stories <ul><li>Assumption : There are different sizes of requirements, requirements do change overtime </li></ul><ul><li>Techniques </li></ul><ul><ul><li>User interviews </li></ul></ul><ul><ul><ul><li>A lot more than asking, “what do you need?” </li></ul></ul></ul><ul><ul><li>Questionnaires </li></ul></ul><ul><ul><ul><li>Effective technique for gathering information from large user base </li></ul></ul></ul><ul><ul><li>Observation </li></ul></ul><ul><ul><ul><li>Effective way to pick up on insights </li></ul></ul></ul><ul><ul><li>Story-Writing workshops </li></ul></ul><ul><ul><ul><li>Definition of low-fidelity prototype </li></ul></ul></ul><ul><ul><li>Recommended a combination of the above methods </li></ul></ul>
    8. 8. User Proxies <ul><li>Understand their backgrounds and motives </li></ul><ul><ul><li>User’s Manager – might have different role compared to user </li></ul></ul><ul><ul><li>Development Manager – different corporate goals </li></ul></ul><ul><ul><li>Salespersons – focuses on anything that makes a sale </li></ul></ul><ul><ul><li>Domain Experts – might develop too complex system </li></ul></ul><ul><ul><li>Marketing group – has focus on quantity of features and not on quality </li></ul></ul><ul><ul><li>Trainers and Support - will avoid advanced features </li></ul></ul><ul><ul><li>Analysts – intuits what users want, extended time on project upfront activities. </li></ul></ul><ul><li>Ways to work with User proxies </li></ul><ul><ul><li>Start a user task force, guidelines provided by users and day to day decisions made by proxies. Identify a ‘champion’. </li></ul></ul><ul><ul><li>Combination of user proxies </li></ul></ul><ul><ul><li>Release beta version as early as possible to engage users </li></ul></ul><ul><ul><li>Avoid making developers as user proxies </li></ul></ul>
    9. 9. Acceptance Testing <ul><li>Tests are written at these times: </li></ul><ul><ul><li>When developers and customers capture explicit details </li></ul></ul><ul><ul><li>Start of an iteration or before programming begins </li></ul></ul><ul><ul><li>Whenever new tests are discovered during or after development of the story </li></ul></ul><ul><li>Customer specifies the tests </li></ul><ul><li>Viewing testing as part of the development process, not something that happens “after coding is done.” </li></ul><ul><li>Write tests as long as they add value and clarification to the story. </li></ul>
    10. 10. Acceptance Testing cont’d… <ul><li>Framework for Integrated Test </li></ul><ul><ul><li>Customer team should be the one to execute the acceptance tests </li></ul></ul><ul><ul><li>Minimally executed at the end of each iteration </li></ul></ul><ul><ul><li>Look into automating some or all of the acceptance tests </li></ul></ul><ul><ul><li>FitNesse – extension of FIT, a popular approach for writing acceptance tests on Agile projects. (, </li></ul></ul><ul><li>Types of Testing </li></ul><ul><ul><li>Customer and development team should work together to determine the different types of testing. </li></ul></ul>
    11. 11. Guidelines For Writing Good Stories <ul><li>Be aware of the Purpose </li></ul><ul><ul><li>To act as a reminder to discuss the feature, not to replace the conversation by adding more detail to the story card </li></ul></ul><ul><li>Start with Goal Stories </li></ul><ul><ul><li>Based on user roles </li></ul></ul><ul><li>Splitting stories (slicing a cake) </li></ul><ul><ul><li>Provides some level of end-to-end functionality. </li></ul></ul><ul><li>Write Closed Stories </li></ul><ul><ul><li>That finishes with the achievement of a meaningful goal </li></ul></ul><ul><li>Put Constraints on Cards </li></ul><ul><li>Size the Story to the Horizon </li></ul><ul><ul><li>Writing stories based on the implementation horizon </li></ul></ul><ul><li>Keep the User Interface out as long as possible </li></ul>
    12. 12. Guidelines For Writing Good Stories cont’d… <ul><li>Some things aren’t stories </li></ul><ul><ul><li>Guidelines are expressed in different format </li></ul></ul><ul><li>Include User Roles in the stories </li></ul><ul><li>Avoid interpretation confusion, increase clarity by using active voice. </li></ul><ul><li>Customer writes the stories. </li></ul><ul><ul><li>Developers should help out. </li></ul></ul><ul><li>Don’t number story cards </li></ul><ul><ul><li>Use short titles. </li></ul></ul>
    13. 13. 2. Frequently Discussed Topics
    14. 14. Why User Stories? <ul><li>Verbal Communication </li></ul><ul><ul><li>Solves interpretation gaps, what was written down vs. what was expected. </li></ul></ul><ul><ul><li>Rapid feedback cycles, leading to greater understanding. </li></ul></ul><ul><li>Comprehensible </li></ul><ul><ul><li>Since they are terse, discussed, and easily remembered. </li></ul></ul><ul><li>Right size for Planning </li></ul><ul><ul><li>Ease of prioritizing </li></ul></ul><ul><li>Iterative Development </li></ul><ul><ul><li>Varying progressive level of detail instead of completism . </li></ul></ul><ul><li>Deferring Details </li></ul><ul><li>Opportunistic Development </li></ul><ul><ul><li>Allows a team to shift between high- and low-levels of thinking </li></ul></ul><ul><li>Participatory Design </li></ul><ul><ul><li>Encourages users to become participants in the design </li></ul></ul><ul><li>Build up of knowledge </li></ul><ul><ul><li>Stories promote the accumulation of tacit knowledge across the team </li></ul></ul>
    15. 15. Why User Stories? Cont’d… <ul><li>Challenges with Stories </li></ul><ul><ul><li>In a very large project, it is difficult to understand the hierarchies and relationships between stories. </li></ul></ul><ul><ul><ul><li>Keeping stories at a higher level till the team is ready to work on it </li></ul></ul></ul><ul><ul><li>Requirements traceability is mandated </li></ul></ul><ul><ul><ul><li>Create a document at the start of the iteration to capture the stories and corresponding test cases. </li></ul></ul></ul><ul><ul><li>Sharing of tacit knowledge in large teams </li></ul></ul><ul><ul><ul><li>Some communication on large teams must be written down. </li></ul></ul></ul>
    16. 16. Story Smells Smell Symptom Impact Action Interdependent stories Particular story is added to an iteration if another story is also added. Difficulty planning iterations Try to combine or evaluate the separating criteria Goldplating Developers are adding features or interpreting stories liberally <ul><li>- Developers always looking for “wow” factor. </li></ul><ul><li>A false sense of accomplishment </li></ul><ul><li>need to put their own mark </li></ul>Greater visibility of tasks, discuss it in retrospectives.
    17. 17. Story Smells cont’d… Smell Symptom Impact Action Too Many Details <ul><li>Too much time spent in gathering details in advance </li></ul><ul><li>Too much time spent in writing about stories than talking about them </li></ul>Emphasizes on documentation over conversation - Encourage story writers to be very conscious, include fewer details Thinking Too Far Ahead <ul><li>Stories are hard to fit on note cards </li></ul><ul><li>Proposes a template to capture all of the details </li></ul><ul><li>Finer estimates are expected </li></ul>Large upfront “requirements engineering” efforts. - Refresher course on the strengths of stories Frequently Splitting Too Many Stories - Trying to fit right amount of work in an iteration - Tendency to fill up 100% of the team’s capacity. - Look for stories that make sense to be split.
    18. 18. Story Smells cont’d… Smell Symptom Impact Action Customer Has Trouble Prioritizing Customer wants bits and pieces of the stories to be delivered. Delivered stories are not completely valuable. <ul><li>Split stories </li></ul><ul><li>Clearly express business values </li></ul><ul><li>Request customer to write stories </li></ul>Customer Won’t Write And Prioritize Stories <ul><li>Customer will not accept the responsibility </li></ul>Difficult to develop “ we’re all in this together” attitude. <ul><li>Find a way to let the customer off the hook </li></ul><ul><li>Create an environment for the customers to express their opinions </li></ul><ul><li>takes full responsibility. </li></ul>
    19. 19. Additional Topics <ul><li>Handling Non-functional requirements </li></ul><ul><ul><li>Additional nonfunctional requirements can be captured in any appropriate form. </li></ul></ul><ul><li>Paper or Software? </li></ul><ul><ul><li>Paper – imprecise, limited details, easy to sort </li></ul></ul><ul><ul><li>Software – tendency to be precise, allows to capture test cases, distributed team, certification that requires traceability </li></ul></ul><ul><ul><li>Recommended to start with paper and then switch to software if compelled. </li></ul></ul><ul><li>User Interface </li></ul><ul><ul><li>Iterative process can lead to iterative changes in the UI </li></ul></ul><ul><ul><li>Consider adding some practices from Agile Usage-Centered Design to avoid iterating the user interface. </li></ul></ul><ul><li>Retaining Stories </li></ul><ul><ul><li>Err on the safe side and retain the stories </li></ul></ul><ul><li>Stories for Bugs </li></ul><ul><ul><li>Each bug report its own story, or combine bugs into one story. </li></ul></ul>