HOW TO WRITE USER STORIES - IIBA Vancouver...•Writing user stories in an agile environment...

Post on 15-Jul-2020

12 views 1 download

Transcript of HOW TO WRITE USER STORIES - IIBA Vancouver...•Writing user stories in an agile environment...

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?