User storiesa practical introduction     Marcus Hammarberg
The application should work       krav.doc     fine
http://4.bp.blogspot.com/_HAjZsLKwoHM/S7jPnPD57PI/AAAAAAAAAgY/pqr7zqRJ0ys/s1600/30-scout_promise.gif
http://www.adem.arkansas.gov/ADEM/Divisions/Preparedness/Planning/Images/Planning.jpg
http://faithoncampus.com/wp-content/uploads/2010/12/conversations-large.jpg
Tests     asdocumentation
WHATHOW
User story     ≠Requirements
Why?      Why?                 Why?       Why?Why?      Why?
http://www.irtc.org/ftp/pub/stills/2003-08-31/dali.jpg
http://ydre1952.files.wordpress.com/2011/01/bc3a4st-fc3b6re-datum.jpg
§
As a [role]I want [feature]So that [benefit]
As a [role]I want [feature]So that [benefit]so that [benefit]
In order to [benefit]As a [role]I want [feature]
In order to keep track of my   savings As a saver in the bankI want a simple overview over all   my savings accounts
In order to protect my   economical statusAs an user of the bankI want to log in using twitter
http://www.moneyandshit.com/wp-content/uploads/2011/04/wat.jpg
Verbal communication
Everybody get them
Right sized
Iterative, incremental    development
User interfaceBusiness logic Data access
User interfaceBusiness logic Data access
User interfaceBusiness logic Data access
User interfaceBusiness logic Data access
User interfaceBusiness logic Data access
http://www.flickr.com/photos/puuikibeach/3435696039/sizes/l/in/photostream/Encourage us to wait    with details
Rolling wave planning
“They don’t know what     they want”
How to write agreat user story       http://jenniferdawnbrody.com/wp-content/uploads/2011/12/ink-pen.jpg
Divide   &Conquer
INVEST
INVESTIndepentent
INVESTIndepententNegotiable
INVESTIndepententNegotiableValuable to users or customers
INVESTIndepententNegotiableValuable to users or customersEstimable
INVESTIndepententNegotiableValuable to users or customersEstimableSmall
INVESTIndepententNegotiableValuable to users or customersEstimableSmallTestable
Roller         http://www.flickr.com/photos/xjrlokix/3932488768/sizes/l/in/photostream/
Begin with the goal!
User story slicing         http://www.flickr.com/photos/slurm/3546246044/sizes/l/in/photostream/
Yes, it can be done
Write stuff that can     be done     http://www.triathlonwoerden.nl/content/24501/news/clnt/3298551_1_org.jpg
Note any limitations              http://www.flickr.com/photos/ajnabee/16141492/sizes/l/in/photostream/
Avoid GUI description
In order to [benefit]As a [role]I want [feature]
Practical excersiseDiverge and merge
Practical exercise•   Indepentent•   Negotiable                           In order to [benefit]•   Valuable to users or    ...
Gatheringuser stories        http://3.bp.blogspot.com/-_j18vwcNcuY/Tk-WDYlM3II/AAAAAAAABso/jsN6So-YJbQ/s1600/Easter%2Begg%...
User story mapping         http://www.agileproductdesign.com/presentations/user_story_mapping/index.html
Workshops      http://www.pivotaldrama.com/images/drama.chat.jpg
3 amigoshttp://www.lastfm.se/music/The+Three+Amigos
Estimating
How big is this rock?                 http://imgcache.ifans.com/forums/imgcache/13714.png
Now comparehttp://www.stonetohome.com/media/gbu0/prodlg/Yorkstone%20Rockery.jpg                                           ...
Story points
T-shirt sizesS      M                                      L              http://www.hungerprojektet.se/2011/09/vill-du-sy...
Planning poker
http://www.flickr.com/photos/ell-r-brown/3621911160/sizes/l/in/photostream/
Estimates are wasteful  Estimating is not
Planning             TimeFeatures              Resources
Planning Quality              TimeFeatures              Resources
Sprint planning
Sprint planningWhen do we want       Timeto be done?
Sprint planningWhen do we want        Timeto be done?Who are in theteam?                              Resources
Sprint planningWhen do we want                  Timeto be done?Who are in theteam?Which features willwe manage?           ...
Burndown100 hleft0hleft        Start              End
Burndown100 hleft0hleft        Start              End
Burndown100 hleft0hleft        Start              End
Burndown100 hleft0hleft        Start              End
Burndown100 hleft0hleft        Start              End
Burndown100 hleft0hleft        Start              End
Burndown100 hleft0hleft        Start              End
Burndown100 hleft0hleft        Start              End
Test i user stories
Vad är klar?
Coded
CodedDelivered
CodedDeliveredAccepted
CodedDeliveredAcceptedDocumented
CodedDeliveredAcceptedDocumentedTested
Goal in agile testing  Not to find bugsMake sure bugs never    comes in in   the first place
Write tests before codin
Exempel      http://www.tie-knots.org/images/krawattenknoten-kleiner-windsorknoten.gif
Given [context]When [event/action]Then [new state
Scenario 1: Account is in creditGiven the account is in credit And the card is valid And the dispenser contains cashWhen t...
Scenario 2: Card annulledGiven that the card is annulledWhen the Account holder requests €50Then the dispenser should keep...
Summing upAs a [role]I want [feature]So that [benefit]
www.marcusoft.net         @marcusoftnetmarcus.hammarberg@avegagroup.se
www.marcusoft.net         @marcusoftnetmarcus.hammarberg@avegagroup.se
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Userstories a practical intro
Upcoming SlideShare
Loading in …5
×

Userstories a practical intro

2,432 views

Published on

This is a presentation that introduces some core concepts on and around user stories.

Published in: Business, Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,432
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
29
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n
  • User stories - what’s the first that falls into your mind when you hear the word?\n\nFor me it was fairy tales told by an user... \n\nAnd then I realized that it was requirements... but small? \n\n
  • Some people says: “Requirements as one sentence”\n\nThat’s nice - short documents is better than long ones right?\n\nBut you could write; “The application should work”\nAnd that’s a bit unclear now isn’t it?\n\n
  • My name is Marcus Hammarberg\n
  • I work at Avega Group as a contractor doing agile / lean coaching with focus on system development\n\n
  • I have 1 wife\n\n
  • 2 hobbies\n\n
  • and 3 kids\n\n
  • I’ve been a programmer ...\n\n\n
  • since 1998, mainly on the Microsoft stack\n\n
  • During the last 8 years I’ve taken more and more interest in how you can work effectively together with system development\n\n\n
  • using agile methods such as Scrum or Kanban\n
  • Michael Cohn is the name of the man who has written the reference work around user stories - user stories applied. It’s still a very good read and current. \n\nThis presentation is based on that book but I’ve added my own experiences from using techniques such as BDD and Specification By example\n\n
  • The book describes an user story as:\na promise of a conversation we will have\nSomething we will take more about\n\n\n\n
  • And further:\nA written descriptions that is used for planning and estimation\n\nA little text that we can use to plan and estimate how much work we have ahead of us\n\n
  • Through conversations we find out the details around the user story\n
  • One way to document those conversations is as tests or acceptance criteria\n\nIf you are to write test for a function you HAVE to know what it’s all about. In great detail. \n\nSo in effect we’re making sure that we understand the story in the same way. \n\n\n
  • One important aspect of an user story is that it’s describing something that gives an end user some value from the feature that the story describes. \n\nIt’s not a description on HOW to build the system. \n\nBut rather WHAT the user wants.\n\n\n
  • One important aspect of an user story is that it’s describing something that gives an end user some value from the feature that the story describes. \n\nIt’s not a description on HOW to build the system. \n\nBut rather WHAT the user wants.\n\n\n
  • You could go so far as to say that an user story is not a requirement. \n\nOften you document the business rules and requirements in other ways.\n\nUser stories is just a way to split up a requirement in smaller parts to be handled in iterative incremental delivery\n\n
  • But why is user stories so well spread and loved in the agile community?\nWhy do we want to write small requirements?\n\n
  • It’s a common thing that developers (me included) thinks that we get the requirements too late, but in most cases they are actually written to early.\n\n
  • Requirements have best-before-date. They rot if the lie around for too long, right?\n\nIf you write a requirment today and leave it, what are the odds that you can just pick it up and code away on it a year from now?\n\nSlim, huh? Things change\n\n
  • So by writing small, parts of requirements we give ourselves possiblities to decided later. To change course, take another road later. \n\nWe don’t have to write all the details up front - we can defer the specification of those until we really need them. \n\nJust imagine us writing a big specification with all the details and then find that it was down-prioritized against something else. Waste - in it’s purest form. \n
  • Ok so an user story should be short. \n\nBut what is enough. When have I written enough?\n\n
  • An initial good tips is to write it on a small paper, like a stickie. \nWith an ordinary pen. \n\nThat limits the physical space that you have to your disposal. \n\nBut sadly it still gives you the possiblity to write: “The system should work!”\n\n
  • Ett annat bra tips är att börja prata om acceptanskriterier. \n\nDå skapar man sig en förväntan om hur “stor” user storyn är. \n\nMan skriver ner ett par saker som måste fungera för att anse att man är klar. \n\nHey - då börjar vi redan tänka på hur det ska testas också vilket alltid är bra att få med tidigt. Jag återkommer till detta\n
  • To help with that there is a template for user story that I recommend:\n\nAs a [role]\nI want [feature]\nSo that [benefit]\n\nThis help you to focus and still write short\n\nThere’s a part in this that I love:\n“So that [benefit]”\nI never read that in a use case. Even 40-pages ones :)\n\nThis is the reason for us to do this story. If there isn’t a reason for it (or a bad one) then we probably could use our time better somewhere else.\n\n
  • In fact some people thinks that it’s so important that they put the reason of the story at the top of the template. \n\nThis is why we do this, right?\n\n
  • Here’s an example\n
  • And here another\n
  • Ok.. Ok... But WAT?! \nWAT is it that will be so great by using user stories then?\n\n
  • First and foremost it will “force” us to communicate.\n\nWhen we talk face-to-face we communicate so much more information than we do in written words. \n\nThink about why we created smileys for example - because irony and jokes is easily mis-interpretted\n\nBesides that we create a dynamic and learning from each other, we feel as being part of the process. \n\n\n
  • An User story is easy to understand. \n\nEven a non-techie understands them.\nEven a techie understands them. \nEven our customers might understand, for all I know.\n\nThat said - you should require some domain knowledge. Every concept need not to be explained from the ground up on every user story. \n\n
  • An User story is small. \n\nTo get to the right size we need to “break” bigger requirements into these smaller slices of that requirements. \n\nAnd when we do that activity we learn about the details of the requirement. \n\nSo - what’s the right size... \nWell not too big, not to small... Right sized - quite simply\n\n
  • Using user stories gives us small items that is perfectly suitable for iterative development where a small increment of a complete function is delivered\n\nAn user story underlines the fact that there is an user benefitting from the function, so we want each increment to add to that. \n\n
  • In the same manner you want to deliver a whole function, although not a complete function. A small slice of the system if you want. \n\nLike this: [CLICK]\n\nAnd not like this: [CLICK]\n\nOr this: [CLICK]\n\n
  • In the same manner you want to deliver a whole function, although not a complete function. A small slice of the system if you want. \n\nLike this: [CLICK]\n\nAnd not like this: [CLICK]\n\nOr this: [CLICK]\n\n
  • In the same manner you want to deliver a whole function, although not a complete function. A small slice of the system if you want. \n\nLike this: [CLICK]\n\nAnd not like this: [CLICK]\n\nOr this: [CLICK]\n\n
  • In the same manner you want to deliver a whole function, although not a complete function. A small slice of the system if you want. \n\nLike this: [CLICK]\n\nAnd not like this: [CLICK]\n\nOr this: [CLICK]\n\n
  • In the same manner you want to deliver a whole function, although not a complete function. A small slice of the system if you want. \n\nLike this: [CLICK]\n\nAnd not like this: [CLICK]\n\nOr this: [CLICK]\n\n
  • In the same manner you want to deliver a whole function, although not a complete function. A small slice of the system if you want. \n\nLike this: [CLICK]\n\nAnd not like this: [CLICK]\n\nOr this: [CLICK]\n\n
  • Earlier we learned that an user story is a “promise of a conversation we will have”. It’s not the complete requirement. \n\nWe will talk it out. Later. And then we will get all the details needed for this user story. \n\nThis is well-aligned with how agile methods looks on requirements. Do it Just-in-Time instead of creating a stock of specifications, just-in-case, that just run the risk of getting old. \n\n
  • Check out rolling wave planning and you see what I mean. \n\nStuff that is far from being developed can be big rocks that we haven’t started to break down yet. It’s ok - we don’t need to know more about it right now. \n\nBut as you get closer to manufacturing (the shore) you’ll need to clear out the details enough to understand what you are building. \n\n
  • No - they don’t. \nNeither do you. \nNobody does - to get there you’ll need to cooperate. And communication. \n\n
  • Ok - stop the bullshit!\nHow do I write a great story?\n\n\n
  • Firstly; the work is not just cracking you fingers and write the stories out. \n\nRather is more about breaking a big feature down to a more appropriate size. A size that can be handled by our team in 2 weeks for example.\n\nSo if you have a big story like “Customer want to see all their engagement with us” you need to break it down to, for example:\n“As a bank customer I want to see my banking accounts on the overview in order to get a quick look on my economical state”\n“As a insurance customer I want to see my insurances on the overview in order to get a great overview of my insurance situation”\n“...”\n“...”\n\n
  • There’s a wellknown acronym that tells us to INVEST in our user stories\n\nIndependent - this means that each story should be independent from others, as far as possible. Since we will use them to prioritize and estimate we want to be able to change the order of them, without having chains of stories coming along with it. \n\nNegotiable - this is not the requirements, just a reminder that we will talk it more later. The exact content will be discussed later. \n\nValuable - each story should give an user (or customer) value. The users doesn’t care if we use MVC or WebForms. That’s not content suitable for a story. Describe it in terms of value for our customers.\n\nEstimable - the story must be written so that you can estimate it’s size. You need to understand it enough for example. If it’s too big you need to break it down. Story points can be useful here - more on that later. \n\nSmall - an user story should be in the “right” size. Small but not too small. What’s the value for an user to edit the first name? Prefer small but not too small. \n\nTestable - how do we know when we are done? You need to be able to answer the question: “When are you done?”Write the acceptance criteria on the flip side of the sticky for example.\n\n
  • There’s a wellknown acronym that tells us to INVEST in our user stories\n\nIndependent - this means that each story should be independent from others, as far as possible. Since we will use them to prioritize and estimate we want to be able to change the order of them, without having chains of stories coming along with it. \n\nNegotiable - this is not the requirements, just a reminder that we will talk it more later. The exact content will be discussed later. \n\nValuable - each story should give an user (or customer) value. The users doesn’t care if we use MVC or WebForms. That’s not content suitable for a story. Describe it in terms of value for our customers.\n\nEstimable - the story must be written so that you can estimate it’s size. You need to understand it enough for example. If it’s too big you need to break it down. Story points can be useful here - more on that later. \n\nSmall - an user story should be in the “right” size. Small but not too small. What’s the value for an user to edit the first name? Prefer small but not too small. \n\nTestable - how do we know when we are done? You need to be able to answer the question: “When are you done?”Write the acceptance criteria on the flip side of the sticky for example.\n\n
  • There’s a wellknown acronym that tells us to INVEST in our user stories\n\nIndependent - this means that each story should be independent from others, as far as possible. Since we will use them to prioritize and estimate we want to be able to change the order of them, without having chains of stories coming along with it. \n\nNegotiable - this is not the requirements, just a reminder that we will talk it more later. The exact content will be discussed later. \n\nValuable - each story should give an user (or customer) value. The users doesn’t care if we use MVC or WebForms. That’s not content suitable for a story. Describe it in terms of value for our customers.\n\nEstimable - the story must be written so that you can estimate it’s size. You need to understand it enough for example. If it’s too big you need to break it down. Story points can be useful here - more on that later. \n\nSmall - an user story should be in the “right” size. Small but not too small. What’s the value for an user to edit the first name? Prefer small but not too small. \n\nTestable - how do we know when we are done? You need to be able to answer the question: “When are you done?”Write the acceptance criteria on the flip side of the sticky for example.\n\n
  • There’s a wellknown acronym that tells us to INVEST in our user stories\n\nIndependent - this means that each story should be independent from others, as far as possible. Since we will use them to prioritize and estimate we want to be able to change the order of them, without having chains of stories coming along with it. \n\nNegotiable - this is not the requirements, just a reminder that we will talk it more later. The exact content will be discussed later. \n\nValuable - each story should give an user (or customer) value. The users doesn’t care if we use MVC or WebForms. That’s not content suitable for a story. Describe it in terms of value for our customers.\n\nEstimable - the story must be written so that you can estimate it’s size. You need to understand it enough for example. If it’s too big you need to break it down. Story points can be useful here - more on that later. \n\nSmall - an user story should be in the “right” size. Small but not too small. What’s the value for an user to edit the first name? Prefer small but not too small. \n\nTestable - how do we know when we are done? You need to be able to answer the question: “When are you done?”Write the acceptance criteria on the flip side of the sticky for example.\n\n
  • There’s a wellknown acronym that tells us to INVEST in our user stories\n\nIndependent - this means that each story should be independent from others, as far as possible. Since we will use them to prioritize and estimate we want to be able to change the order of them, without having chains of stories coming along with it. \n\nNegotiable - this is not the requirements, just a reminder that we will talk it more later. The exact content will be discussed later. \n\nValuable - each story should give an user (or customer) value. The users doesn’t care if we use MVC or WebForms. That’s not content suitable for a story. Describe it in terms of value for our customers.\n\nEstimable - the story must be written so that you can estimate it’s size. You need to understand it enough for example. If it’s too big you need to break it down. Story points can be useful here - more on that later. \n\nSmall - an user story should be in the “right” size. Small but not too small. What’s the value for an user to edit the first name? Prefer small but not too small. \n\nTestable - how do we know when we are done? You need to be able to answer the question: “When are you done?”Write the acceptance criteria on the flip side of the sticky for example.\n\n
  • There’s a wellknown acronym that tells us to INVEST in our user stories\n\nIndependent - this means that each story should be independent from others, as far as possible. Since we will use them to prioritize and estimate we want to be able to change the order of them, without having chains of stories coming along with it. \n\nNegotiable - this is not the requirements, just a reminder that we will talk it more later. The exact content will be discussed later. \n\nValuable - each story should give an user (or customer) value. The users doesn’t care if we use MVC or WebForms. That’s not content suitable for a story. Describe it in terms of value for our customers.\n\nEstimable - the story must be written so that you can estimate it’s size. You need to understand it enough for example. If it’s too big you need to break it down. Story points can be useful here - more on that later. \n\nSmall - an user story should be in the “right” size. Small but not too small. What’s the value for an user to edit the first name? Prefer small but not too small. \n\nTestable - how do we know when we are done? You need to be able to answer the question: “When are you done?”Write the acceptance criteria on the flip side of the sticky for example.\n\n
  • One way to break an user story down is to write different stories for different roles that uses the system. \n\nThe same functionality can be viewed differently by different roles for example.\n\n
  • If you start from a clean sheet it can be a good idea to start from the goal. \n\nWhat is it the user wants to achieve? Why are they using the feature?\n\nStart by writing down the “So that”-part\n\n\n
  • Slice up big stories to smaller. But make slices all through the system. \n\n\n\n\n
  • And before anybody even thinks it ...\nIt CAN be done. Your requirements too... \n\n\nTry to be creative in how you slice the story but do a complete slice of the system in each slice... \n
  • Try to avoid to describe processes or flows that never ends. \n“As a banking customer I want to control my account to see in and output”\n\nBetter is to write “closed” stories that is a snapshot or have a start and an end\n“As a banking customer I want to see my account status to know what have happened”\n\n
  • If there’s any special limitations for this story then write it as you discuss them. \n\n\n
  • Avoid to describe the graphical user interface\n\nThe user doesn’t want to pick from a drop down list - he want to pick a product\nThe user doesn’t want to sort a table - he want to sort the listing of accounts\n\nBy writing in terms of the GUI (or any other technical component such as database tables) we lock down our solution and loses the possibilities to discuss outside the technical group of the team.\n\n
  • Skriv för en användare och använd den användarens rollnamn. \n\n\n
  • Skriv “En användare kan söka bland sina konton” inte \n\n“En sökning kan ske bland kontona”\n
  • All these recommendations is actually summarized to a great deal in this simple template\n\n
  • Let’s try this. \n\nTake a function some well known service you use, like a internet bank.\n“Pay bills” for example\n\nDivide in groups of 3-5 people and try to break that down using user stories, to a size that can be implemented within 2 weeks. \nWhich activities is needed to pay bills?\n\nTake 15 minutes\n\nThen we meet again and compare and learn from each other. \n
  • Here are some support for the exercise \n
  • So, in a way, you could argue that the stories is out there...\n\nThe problem is that they are spread out in the head of many different people. Some parts of it will not show until you have talked for awhile\n\nSo gathering them could prove quite tricky. \n\nHere is a few alternatives.\n\n
  • One way is to use a technique called user story mapping. \n\nThis topic is a complete talk (at least) for itself, but very simply you set up a timeline for the big activities that an user can perform in your system. \n\nUnderneath you can flesh out the details in more and more advanced manner. \n\nSo for a system like Outlook (tm) you’ll have a top level row like: \nWrite Mail, Read Mail, Create invitation, manage calender etc. \n\nUnderneath each of them you’ll have details in those steps. For Write Mail:\nWrite simple textbased mail\nWrite HTML mail\nGet adresses from contacts \nAdd attachments\n...\n\nSo you get both the overview and the details on the same view. You can “zoom in” on the details when needed and “zoom out” to the overview when that’s needed.\n\n
  • To harvest the minds of many the best way is to write (or at least generate ideas) in workshops. Using the divide and merge technique we tried before for example. \n\n\n
  • If you have a hard time getting the whole project in the same room you should at least make sure that the core competences is gathered. \n\nThis will make sure that other aspects than you own will be considered which probably is good thing. \n\n
  • To be able to give an good estimate of how long time something will take us to create we need to know a lot about it’s details. What’s included?\n\nAnd you don’t. Never have. Never will.\n\nSo estimating in agile context is all around relativity. Something that humans actually is much better at than exact numbers. \n\n
  • So give me a guess - how big is this?\n\nHard huh? \n
  • Let’s try something easier...\n\nWhich is the bigger one?\nHow much bigger is the big one than the small one?\n\nMuch easier, right? \nAnd it turns out that humans are much better on estimating relativity than exact meassurements. \n\n“If you get a bad answer - ask a simpler question” - David J Andersson\n\n
  • To estimate the size of work in agile project we compare user stories against each other. \n\nWe set a set of points on them that really doesn’t have a meaning; called story points. The great thing about story point is that they represent how the team has percieved the size of the story. \n\nFor one team a story point can equal 1 days work, for another 1 weeks work and a third an hour. Really cannot compare the teams estimates against eachother\n\nAnd that is not important either - it’s the relativity that is! \n\nAll we know is that a story of 2 points is smaller than one of 3. And a story of 5 points is roughly double the work of the story of 3 points. \n\n
  • One of the problem with story points is that they can mean just whatever. Yeah, that’s right, the very thing I just told you were great with them. \n\nSo you cannot compare team against each other. But it’s easy to fall into that trap and start drawing conclusions from those comparisons.\n\nSo this had led a lot of team to ditch story points and instead talk about T-shirt size. Small Medium Large. \n\nThis concept holds some of the uncertainty and relativity that we need. \n\nThey are not exact and hence are hard to draw... Where story points is good. You have to chose. \n\n\n
  • One way of estimating as a group is using planning poker. \n\nSo pick a feature to discuss.\nThen pick a card, don’t show it to anyone. \nOn a given signal - show it to each other. \nIf you all have the same card - you have come to an agreement. \nIf not - discuss why you think different numbers and then do the exercise again\n\nThe special cards is:\n? - I have no clue\ncoffecup - my brain is fried. Give me coffee and a break before we continue\n
  • So the aim of planning poker is to discuss, as it is with many thing. \n\nThe actual number doesn’t matter too much - but the discussion does. This is where you clear you misconceptions and differences and clarify the feature enough to reach consensus. \n
  • When did a customer call you up and thanked you for the great estimates? \n
  • We can use user stories to plan how much we will be able to complete during a period of time. \n\nWhen we plan in an agile context we are balancing 3 things against each other:\nTime \nResources\nFeatures\n\n\n
  • Yeah right - for got one thing... \nQuality. But usually we don’t cut back on quality because that is very costly in the form of rework. \n\nAll these cannot be locked and unchangeable. \nOften we lock 3 of these:\nTime - let’s timebox and decide on when we shall be done\nResources - we often know who are in the team (and to what percentage)\nQuality - as above - let’s do the best quality we can\n\nAnd that just leaves functionality, right? Let’s vary that.\n\n\n
  • It’s now we’re happy that we have broken down our user stories into smaller parts so that they are in the “right” size for planning. \n\nBecause we can now lay all small user stories in a long row, in prioritized bussiness value and just take on as much as we will manage in the next sprint/iteration. \n\nThis is how I plan:\n\n\n
  • 1 - When do we want to be done?\n\n2 - Who are in the team? How much are we availble to the project?\n\n3 - Given those constraints... How much can we then manage during the next sprint?\n\nThis is called time boxing. Decide when you shall be done and let the features vary based on that. \n\n\nThis works best if you have a prioritized list to start from and those items are in the “right” size...\n\n
  • 1 - When do we want to be done?\n\n2 - Who are in the team? How much are we availble to the project?\n\n3 - Given those constraints... How much can we then manage during the next sprint?\n\nThis is called time boxing. Decide when you shall be done and let the features vary based on that. \n\n\nThis works best if you have a prioritized list to start from and those items are in the “right” size...\n\n
  • 1 - When do we want to be done?\n\n2 - Who are in the team? How much are we availble to the project?\n\n3 - Given those constraints... How much can we then manage during the next sprint?\n\nThis is called time boxing. Decide when you shall be done and let the features vary based on that. \n\n\nThis works best if you have a prioritized list to start from and those items are in the “right” size...\n\n
  • 1 - When do we want to be done?\n\n2 - Who are in the team? How much are we availble to the project?\n\n3 - Given those constraints... How much can we then manage during the next sprint?\n\nThis is called time boxing. Decide when you shall be done and let the features vary based on that. \n\n\nThis works best if you have a prioritized list to start from and those items are in the “right” size...\n\n
  • 1 - When do we want to be done?\n\n2 - Who are in the team? How much are we availble to the project?\n\n3 - Given those constraints... How much can we then manage during the next sprint?\n\nThis is called time boxing. Decide when you shall be done and let the features vary based on that. \n\n\nThis works best if you have a prioritized list to start from and those items are in the “right” size...\n\n
  • 1 - When do we want to be done?\n\n2 - Who are in the team? How much are we availble to the project?\n\n3 - Given those constraints... How much can we then manage during the next sprint?\n\nThis is called time boxing. Decide when you shall be done and let the features vary based on that. \n\n\nThis works best if you have a prioritized list to start from and those items are in the “right” size...\n\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • And with this in place we can now create a chart that shows us and everybody interested how far we have come and how much we have left. \n\nThis is called a burn down chart\n\nEach day when we meet we can update it and ... \n[CLICK] [CLICK] [CLICK] ... \n\nand show our progress.\n\n[CLICK]\nAnd draw the the trend at the same time. \n\nWe can see how we are doing against an ideal state (black line)\n
  • Have you ever heard a tester saying that they want to take part in the process earlier? \n\nI have and I think it’s superimportant. \n\nIf you want to move fast with small increment of the finished product then a steady focus on testing is going to be critical from the get go. \n\nBad quality will only boomerang on us and come back that the worst possible time. \n\n
  • When is a story done?\n[AUDIENCE]\n\n\nMichael Feathers; “This done thing scares me - code is in production or not!”\n\nWhen is something done in your sprints?\n\n
  • At my current client we have adopted a acronym that help us know when something is done. \n\nIt’s spells KLART in Swedish which means DONE. \nBut i’ve translated it here. \n\nCoded - the code is written and checked in\nDelivered - delivered to the right testing environment. Preferable a production like one\nAccepted - the team and the product owner is happy with the functionality\nDocumented - business rules, test cases and use cases is updated\nTested - the feature is tested enough for us feeling secure to release it to production without further testing of it’s details (some integration testing might be needed) \n\nIt’s not perfect. It need to be talked about a bit. But it’s a good start.\n\n\n
  • At my current client we have adopted a acronym that help us know when something is done. \n\nIt’s spells KLART in Swedish which means DONE. \nBut i’ve translated it here. \n\nCoded - the code is written and checked in\nDelivered - delivered to the right testing environment. Preferable a production like one\nAccepted - the team and the product owner is happy with the functionality\nDocumented - business rules, test cases and use cases is updated\nTested - the feature is tested enough for us feeling secure to release it to production without further testing of it’s details (some integration testing might be needed) \n\nIt’s not perfect. It need to be talked about a bit. But it’s a good start.\n\n\n
  • At my current client we have adopted a acronym that help us know when something is done. \n\nIt’s spells KLART in Swedish which means DONE. \nBut i’ve translated it here. \n\nCoded - the code is written and checked in\nDelivered - delivered to the right testing environment. Preferable a production like one\nAccepted - the team and the product owner is happy with the functionality\nDocumented - business rules, test cases and use cases is updated\nTested - the feature is tested enough for us feeling secure to release it to production without further testing of it’s details (some integration testing might be needed) \n\nIt’s not perfect. It need to be talked about a bit. But it’s a good start.\n\n\n
  • At my current client we have adopted a acronym that help us know when something is done. \n\nIt’s spells KLART in Swedish which means DONE. \nBut i’ve translated it here. \n\nCoded - the code is written and checked in\nDelivered - delivered to the right testing environment. Preferable a production like one\nAccepted - the team and the product owner is happy with the functionality\nDocumented - business rules, test cases and use cases is updated\nTested - the feature is tested enough for us feeling secure to release it to production without further testing of it’s details (some integration testing might be needed) \n\nIt’s not perfect. It need to be talked about a bit. But it’s a good start.\n\n\n
  • At my current client we have adopted a acronym that help us know when something is done. \n\nIt’s spells KLART in Swedish which means DONE. \nBut i’ve translated it here. \n\nCoded - the code is written and checked in\nDelivered - delivered to the right testing environment. Preferable a production like one\nAccepted - the team and the product owner is happy with the functionality\nDocumented - business rules, test cases and use cases is updated\nTested - the feature is tested enough for us feeling secure to release it to production without further testing of it’s details (some integration testing might be needed) \n\nIt’s not perfect. It need to be talked about a bit. But it’s a good start.\n\n\n
  • \n
  • To write tests or at least the acceptance criteria before you start developing a feature is a great way to verify that we have understood the same thing. \n\nAnd we get our definition of done in the process\n\n\n
  • To better understand each other we give examples. Imagine how hard it would be to describe how to tie a windsor tie. It’s much easier with a picture that is an example on how to do it.\n\nA good way to write test cases is to write so called Scenarios. \n\nExamples on how to use the feature. \n\n\n\n
  • One way to do this is give an example in form of a scenario, to clarify the story and to state our common knowledge\n\nThese sceanarios can be written in the template Given / When / Then (or translated into any of the nearly 40 supported languages)\n\n
  • One way to do this is give an example in form of a scenario, to clarify the story and to state our common knowledge\n\nThese sceanarios can be written in the template Given / When / Then (or translated into any of the nearly 40 supported languages)\n\n
  • One way to do this is give an example in form of a scenario, to clarify the story and to state our common knowledge\n\nThese sceanarios can be written in the template Given / When / Then (or translated into any of the nearly 40 supported languages)\n\n
  • One way to do this is give an example in form of a scenario, to clarify the story and to state our common knowledge\n\nThese sceanarios can be written in the template Given / When / Then (or translated into any of the nearly 40 supported languages)\n\n
  • One way to do this is give an example in form of a scenario, to clarify the story and to state our common knowledge\n\nThese sceanarios can be written in the template Given / When / Then (or translated into any of the nearly 40 supported languages)\n\n
  • Ta en av era stories från tidigare. \n\nSkriv ner 2 scenarion (ett där det går bra och ett där det går dåligt) genom att använda mallen från tidigare (Givet - När - Så). \n\nSamma grupper. \n\n10 min\nSen jämför\n
  • An user story is small written description of something that we will talk more about. Later. \n\nThey are the building blocks in an agile project where you want to delivery value iterative and incremental.\n\nThey are excellent for planning and testing separately \n\n
  • Please provide me with some feedback. \n\n[Here I usually do a retrospective-like exercise]\n\n
  • Thanks a bunch\n
  • Thanks a bunch\n
  • And so it’s over... Everything went black :)\n
  • Userstories a practical intro

    1. 1. User storiesa practical introduction Marcus Hammarberg
    2. 2. The application should work krav.doc fine
    3. 3. http://4.bp.blogspot.com/_HAjZsLKwoHM/S7jPnPD57PI/AAAAAAAAAgY/pqr7zqRJ0ys/s1600/30-scout_promise.gif
    4. 4. http://www.adem.arkansas.gov/ADEM/Divisions/Preparedness/Planning/Images/Planning.jpg
    5. 5. http://faithoncampus.com/wp-content/uploads/2010/12/conversations-large.jpg
    6. 6. Tests asdocumentation
    7. 7. WHATHOW
    8. 8. User story ≠Requirements
    9. 9. Why? Why? Why? Why?Why? Why?
    10. 10. http://www.irtc.org/ftp/pub/stills/2003-08-31/dali.jpg
    11. 11. http://ydre1952.files.wordpress.com/2011/01/bc3a4st-fc3b6re-datum.jpg
    12. 12. §
    13. 13. As a [role]I want [feature]So that [benefit]
    14. 14. As a [role]I want [feature]So that [benefit]so that [benefit]
    15. 15. In order to [benefit]As a [role]I want [feature]
    16. 16. In order to keep track of my savings As a saver in the bankI want a simple overview over all my savings accounts
    17. 17. In order to protect my economical statusAs an user of the bankI want to log in using twitter
    18. 18. http://www.moneyandshit.com/wp-content/uploads/2011/04/wat.jpg
    19. 19. Verbal communication
    20. 20. Everybody get them
    21. 21. Right sized
    22. 22. Iterative, incremental development
    23. 23. User interfaceBusiness logic Data access
    24. 24. User interfaceBusiness logic Data access
    25. 25. User interfaceBusiness logic Data access
    26. 26. User interfaceBusiness logic Data access
    27. 27. User interfaceBusiness logic Data access
    28. 28. http://www.flickr.com/photos/puuikibeach/3435696039/sizes/l/in/photostream/Encourage us to wait with details
    29. 29. Rolling wave planning
    30. 30. “They don’t know what they want”
    31. 31. How to write agreat user story http://jenniferdawnbrody.com/wp-content/uploads/2011/12/ink-pen.jpg
    32. 32. Divide &Conquer
    33. 33. INVEST
    34. 34. INVESTIndepentent
    35. 35. INVESTIndepententNegotiable
    36. 36. INVESTIndepententNegotiableValuable to users or customers
    37. 37. INVESTIndepententNegotiableValuable to users or customersEstimable
    38. 38. INVESTIndepententNegotiableValuable to users or customersEstimableSmall
    39. 39. INVESTIndepententNegotiableValuable to users or customersEstimableSmallTestable
    40. 40. Roller http://www.flickr.com/photos/xjrlokix/3932488768/sizes/l/in/photostream/
    41. 41. Begin with the goal!
    42. 42. User story slicing http://www.flickr.com/photos/slurm/3546246044/sizes/l/in/photostream/
    43. 43. Yes, it can be done
    44. 44. Write stuff that can be done http://www.triathlonwoerden.nl/content/24501/news/clnt/3298551_1_org.jpg
    45. 45. Note any limitations http://www.flickr.com/photos/ajnabee/16141492/sizes/l/in/photostream/
    46. 46. Avoid GUI description
    47. 47. In order to [benefit]As a [role]I want [feature]
    48. 48. Practical excersiseDiverge and merge
    49. 49. Practical exercise• Indepentent• Negotiable In order to [benefit]• Valuable to users or As a [role] customers I want [feature]• Estimable• Small• Testable
    50. 50. Gatheringuser stories http://3.bp.blogspot.com/-_j18vwcNcuY/Tk-WDYlM3II/AAAAAAAABso/jsN6So-YJbQ/s1600/Easter%2Begg%2Bhunt.jpg
    51. 51. User story mapping http://www.agileproductdesign.com/presentations/user_story_mapping/index.html
    52. 52. Workshops http://www.pivotaldrama.com/images/drama.chat.jpg
    53. 53. 3 amigoshttp://www.lastfm.se/music/The+Three+Amigos
    54. 54. Estimating
    55. 55. How big is this rock? http://imgcache.ifans.com/forums/imgcache/13714.png
    56. 56. Now comparehttp://www.stonetohome.com/media/gbu0/prodlg/Yorkstone%20Rockery.jpg http://imgcache.ifans.com/forums/imgcache/13714.png
    57. 57. Story points
    58. 58. T-shirt sizesS M L http://www.hungerprojektet.se/2011/09/vill-du-synas-pa-min-troja/t-shirt/
    59. 59. Planning poker
    60. 60. http://www.flickr.com/photos/ell-r-brown/3621911160/sizes/l/in/photostream/
    61. 61. Estimates are wasteful Estimating is not
    62. 62. Planning TimeFeatures Resources
    63. 63. Planning Quality TimeFeatures Resources
    64. 64. Sprint planning
    65. 65. Sprint planningWhen do we want Timeto be done?
    66. 66. Sprint planningWhen do we want Timeto be done?Who are in theteam? Resources
    67. 67. Sprint planningWhen do we want Timeto be done?Who are in theteam?Which features willwe manage? Features Resources
    68. 68. Burndown100 hleft0hleft Start End
    69. 69. Burndown100 hleft0hleft Start End
    70. 70. Burndown100 hleft0hleft Start End
    71. 71. Burndown100 hleft0hleft Start End
    72. 72. Burndown100 hleft0hleft Start End
    73. 73. Burndown100 hleft0hleft Start End
    74. 74. Burndown100 hleft0hleft Start End
    75. 75. Burndown100 hleft0hleft Start End
    76. 76. Test i user stories
    77. 77. Vad är klar?
    78. 78. Coded
    79. 79. CodedDelivered
    80. 80. CodedDeliveredAccepted
    81. 81. CodedDeliveredAcceptedDocumented
    82. 82. CodedDeliveredAcceptedDocumentedTested
    83. 83. Goal in agile testing Not to find bugsMake sure bugs never comes in in the first place
    84. 84. Write tests before codin
    85. 85. Exempel http://www.tie-knots.org/images/krawattenknoten-kleiner-windsorknoten.gif
    86. 86. Given [context]When [event/action]Then [new state
    87. 87. Scenario 1: Account is in creditGiven the account is in credit And the card is valid And the dispenser contains cashWhen the customer requests €50Then ensure the account is debited €50 And ensure €40 is dispensed And ensure the card is returned
    88. 88. Scenario 2: Card annulledGiven that the card is annulledWhen the Account holder requests €50Then the dispenser should keepthe cardAnd the dispenser should tell theuser that the card is annulled
    89. 89. Summing upAs a [role]I want [feature]So that [benefit]
    90. 90. www.marcusoft.net @marcusoftnetmarcus.hammarberg@avegagroup.se
    91. 91. www.marcusoft.net @marcusoftnetmarcus.hammarberg@avegagroup.se

    ×