10.07.2015 Views

Agile Requirements & Product Management - Agile Alliance

Agile Requirements & Product Management - Agile Alliance

Agile Requirements & Product Management - Agile Alliance

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Agile</strong> <strong>Requirements</strong> &<strong>Product</strong> <strong>Management</strong>©"2003"Sco)"Adams:"h)p://www.dilbert.com/strips/comic/2003;01;10/Jeff.Pa7onChief.troublemaker,.Comakers.LLCjeff@comakewith.us,.twi7er:.@jeffpa7onwww.comakewith.us.::.youshould@comakewith.us


www.comakewith.us.::.youshould@comakewith.us


www.comakewith.us.::.youshould@comakewith.us


1. <strong>Requirements</strong> considered harmfulHow to think about requirements differently2. Kent’s big ideauser stories and how to use them3. Size mattersepics, themes, story maps, and stories from idea to delivery4. Project success ≠ product successproduct thinking and discovery process5. Finishing on time won’t take a miraclestrategies for estimation, and iterative and incremental deliverywww.comakewith.us.::.youshould@comakewith.us


1Think aboutrequirementsdifferentlywww.comakewith.us.::.youshould@comakewith.us


Stories(are(an(an+dote(to(“requirements”SoBware.development.has.been.steered.wrong.by.the.word.‘requirement,’.defined.in.the.dicIonary.as.“something.mandatory.or.obligatory.”..The.word.carries.a.connotaIon.of.absoluIsm.and.permanence,.inhibitors.to.embracing.change...And.the.word.‘requirement’.is.just.plain.wrong.www.comakewith.us.::.youshould@comakewith.us.


Your.real.goal.is.to.change.the.worldwww.comakewith.us.::.youshould@comakewith.us.


2Kent’s Solution: Storieswww.comakewith.us.::.youshould@comakewith.us


What if your process- the way you work -was your product?What.are.the.big.problems.in.soBware.development?www.comakewith.us.::.youshould@comakewith.us


Specifying.in.wriIng.doesn’t.work.wellh)p://www.cakewrecks.com/www.comakewith.us.::.youshould@comakewith.usCake"Wrecks,"book"by"Jen"Yates,"


Specifying.in.wriIng.doesn’t.work.wellJen.Yates’.Cake.Wrecks:.www.cakewrecks.comwww.comakewith.us.::.youshould@comakewith.us


Specifying.in.wriIng.doesn’t.work.wellJen.Yates’.Cake.Wrecks:.www.cakewrecks.comwww.comakewith.us.::.youshould@comakewith.us


Specifying.in.wriIng.doesn’t.work.wellJen.Yates’.Cake.Wrecks:.www.cakewrecks.comwww.comakewith.us.::.youshould@comakewith.us


Specifying.in.wriIng.doesn’t.work.wellJen.Yates’.Cake.Wrecks:.www.cakewrecks.comwww.comakewith.us.::.youshould@comakewith.us


Specifying.in.wriIng.doesn’t.work.wellJen.Yates’.Cake.Wrecks:.www.cakewrecks.comwww.comakewith.us.::.youshould@comakewith.us


Specifying.in.wriIng.doesn’t.work.wellJen.Yates’.Cake.Wrecks:.www.cakewrecks.comwww.comakewith.us.::.youshould@comakewith.us


Specifying.in.wriIng.doesn’t.work.wellJen.Yates’.Cake.Wrecks:.www.cakewrecks.comwww.comakewith.us.::.youshould@comakewith.us


Specifying.in.wriIng.doesn’t.work.wellSomeEmes"mistakes"are"less"funnywww.comakewith.us.::.youshould@comakewith.us


picture: Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ)Bild[Bild: ARE]further presentations and study available:www.cdw-stiftungsverbund.de → DownloadsPV-based Mini-Grids forElectrification in Developing CountriesThank you for your attention.


BackupParameter Szabó et al. RLI95 % according to text but does notAvailability PV/Battery-System PV/Battery/Diesel-Hybridmatch resultsDiesel transport cost0.08 • travel time in h • nat. diesel 0.02 • travel time in h • nat. dieselpricepricePV cost3,500 €/kW p(70 % modules, 30 %BOS)2,000 €/kW pBattery cost 125 €/kVAh nom120 €/kWhInterest rate 5 % p.a. 8 % p.a.IrradiationDaily GHI, PVGIS (HelioClim) Hourly GHI, DLR (NASA)15'-pixel size27'-pixel size1/3 PV direct (daytime), 2/3 viaLoad curveBattery (nighttime), no seasonalchangesPerformance Ratio70 % (includes battery cycleefficiency)Max DoD 70 %Life timesPV 20 a, Battery 5 aGenset efficiency 36 % or 0.286 l/kWh el30 % or 0.333 l/kWh elOpex PV/Battery2.5 % of Invest p.a.0,01 €/kWhOpex Dieselel(includes genset writeoff)el0.02 €/kWhNational diesel prices 2009 data


Use(discussion(and(modeling(to(build(a(be@er(shared(understanding(www.comakewith.us.::.youshould@comakewith.us.


A"er%modeling%and%discussion%when%we%say%the%same%thing,%we%actually%mean%itwww.comakewith.us.::.youshould@comakewith.us.


Shared'understanding%and%alignment%are%the%objec8ves%of%collabora8ve%work✴ Credit%for%this%illustra8on%goes%to%ThoughtWorks’%Luke%Barret.%%Jeff%PaFon%drew%these%illustra8ons%based%on%Luke’s.%%Luke%doesn’t%recall%where%he%first%saw%this%cartoon.www.comakewith.us.::.youshould@comakewith.us.


Shared documents aren’tshared understandingwww.comakewith.us.::.youshould@comakewith.us


Words(and(pictures(help(everyone(build(shared(understandingwww.comakewith.us.::.youshould@comakewith.us.


Kent’s idea to get betterrequirements:www.comakewith.us.::.youshould@comakewith.us


Stop it.Stop exchanging documents.Tell me your story.If.we.we.could.just.talk.about.this,.we.could.figure.it.out.together.www.comakewith.us.::.youshould@comakewith.us


Tell.stories,.don’t.just.write.stories.What.I.was.thinking.of.was.the.way.users.someImes.tell.stories.about.the.cool.new.things.the.soBware.they.use.does:.“I type in the zip code and itautomatically fills in the city and statewithout me having to touch a button!”I.think.that.was.the.example.that.triggered.the.idea..If.you.can.tell.stories.about.what.the.soBware.does.and.generate'energy'and'interest'and'a'vision'in'your'listener's'mind,.then.why.not.tell.stories.before.the.soBware.does.it?www.comakewith.us.::.youshould@comakewith.us.


The(original(idea(of(a(story(was(simple:(use(it(to(facilitate(a(conversa+onI’ve writtenon the card whatI wantWe’ll needto discovery thedetails of what Ineed to buildtoday?userdeveloperwww.comakewith.us.::.youshould@comakewith.us.


Stories.have.a.simple.lifecycle!?! !CardConversaIonConfirmaIon* Ron Jeffries coined the 3 C’s inExtreme Programming Installedwww.comakewith.us.::.youshould@comakewith.us.


Good conversationsaren’t easyIt’s hard to break out ofthe “requirements”mindsetwww.comakewith.us.::.youshould@comakewith.us


To%build%shared%understanding,%use%sketching%and%recording%on%walls%and%whiteboards%www.comakewith.us.::.youshould@comakewith.us.


What(you(record(during(conversa+ons(works(like(a(vaca+on(photoLooking%at%it%helps%you%remember%details%that%aren’t%in%the%photwww.comakewith.us.::.youshould@comakewith.us.


To%really%solve%problems,%don’t%forget%to%talk%about%outcomes:%who%does%what%differently?outputoutcomewe build thiswe want thiswww.comakewith.us.::.youshould@comakewith.us


The%template%is%a%great%discussion%starterAs aI wantso thatwww.comakewith.us.::.youshould@comakewith.us


BUTwww.comakewith.us.::.youshould@comakewith.us


What%beginners%learn%isn’t%what%experts%do[Don’t%become%a%template%zombie]ShuFollowing:"the"student"copies"techniques"without"adapEng"themHaWhen"learning"to"ski,"beginners"oLen"start"with"a"snowplow.The"goal"isn’t"to"master"the"snowplow"but"to"break"away"from"it.Breaking-away:"the"student"reflects"on"what"has"been"learned"and"breaks"free"from"tradiEons"learning"and"adopEng"other"pracEcesRiTranscending:"the"student"is"now"a"pracEEoner"extending"the"artMore%on%Shu%Ha%Ri%and%agile:%hFp://alistair.cockburn.us/Shu+Ha+Ri


Really(discuss(the(who’s,(what’s,(and(why’sWho.are.the.users.and.what.benefit.do.they.get?..! Discuss"many"possible"users."! Discuss"stakeholders"and"others"that"may"not"directly"use"the"soLware.! Discuss"elements"of"the"system,"or"servicesWhat.will.users.do.in.the.future.using.your.soBware?! Discuss"what"users"will"do"with"the"feature"or"changes"being! Discuss"what"the"system"will"do,"especially"if"we’re"talking"about"a"backend"service"Why.should.your.organizaIon.build.the.soBware?..! Discuss"who"benefits";"it"may"not"be"the"user! Discuss"why"users"would"benefit! Discuss"why"the"organizaEon"would"benefitwww.comakewith.us.::.youshould@comakewith.us.


The(original(idea(of(a(story(was(simple:(use(it(to(facilitate(a(conversa+onI’ve writtenon the card whatI wantWe’ll needto discovery thedetails of what Ineed to buildtoday?userdeveloperwww.comakewith.us.::.youshould@comakewith.us.


Stories(need(to(support(lots(of(conversa+ons(across(lots(of(project(rolesHow do Idescribe to youwhat I want?product.managerBAWhat arethe details ofwhat I need tobuild today?userdeveloperPMUX.Designerwww.comakewith.us.::.youshould@comakewith.us.tester


Stories(need(to(support(lots(of(conversa+ons(across(lots(of(project(rolesHow do Idescribe to youwhat I want?How do Ischedule thiswork and track itits progress?What are thefeatures thatcreate ROI?userproduct.managerPMUX.Designerwww.comakewith.us.::.youshould@comakewith.us.BAHow doI understandusers and theirneeds?developerWhatare the detailsof this feature Ineed tospecify?testerWhat arethe details ofwhat I need tobuild today?How do Iverify thiswork is done?


Cards,(or(items(in(lists,(are(valuable(organizing(toolsYour%volumes%of%story%informa8on%will%be:! wriFen%on%flip%chart%paper,%whiteboards,%or%s8ckynotes! stored%in%wikis,%hard%drives,%or%agile%lifecycle%management%toolsFriends%don’t%let%friends%use%Sharepointwww.comakewith.us.::.youshould@comakewith.us.


What’s.really.wri7en.on.the.cardShort.Itle! One"that’s"easy"to"read"in"backlogs"and"easy"say"in"standup"meeEngs! If"you"catch"yourself"referring"to"the"story"by"it’s"number,"stop"itDescripIon! If"the"Etle"isn’t"enough,"write"a"descripEon.""Try"to"include"who,"what,"and"why.""The"template"could"be"handy"here.MetaYInformaIon! EsEmated"development"Eme! EsEmated"value! Dependencies! StatusStory.tests! Before"you"the"story"is"built,"agree"on"how"you’ll"test"the"story"to"confirm"it’s"done! Discuss"how"you’ll"demonstrate"the"story"at"sprint"review! Discuss"what"outcomes"you’d"expect"and"measure"aLer"the"soLware"is"deliveredDetails! A)ach"any"other"details"that"help"explain"the"story:"UI"drawings,"business"rules,"or"technical"details! You’ll"gather"a"lot"of"these"details"along"the"way"as"you"have"story"discussions.""“Talk"&"doc”"www.comakewith.us.::.youshould@comakewith.us.


working softwareovercomprehensiveconversationswww.comakewith.us.::.youshould@comakewith.us


Communica+on(begins(the(cycle,build'and'learn(to(con+nue(the(cycle! ?! !CardConversaIon!?!!?ConfirmaIonConsequencesConstrucIonwww.comakewith.us.::.youshould@comakewith.us.


Make half a baked cake,not a half-baked cake* OH spoken by Luke Hohmanwww.comakewith.us.::.youshould@comakewith.us


When(breaking(down(stories,(each(story(is(a((((((deliverable,(testable(partBreak down towww.comakewith.us.::.youshould@comakewith.us.


When(breaking(down(stories,(each(story(is(a((((((deliverable,(testable(partBreakStoriesdown What productowners doDelivery TasksWhat the delivery team doeswww.comakewith.us.::.youshould@comakewith.us.


Bill(Wake’s(INVEST(Heuris+c(guides(healthy(decomposi+onIndependentThe%so"ware%can%be%wriFen%to%support%the%story%without%needing%other%stories%to%be%implemented%at%the%same%8meBill.WakeCreator%of%the%INVEST%story%Heuris8cNego8ableWe%can%use%conversa8on%to%make%decisions%about%exactly%what%to%build.%%Together%we’ll%find%most%valuable,%usable,%and%feasible%to%buildValuableWe%believe%building%this%story%will%add%perceived%value%to%the%so"ware%from%customer’s%and%user’s%perspec8ve%and/or%building%it%will%help%us%experiment%or%learn%somethingEs8mableWe’re%clear%enough%on%what%to%build,%a"er%discussion,%to%es8mate%how%long%it%might%take%to%buildSized%rightThe%story%is%the%right%size%for%the%right%8me%]%large%for%early%discussions%and%making%release%planning%decisions,%small%for%building%in%the%current%development%cycleTestableWe%understand%the%story%well%enough%to%verify%it%%When%the%code%is%done,%we%can%actually%test%it.www.comakewith.us.::.youshould@comakewith.us.


3Size Matterswww.comakewith.us.::.youshould@comakewith.us


Standard.agile.jargon.for.“big”EpicA.story.that’s.large,.and.usually.needs.some.more.details.filled.ThemeA.group.of.stories.that.work.togetherWhoa!.This.is.way.too.big.to.build.in.two.weeks...Dude,..it’s.EPIC!Just.talk.about.it,.and.break.it.into.smaller.parts.that.work.together.www.comakewith.us.::.youshould@comakewith.us


Stories are like rockswww.comakewith.us.::.youshould@comakewith.us


The(natural(“unit(of(measure”(for(stories(varies(by(conversa+oncapabilitiesthat generateROIbusinessleaderA feature thatdifferentiate us inthe marketproductmanagerenoughsoftware to helpme meet a needusera businessrule,a screenBA.orUI.Designersomething I cancomplete in acouple daysdeveloperwww.comakewith.us.::.youshould@comakewith.us.


User(Stories(shrink(in(size(and(grow(in(detail(as(they(travel(through(a(funnelOpportunities• Name• Target customer oruser• Value• SizeBacklogitems• Priority• UI design• Business rules• Acceptance testsWorkingtestedsoftware• Meets the team’sdefinition of doneMinimalreleasablesoftware• Generates valuefrom its useReleasestories• Target release• Size as budget• UI sketches &prototypesSplit &refined stories• Acceptance tests• Small enough tocomplete in aniterationwww.comakewith.us.::.youshould@comakewith.us.Validatedproduct parts• Vetted withcustomers and users• Evaluated for releasereadiness


Stories are like asteroidsyouepicstorySco)"Safran"breaking"the"world"record"on"Asteroids,"November"2006www.comakewith.us.::.youshould@comakewith.us


Story Maps are a rockbreakingtechniquewww.comakewith.us.::.youshould@comakewith.us


A(Story(Map(helps(organize(discussion(about(user’s(experience(with(our(productGary Levitt, owner & designer of Mad Mimiwww.comakewith.us.::.youshould@comakewith.us.58


A(Story(Map(helps(organize(discussion(about(user’s(experience(with(our(productproduct goals(why build theproduct)users(what are their goals)backbone(gives structure tothe map)workflow(from the user’sperspective)Gary Levitt, owner & designer of Mad Mimidetails• smaller steps• alternative steps• UI details• technical detailswww.comakewith.us.::.youshould@comakewith.us.59


By(arranging(tasks(wri@en(on(cards(spa+ally,(we(can(tell(big(storiesPlace&user’s&tasks&in&the&order&you&would&explain&what&someone&does&when&using&your&productDon’t&get&too&up9ght&about&the&ordertimewww.comakewith.us.::.youshould@comakewith.us.60


Look(for(groups(of(tasks(that(make(up(ac+vi+esLook%for%tasks%done%by%similar%people%at%similar%points%of%8me%and%usually%directed%at%a%common%goalLabel%these%as%larger%ac8vity]centric%storiestimewww.comakewith.us.::.youshould@comakewith.us.61


Consider(alterna+ve(tasks(and(other(details(to(fill(in(the(mapOverlap"user"tasks"verEcally"if"a"user"may"do"one"of"several"tasks"at"approximately"the"same"Emetimewww.comakewith.us.::.youshould@comakewith.us.62


The(map(shows(decomposi+on(and(typical(flow(across(the(en+re(systemReading%the%ac8vi8es%across%the%top%of%the%system%helps%us%understand%end]to]end%use%of%the%system.%%(Talk%through%just%these%when%talking%with%people%with%short%aFen8on%spans.)timeBelow"each"acEvity,"or"large"story"are"the"child"stories"that"make"it"upwww.comakewith.us.::.youshould@comakewith.us.63


Build(story(maps(in(small(collabora+ve(groups(www.comakewith.us.::.youshould@comakewith.us


ConInuing.work.on.the.mapwww.comakewith.us.::.youshould@comakewith.us


Discussions(drive(out(more(details,(validate,(and(build(shared(understandingTalking through the map with multiple usersand subject matter experts helps test it forcompletenesswww.comakewith.us.::.youshould@comakewith.us66


Plan(by(slicing(the(map(into(holis+c(valuable(releaseswww.comakewith.us.::.youshould@comakewith.us.


Your.job.is.to.build.LESS.soBwareTargetoutcomeOutcomecentricroadmapMVPMVP:%Minimal%Viable%<strong>Product</strong>! The%smallest%product%you%could%build%that%reaches%your%target%outcomesIt’s%NOT%]%the%crappiest%thing%that%could%possibly%workIt’s%a%hypothesis%un8l%you%test%itIf%it%dies%in%the%market,%it’s%wasn’t%viablewww.comakewith.us.::.youshould@comakewith.us.


Story Mapping Concepts(you already know them)www.comakewith.us.::.youshould@comakewith.us


Key.concepts.in.this.secIonExperience&mapUser&tasksGoal&levelSub@tasksUser&Ac9vityNarra9ve&flowBackboneIden9fying&pains&and&joysData&and&observa9on&in&an&experience&mapReview%these%concepts%and%write%your%own%defini5on%for%them%based%on%what%you%heardwww.comakewith.us.::.youshould@comakewith.us.


Learn by mapping an experience you knowwww.comakewith.us,.Jeff.Pa7on,.jeff@comakewith.us.71


Use(this(simple(warm(up(to(show(everyone(they(already(know(how(to(mapStep'1.8'Silent'Brainstorm:.List.all.the.things.you.did.to.get.ready.to.be.here.today! Star8ng%from%the%moment%you%woke%up%un8l%you%arrived%here! Using%s8cky%notes,%write%the%things%you%did,%one'thing'per's;cky'notewww.comakewith.us.::.youshould@comakewith.us.72


Play along and quickly list all thethings you did to get ready thismorning...(I’ll grab coffee and be right back)©.2009Y2011.Jeff.Pa7on,.all.rights.reserved,.www.<strong>Agile</strong><strong>Product</strong>Design.com73


We naturally think in taskswww.comakewith.us,.Jeff.Pa7on,.jeff@comakewith.us.74


There’s a natural “human size”for tasks*%Cockburn’s%Wri8ng%Effec8ve%Use%Cases%describes%goal%levels%for%use%cases%this%waywww.comakewith.us,.Jeff.Pa7on,.jeff@comakewith.us.75


Step 2: OrganizeIn"small"groups,"organize"your"sEckies"into"chronological"order";"the"order"things"were"done";"from"leL"to"right! You’ll%merge%your%different%8melines%into%a%single%8meline! Stack%iden8cal%s8ckies%(similar%things%done%at%similar%8mes! Place%parts%of%things%under%larger%things%(“wash%hair”%might%go%under%“take%shower”)! Doing%this%step%as%a%group,%but%silently,%speeds%things%upwww.comakewith.us,.Jeff.Pa7on,.jeff@comakewith.us.76


The.exercise.looks.like.thiswww.comakewith.us.::.youshould@comakewith.us


People(naturally(build(a(two8dimensional'mapsub-tasks,alternatives,variations, anddetailsAn imperfectnarrative flowwww.comakewith.us.::.youshould@comakewith.us


Step 3: Find PatternsIn%your%same%groups,%look%for%groups%of%s8ckies%that%seem%to%go%together%and%create%a%higher]level%label%for%those! All.the.stuff.done.in.the.bathroom.could.be.called.“bathing”.and.all.the.stuff.done.in.the.kitchen.might.be.“gehng.breakfast.”! You.may.need.to.invent.some.some.names.Y.what.would.you.call.those.things.you.do.to.get.out.of.the.door?.Gathering.laptop,.papers,.car.keys....www.comakewith.us,.Jeff.Pa7on,.jeff@comakewith.us.79


We naturally group tasks intoactivitieswww.comakewith.us,.Jeff.Pa7on,.jeff@comakewith.us.80


Step 4: Mark high points and painsLook(back(across(the(model(of(the(whole(experience.((! What%was%your%favorite%part%of%the%morning,%your%high%point?%%Write%the%high%point%down%on%a%s8cky%with%a%smiley%face.%%S8ck%it%where%you%think%it%goes%on%the%map.! What%part%of%the%morning%did%you%hate?%%Frustrated%you?%%Write%a%note%about%it%with%a%frowny%face.%%S8ck%it%where%you%think%it%goes%on%the%map.www.comakewith.us,.Jeff.Pa7on,.jeff@comakewith.us.81


Congratulations,you’ve built a story map!(exactly what product could this support?)www.comakewith.us.::.youshould@comakewith.us


Use your understanding of today’sexperience to invent solutionswww.comakewith.us.::.youshould@comakewith.us


Journey.maps.describe.the.world.todaywww.comakewith.us.::.youshould@comakewith.us.*%Narra8ve%Journey%Map%courtesy%Duncan%Brown%of%the%Caplin%Group


Experience(maps(describe(the(world(todaywww.comakewith.us.::.youshould@comakewith.us.*%Narra8ve%Journey%Map%courtesy%Duncan%Brown%of%the%Caplin%Group


4Project success≠product successwww.comakewith.us.::.youshould@comakewith.us


Projects end whensoftware ships[output]A product’s life startswhen it ships[outcome]www.comakewith.us.::.youshould@comakewith.us


Is(it(as(simple(as(building(only(the(features(people(will(use?“Clippy”";"Booed"off"the"MicrosoL"Office"stage"as"seldom;used"and"oLen"despised.It"seemed"like"a"good"idea"at"the"Eme....""www.comakewith.us.::.youshould@comakewith.us


Your(guesses(about(the(future(are(probably(wrongTypically%about%50%%to%80%%of%all%so"ware%we%ship%fails%to%accomplish%it’s%objec8ves.People%like%Marty%say%this%stuff%is%hard(Marty.Cagan,.author.of.Inspired,.How.to.Create.<strong>Product</strong>s.Customers.Love).www.comakewith.us.::.youshould@comakewith.us


If you think shipping ontime is challenging,try shipping somethingpeople really lovewww.comakewith.us.::.youshould@comakewith.us


A(crossZfunc+onal(product(ownership(team(directs(discovery<strong>Product</strong>.ownerslead.teamsthrough.discoveryand.work.together.to.tackle.dayYtoYday.product.ownership.responsibiliIeswww.comakewith.us,.Jeff.Pa7on,.jeff@comakewith.us.91


Discovery.compliments.deliveryDiscovery DeliveryUse%discovery%to%answer%big%ques8ons• What.problems.are.we.solving?• What.soluIon.do.people.want?• Can.people.effecIvely.use.our.soluIon?• Can.we.build.it.in.the.Ime.we.have?Use%delivery%to%execute• Plan.the.details• Design,.develop,..and.test• Measure.development.speed• Evaluate.progress• Evaluate.qualitywww.comakewith.us.::.youshould@comakewith.us


Design.&.Design.ThinkingDesign"follows"a"basic"flow"from"research"to"soluEon"design[It&can&some9mes&be&seen&as&an&“ivory&tower”&ac9vity&for&select&individuals]Design"thinking"leverages"diverse"teams,"lots"of"collaboraEon,"and"user"parEcipaEon"[Design&thinking&asks&everyone&to&par9cipate,&but&s9ll&relies&on&strong&leadership]www.comakewith.us.::.youshould@comakewith.us.


IDEO.Pioneered.Design.ThinkingIDEO’s"Tim"Brown,"author"of"Change"by"DesignIDEO’s%“Shopping%Cart%Video”:%hFps://www.youtube.com/watch?v=M66ZU2PCIcMwww.comakewith.us.::.youshould@comakewith.us


Collaborative Discovery[not sprint zero]www.comakewith.us.::.youshould@comakewith.us


IdenIfy.problems.&.target.outcomesNow:%(the%problem)For.Alias’s.(now.Autodesk).Sketchbook.Pro.v2:“SketchBook.Pro.was.gehng.excellent.product.reviews.and.posiIve.responses.at.tradeshows,.through.email,.and.in.our.discussion.forums..However,.only.a.small.number.of.the.people.who.downloaded.and.tried.the.soBware.were.actually.purchasing.the.product..“Later:%(target%outcome%&%impact<strong>Product</strong>.release.goal:.“remove.the.top.obstacles.that.prevent.people.who.download.the.product.from.purchasing.it.”Case Study of Customer Input For aSuccessful <strong>Product</strong>--Lynn Millerwww.comakewith.us.::.youshould@comakewith.us96


Build%simple%lightweight%“pragma8c”%personas%to%learn'what'you'don’t'know'about%your%userswww.comakewith.us.::.youshould@comakewith.us.


Build%simple%lightweight%“pragma8c”%personas%to%learn'what'you'don’t'know'about%your%userswww.comakewith.us.::.youshould@comakewith.us.


Building(them(together(helps(us(learn(what(we(don’t(knowwww.comakewith.us.::.youshould@comakewith.us.


Interview(users(and(stakeholders(to((build(understanding(&(empathywww.comakewith.us.::.youshould@comakewith.us.


Research.informally.and.in.contextwww.comakewith.us.::.youshould@comakewith.us.


Research.informally.and.in.contextwww.comakewith.us.::.youshould@comakewith.us.


Research.informally.and.in.contextwww.comakewith.us.::.youshould@comakewith.us.


Go.to.where.users.do.their.workwww.comakewith.us.::.youshould@comakewith.us


Go.to.where.users.do.their.workwww.comakewith.us.::.youshould@comakewith.us


Go.to.where.users.do.their.workwww.comakewith.us.::.youshould@comakewith.us


Go.to.where.users.do.their.workwww.comakewith.us.::.youshould@comakewith.us


Go.to.where.users.do.their.workwww.comakewith.us.::.youshould@comakewith.us


Include.the.whole.team.in.researchwww.comakewith.us.::.youshould@comakewith.us


Create(models(that(build(shared(understanding(of(what(you(sawSIcky.note.empathy.mapswww.comakewith.us.::.youshould@comakewith.us


Create(models(that(build(shared(understanding(of(what(you(learnedwww.comakewith.us.::.youshould@comakewith.us.*%Narra8ve%Journey%Map%courtesy%Duncan%Brown%of%the%Caplin%Group


Ideate.by.sketching.soluIon.ideadwww.comakewith.us.::.youshould@comakewith.us.


Everyone.shares.their.resultswww.comakewith.us.::.youshould@comakewith.us.


Best.ideas,.not.best.arIstwww.comakewith.us.::.youshould@comakewith.us.


Informally.sketch.product.soluIonswww.comakewith.us.::.youshould@comakewith.us.115


Use(simple(UI(storyboards(to(describe(the(solu+on(conceptwww.comakewith.us.::.youshould@comakewith.us.


Describe%possible%solu8ons%using%personas%and%scenariosStevenCredit Card Marketing FieldManagerSteven is a field managerworking at the local shoppingcenter. He’s in the middle of along workday supervising 13reps who are busy talking topeople trying to convincethem to apply for a creditcard.Field Manager enters daily performance reports1. The shift has just ended and his reps are coming up with theirtotals. They have printed sheets with totals written on them.Steve quickly looks them over and signs them off. His assistantmanager brings him other sheets with totals he’s signed off.2. In between visits by reps, Steve opens his Field ManagerWorkbench on his laptop. After logging in he sees today’s dateand the planned number of applications his reps should begathering – 180 for today.3. He also sees yesterday’s numbers, and last week’s numbers,and the last 30 days in graph that shows applications relative toapproval rate. Last week’s numbers were bad, and it’s the lastweek of the month, so Steve knows he’s got to do well today.4. Steve clicks “enter rep performance data.” He shuffles his repsperformance sheets and grabs the first one.www.comakewith.us.::.youshould@comakewith.us.5. The date is defaulted to today, and the shift is defaulted to ‘morning’since he hasn’t yet entered info for today. Steve begins to enter thereps name, but after a few characters the system auto-completes hisname.6. The rep’s ID is already filled in, along with the code for the credit cardpromotion they’re working on today.7. Steve fills in the shift information for his rep. He then enters the totalnumber of applications taken.8. It looks like from the notes on this sheet that this rep left sick twohours early. Steve adds a note about this in the system.9. Time passes as more reps bring in their sheets and Steve completesentering them in between conversations.10. After all the sheets are done, Steve looks at a summary screen forthe day. It looks like he’s close to his goal. If the next shift continuesat this rate he’ll beat the plan by 5% or so. That’s good.11. Steve validates that the base pay is correct at $5 per app, and thathe’s set an individual bonus giving reps $50 each if they reach 20apps. Next to each rep he sees the calculated pay, base, bonus, andtotal pay for the day.12. The annual sale at Macy’s has brought a lot of people in today. Stevechooses a “sale increases mall foot traffic” code to add to his shiftdata sheet. Frank, his boss, has pestered him to make sure heincludes this type of information in his daily summaries.117


Sketch.scenarios.as.a.design.comicUI.Storyboard.from.Margarete.Fuss,.SAP.AGwww.comakewith.us.::.youshould@comakewith.us.


Paper(prototypes(built(with(card(stock,(pen,(scissors(and(tapewww.comakewith.us.::.youshould@comakewith.us.


Paper(prototypes(built(with(card(stock,(pen,(scissors(and(tapewww.comakewith.us.::.youshould@comakewith.us.


“TesIng”.simulates.usewww.comakewith.us.::.youshould@comakewith.us


Itera+vely(refine(prototypes(to(test(with(real(target(userswww.comakewith.us.::.youshould@comakewith.us.


UI(design(helps(decomposi+on(of(big(stories(to(smaller(storieswww.comakewith.us.::.youshould@comakewith.us.


Slice(the(backlog(into(incremental(releases(that(target(specific(outcomeswww.comakewith.us.::.youshould@comakewith.us.


Telling(your(product(story(helps(find(problemswww.comakewith.us.::.youshould@comakewith.us.


Edmunds.com(shares(the(product’s(story(for(all(teams(in(an(internal(“trade(show”www.comakewith.us.::.youshould@comakewith.us.


Edmunds.com(shares(the(product’s(story(for(all(teams(in(an(internal(“trade(show”www.comakewith.us.::.youshould@comakewith.us.


Edmunds.com(shares(the(product’s(story(for(all(teams(in(an(internal(“trade(show”www.comakewith.us.::.youshould@comakewith.us.


Edmunds.com(shares(the(product’s(story(for(all(teams(in(an(internal(“trade(show”www.comakewith.us.::.youshould@comakewith.us.


A(lightweight(endZofZweek(share(out(at(Nordstromwww.comakewith.us.::.youshould@comakewith.us


Validated learning overworking software(or comprehensivedocumentation)In"May"of"2010,"Kent"Beck"gave"a"keynote"speech"at"the"first"Lean"Startup"conferences"where"he"revised"the"agile"manifesto"from"his"perspecEveWorking.soBware.isn’t.enough.to.ensure.product.successwww.comakewith.us.::.youshould@comakewith.us


Does.anyone.want.your.product?Customer"Discovery! Find.customers.who.have.a.problem.your.product.can.solveCustomer"Development! IteraIvely.test.soluIons.with.target.customers.unIl.you.have.a.soluIon.they’ll.buy.and.recommend.to.othersSteve"Blank,"author"of"The"Four"Steps"to"Epiphanywww.comakewith.us.::.youshould@comakewith.us


Eric"Ries,"author"of"The"Lean"StartupImportantconceptsDumb title133


The(Lean(Startup(Validated(Learning(LoopLearnBuildMeasurewww.comakewith.us.::.youshould@comakewith.us.


The(Lean(Startup(Validated(Learning(LoopSimple"models"to"disEll"findingsIdeaEonPrototype"&"evaluate"inside"the"teamLearnideasBuildMetrics"from"a"live"applicaEonDirect"observaEonPoll"or"surveydataMeasuretestSimple"prototypeLive"data"prototypeValue"test"(like"a"landing"page)404"Test"(like"unimplemented"features)www.comakewith.us.::.youshould@comakewith.us.


The(Lean(Startup(Validated(Learning(LoopSimple"models"to"disEll"findingsIdeaEonPrototype"&"evaluate"inside"the"teamLearnideasBuildhappy,hopeful,hypotheticalstuffharshrealityMetrics"from"a"live"applicaEonDirect"observaEonPoll"or"surveydataMeasuretestsSimple"prototypeLive"data"prototypeValue"test"(like"a"landing"page)404"Test"(like"unimplemented"features)www.comakewith.us.::.youshould@comakewith.us.


Sketchbook(Pro’s(Minimal(Viable(<strong>Product</strong>(Experiment(for(rotate(and(resizewww.comakewith.us.::.youshould@comakewith.us.


Explicit.release.stepExplicit.measure.step.&.metricsNothing.leaves.the.board.unIl.there’s.been.a.discussion.on.what.we’ve.learnedSnag;a;Job’s"board"courtesy"of"David"Bi)enbenderwww.comakewith.us.::.youshould@comakewith.us


Explicit.release.stepExplicit.measure.step.&.metricsNothing.leaves.the.board.unIl.there’s.been.a.discussion.on.what.we’ve.learnedSnag;a;Job’s"board"courtesy"of"David"Bi)enbenderwww.comakewith.us.::.youshould@comakewith.us


Nordstrom%Innova8on%Lab’s%Learning%Looph)p://www.startuplessonslearned.com/2011/10/case;study;nordstrom;innovaEon;lab.htmlwww.comakewith.us.::.youshould@comakewith.us


Nordstrom%Innova8on%Lab’s%Learning%Looph)p://www.startuplessonslearned.com/2011/10/case;study;nordstrom;innovaEon;lab.htmlwww.comakewith.us.::.youshould@comakewith.us


Nordstrom%Innova8on%Lab’s%Learning%Looph)p://www.startuplessonslearned.com/2011/10/case;study;nordstrom;innovaEon;lab.htmlwww.comakewith.us.::.youshould@comakewith.us


Nordstrom%Innova8on%Lab’s%Learning%Looph)p://www.startuplessonslearned.com/2011/10/case;study;nordstrom;innovaEon;lab.htmlwww.comakewith.us.::.youshould@comakewith.us


5Delivering iteratively &incrementallywww.comakewith.us.::.youshould@comakewith.us


Estimationvs.Sizing, & Measurementwww.comakewith.us.::.youshould@comakewith.us


Several(es+ma+on(approaches(exist(in(<strong>Agile</strong>(developmentActual%8me! “How.long.will.this.development.work.take.in.hours,.days,.or.weeks?”Ideal%8me! “If.I.had.no.interrupIons,.and.I’m.really.in.the.flow,.and.if.this.story.is.exactly.as.complex.as.I.imagine.it.to.be.right.now,.how.long.would.it.take?”Story%points! “Given.a.story.of.known.size.and.points,.how.big.is.this.story.relaIve.to.that.one?..If.my.reference.story.is.a.2,.and.this.story.seems.twice.as.complex,.it’s.a.4.”..T]Shirt%size! Is.the.story.small,.medium,.large,.or.extra.large?..Unlike.Ime.or.points,.tYshirt.sizes.can’t.easily.be.added.up...How.many.small.tYshirts.equal.a.large.tYshirt?www.comakewith.us.::.youshould@comakewith.us.152


Es+mate(in(rela+ve(size,(measure(actual(sizeHumans%are%bad%at%es8ma8ng%specific%sizes%or%dura8onsBut,%we’re%preFy%good%a%comparing%and%es8ma8ng%es8ma8ng%one%thing%rela8ve%to%anotherIf%the%Size%of%the%Starbucks%cup%is%a%3,%what%are%the%other%containers?When%one%es8mate%is%an%order%of%magnitude%above%another,%we%begin%to%lose%accuracy3www.comakewith.us.::.youshould@comakewith.us.153


Es+mate(rela+ve(size,(then(measure(dura+onGiven%some%number%of%stories%points%completed%during%a%development%cycle,%we%can%then%measure%actual%8me:! Number"of"story"points"completed"during"an"iteraEon"is"our"velocity! The"number"of"developer"days"in"the"sprint"/"velocity"="load'factor:"the"raEo"between"developer"days"and"story"points! Use"load"factor"to"esEmate"velocity"when"the"number"of"developers,"or"developer"days"changesHow to calculate loadfactor:In a 2 week sprint ateam of 5 developerswork 5 days each, 50dev days totalThey complete 18story points in thattime50/18 = 2.781 story point = 2.78developer dayswww.comakewith.us.::.youshould@comakewith.us.154


Good estimation relies on sharedunderstanding155


Describing with words only leadsto expensive misunderstandings156


Three critical times for estimation:Opportunities: size opportunities to makego/no-go decisionsDiscovery: size larger stories to create abudget for deliveryDelivery: size iteration stories, thenmeasure duration to manage your budgetwww.comakewith.us.::.youshould@comakewith.us


Treat estimates for large storiesmade during product discoveryas budgetsImagine you’re remodeling yourkitchen.How would you figure out our budget?After starting your project, you findthat the new countertops you want aremuch more expensive than youpredicted. What can you do to keepyour budget?www.comakewith.us.::.youshould@comakewith.us


<strong>Product</strong> owner’s secret:Work with experiencedengineers you trust whensizing opportunities andsetting budgetswww.comakewith.us.::.youshould@comakewith.us


Delivery Strategieswww.comakewith.us.::.youshould@comakewith.us


To release benefit on aschedule we’ll need toleverage incremental anditerative thinking(What’s the difference?)www.comakewith.us.::.youshould@comakewith.us


“incremenIng”.builds.a.bit.at.a.ImeIncrementing calls for a fullyformed idea.And, doing it on time requiresdead accurate estimation.1 2 3 4 5www.comakewith.us.::.youshould@comakewith.us.162


“itera8ng”%and%“incremen8ng”%builds%a%rough%version,%validates%it,%then%slowly%builds%up%qualityA more iterative allows you tomove from vague idea torealization making coursecorrections as you go.1 2 34 5www.comakewith.us.::.youshould@comakewith.us.163


Many.organizaIons.consider.revising.the.same.funcIonality.as.failure...IteraIon.is.not.tolerated.193 www.comakewith.us.::.youshould@comakewith.us.164


Work(like(an(ar+st(to(envision(and(build(the(product(holis+cally“Art is never finished,only abandoned.”-Leonardo DaVincitimewww.comakewith.us.::.youshould@comakewith.us.165


Organize.work.to.maximize.learningacquired product knowledgeOpeningGameEarly stories emphasizeiteration and learning.We need to be surewe’re building theright producttimeMid GameOnce we’re confidentwe have the “shape”of the product right,we begin to pile invalueEnd GameOver time the value ofstories begin todiminish signaling it’stime for releaseThe.inverse.of.risk.is.knowledgeLearning.earlier.if.we’re.building.the.right.product.miIgates.riskwww.comakewith.us.::.youshould@comakewith.us.166


Use(a(story(map(to(slice(out(a(delivery(strategywww.comakewith.us.::.youshould@comakewith.us.


User(story(maps(to(describe(your(product(and(manage(deliverywww.comakewith.us.::.youshould@comakewith.us.


Kano%explains%three%general%classifica8ons%for%product%features:%must8haves,%one8dimensionals,%and%delighters'Must8havesThe.products.must.have.this.features.for.me.to.be.consider.the.product.acceptable“This car has many flaws. Buy itanyway. It’s so much fun todrive”-- from a NY Times review of theMini CooperOne8dimensionalsThe.more.of.this.I.get,.the.be7erDelightersI.love.this.element.of.the.product!www.comakewith.us.::.youshould@comakewith.us.169


Use(the(Kano(classifica+ons(to(both(priori+ze(and(splitBrakes(must have)Basic brakes(must have)Stoppingdistance(one dimensional)Anti-locking(delighter)Cool dashboardlight whenslipping(delighter)Keep"in"mind:"you"must"know"your"customers"and"users"to"determine"subjecEve"valueOne"person’s"“delighter”"may"leave"others"apatheEc,"and"another’s"“must"have”"is"useless"to"other"customersEveryone"is"bad"a"predicEng"what’s"really"“must"have”"or"delighkul:"test"your"ideaswww.comakewith.us.::.youshould@comakewith.us.170


Consider(these(four(story(spli]ng(heuris+cs(that(build(up(qualityBare'Necessity'For"the"feature"to"be"minimally"demonstrable"–"but"not"releasable,"what"is"the"minimal"funcEonalityExample:%A%form%with%only%necessary%fields%and%no%valida5onCapability'&'Flexibility.What"would"add"the"ability"to"perform"the"user"task"in"different"ways?""Adding"in"sub"tasks"that"are"opEonally"performed?Example:%a%form%with%op5onal%fields,%date%lookup%tools,%input%transla5on%on%dates* Adapted from Gerard Meszaros’ “Storyotypes”Safety"What"would"make"this"feature"safer"to"use?""For"both"the"user,"and"for"the"business"paying"for"the"soLware?Example:%input%valida5on,%enforcement%of%business%rules%such%as%credit%card%valida5on%%Usability,'Performance,'Sex'AppealWhat"would"make"this"feature"easier"to"use?"More"desirable"to"use?""Faster"to"use?Example:%auto@comple5on,%sexy%visual%design,%speed%keyswww.comakewith.us.::.youshould@comakewith.us.171


Building%up%quality%itera8vely%and%incrementally%ships%the%best%product%possiblesprint12341. We"know"each"story"can"be"split"into"at"least"four"parts2. Early"iteraEons"strive"to"build"bare"necessiEes,"later"iteraEons"build"up"quality3. EvaluaEng"readiness"based"on"subjecEve"quality"to"understand"donenessA- B- D CD AB C- B- DB DA B A- DB A- DB I B- DIreleaseuser tasks to support<strong>Product</strong> goal: (in 4 sprints) ship the best product possiblewww.comakewith.us.::.youshould@comakewith.us.172


<strong>Product</strong> Owners must understandthe delivery strategy that leadsto a finished productSculpture"at"various"stages"of"compleEon,"Musée"d’Orsay,"Pariswww.comakewith.us,.Jeff.Pa7on,.jeff@comakewith.us. 173


Guidelines.for.releasing.on.Ime1. Thin"stories"aggressively"during"early"sprints"to"build"all"essenEal"funcEonality"early.The%func5onal%walking%skeleton2. Build"up"funcEonality"only"aLer"all"necessiEes"are"in"place.Improve%the%product%holis5cally3. Assess"release"readiness"at"the"end"of"each"sprint"as"part"of"product"review"Focus%on%a%minimal%viable%release4. Protect"Eme"in"the"final"sprints"for"product"refinement"that"comes"from"learningPlan%to%learn%and%apply%what%you%learnwww.comakewith.us.::.youshould@comakewith.us


If.you.remember.anything...An(<strong>Agile</strong>(mindset(focuses(on(maximizing(understanding(and(value! shared%documents%≠%shared%understanding! successful%projects%≠%successful%productsWork(together(con+nuously(to(decide(what’s(required,(talk(&(doc(Z(think(vaca+on(photosBreak(big(opportuni+es(&(stories(down(con+nuously(and(just(in(+me(Z(think(asteroidsDeliberately(discover(the(smallest(most,(valuable(product(solu+on(Z(minimize(output,(maximize(outcomeInten+onally(learn(from(everything(you(build,(every(itera+on(Z(work(like(an(ar+st,(not(a(bricklayerwww.comakewith.us.::.youshould@comakewith.us


Imagine.it’s.one.month.from.now...1. How has what you believed aboutrequirements changed?2. What have you changed that’shelping you with some of yourchallenges with requirements?www.comakewith.us.::.youshould@comakewith.us.


<strong>Agile</strong> <strong>Requirements</strong> &<strong>Product</strong> <strong>Management</strong>©"2003"Sco)"Adams:"h)p://www.dilbert.com/strips/comic/2003;01;10/Jeff.Pa7onChief.troublemaker,.Comakers.LLCjeff@comakewith.uswww.comakewith.us.::.youshould@comakewith.us


Extra stuffwww.comakewith.us.::.youshould@comakewith.us


Everything.at.onceDiscovery%&%delivery%happen%in%parallel%overlapping%trackswww.comakewith.us.::.youshould@comakewith.us.


Design(and(coded(features(pass(back(and(forth(between(dual(tracks<strong>Product</strong>Ownership TeamDelivery Team• high level productdesign• discovery for sprint 2and beyond• analyze & design forsprint 1• support sprint 1delivery• analyze & design forsprint 2• discovery for sprint 3& beyondtested features tested features testedSprint 0 Sprint 1 Sprint 2 Sprint 3 Spr• developmentenvironment setup• architectural “spikes”Designed andready features• implement sprint 1www.comakewith.us.::.youshould@comakewith.us.• support sprint 2delivery• analyze & design forsprint 3• discovery for sprint 4• user test sprint 1featuresCoded andDesigned andready features• implement sprint 2• fix sprint 1 issues ifany• support sprint 3delivery• analyze & design forsprint 4• discovery for sprint 5• user test sprint 1+2featuresCoded andDesigned andready features• implement sprint 3• fix sprint 2 issues ifanySee Miller’s Case Study of Customer Input For a Successful <strong>Product</strong>::http://www.agileproductdesign.com/useful_papers/miller_customer_input_in_agile_projects.pdfCod

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!