Upload
others
View
25
Download
1
Embed Size (px)
Citation preview
HOWTOWRITEUSERSTORIES
(ANDWHATYOUSHOULDNOTDO)
StuartAshman,QADirectoratMioGlobalBobCook,SeniorProductDevelopmentManager,Sophos
Welcome
Thispresentationwilldiscuss…• Writinguserstoriesinanagileenvironment• Writinguserstoriestofacilitategooddeveloperhabits• Writinguserstoriesfortestability• Writinguserstoriesthatresultinsuccessforthebusiness
WhoWritesUserStories?
Needsthe“threeamigos”toworktogether• BusinessAnalyst/ProductManager• Developers• Testers
Mayhaveanadditional“amigo”forUX
RoleandOwnership
BusinessAnalyst/ProductManager• CustomerorCustomerProxy• Ownstherequirements• Ownsthejustificationforrequirements• Ownsthedecisiontochangerequirements
RoleandOwnership
Testers• Ownsthetestingartifactsandtools• Ownstheriskanalysisforbusinessdecisions• Doesnotowndecisions(andprobablyshouldn’t)
Developers• Ownstheimplementation• Doesnotownrequirements(andprobablyshouldn’t)
(BA)Customer’sPerspective
• IwanttomakesureIgetwhatIwanted
• IwanttoensureIgetthatasquicklyaspossible
• IwanttobesurewhatIgetworkswell
• Iwanttoseeademofrequently
Tester’sPerspective
• Iwanttoclearlyunderstandwhatisexpected
• Iwanttoclearlyunderstandwhatischanging
• So,thatIcanunderstandtherisksandhelpavoidormitigatethem
• Iwanttohelpprovewedeliveredwhatthecustomerwantedandthatwe’built’thatsolutionwell
Developer’sPerspective
• Iwanttoclearlyunderstandwhatisexpected
• Iwanttodesignthebestsolutionthatmeetstheexpectations
• Iwanttodeliverthatsolutionefficiently
• IwanttogetfeedbackquicklytoknowIdidthiswell
WhyDoWeWriteStories?
Ourspecieshasalwayssharedinformationthroughstories.Sciencetellsusthatourbrainsaremoreactiveandengagedwhenwehearortellanarrative.
Wemustengagethethree(orfour)“amigos”inclusivelyinastory
EncouragingGoodDeveloperHabits
• Ensuringwetakethetimetoclearlyunderstandtherequirements
• Thinkingofanddesigningtestsbeforewedesignasolution(TDD)
• Engagingotherswithskillsinriskanalysisandtestdesigntoimprovethesolutiondesign
EncouragingTestability
• Enablingtestfirstapproach
• Providingopportunitytopositivelyinfluencedesign
• Facilitatingautomation
UserStoryExample#1
On-access scanner finds malware
• Malicious files should be blocked
• Clean files should not be blocked
• System response time should be unaffected
UserStoryExample#1
Thingsthatarewrongwiththisstory:• Overlybroad;thisisaBIGtaskfordevelopers• Doesn’tdefine“malicious”vs.“clean”• Doesn’tdefine“block”• Unachievableperformancerequirements
UserStoryExample#2
Button class gets Verify() method
• Works on square and round buttons
• Button code should check whether its active or inactive
• Return TRUE if active
• Return FALSE if inactive
UserStoryExample#2
Thingsthatarewrongwiththisstory:• Nomeasurablecustomervalue• Developer–centric;noend-to-endfunctionality• Howcanyoutestthis(outsideofunittests)?
UserStoryExample#3
API: CRUD API for Settings
• As an API user, I can retrieve, create, update and delete settings, so that I can set properties for viewing health reports
UserStoryExample#3
Thingsthatarewrongwiththisstory:• Scopeistoobroad- 4APIendpointsorverbs• ImpliesweknowwhoorwhatanAPIuseris• Impliesweknowwhyweneedtocreate,read,updateordeletesettingsforhealthreports• Noindicationofconstraintsorlimitations– anylimitstohowmanysettings?• Impliesweknowwhatthesesettingsareandwhytheymatter
AttributesofGoodUserStories
• Cleardefinitionofwhothecustomeris(who isthisfor)• Visibleandmeasurablecustomervalue(why theycare)• Cleardefinitionofrequirementsandconstraints(thewhat)• Clear“definitionofdone”(knowwhen wearedone)• Highleveldesignofthesolution(thehow)• Therightsizeandimpact• achievablewithinasprint• theappropriatethingtoworkonnow
IndicatorsofBadUserStories(1/2)
• Noclearindicationofwhatwearebeingaskedtodeliver• Whothisisfor?• Whydo‘they’needit?• WhatdoesDONE looklike?• Howdoweverifyitdoeswhatwewant?• HowdoweverifyitdoesNOTdowhatweDON’Twant?
IndicatorsofBadUserStories(2/2)
• Notclearwhatischanging• Insufficientdetailaboutuserimpacts• NospecificplanofAPIchanges
• Notclearwhattheeffectsofthechangemaybe• Whoelsemightbeaffected?Otherteams?• Lackofdiscussionformigration,upgradescenarios• Securityimplications?Performanceimplications?
Storymap
• Buildingsignificantnewfunctionalityforanyproductrequiresmoreeffortthanasinglestoryinasinglesprint
• Likea“roadmap”goodstoryplanningshouldcreatea“storymap”• Seriesofstoriesthatlinktogetherintolargerfunctionality• Eachsubsequentstoryshouldaddincremental,end-to-end value• Needtobeawareofinter-storydependencies• Sometimesyoucandostoriesinparallel,andsometimesyoucan’t
Storymapexample
Status Events Settings
Let’sBuildanewUserInterface!
Storymapexample
BasicUI StatusTiles
EventsTab
SettingsTab
EventTypeC
EventTypeB
EventTypeA
SettingA
SettingB
SettingC
EventFilters
Whatdidwecover?
• Thewho– 3(or4)“amigos”andtheirrolesandperspectives
• Attributesofgoodandbadstories
• Examples
• StoryMap
Questions?