User Story Mapping

Post on 06-May-2015

30.732 views 1 download

description

A prioritized user story backlog helps to understand what to do next, but is a difficult tool for understanding what your whole system is intended to do. A user story map arranges user stories into a useful model to help understand the functionality of the system, identify holes and omissions in your backlog, and effectively plan holistic releases that delivery value to users and business with each release.

Transcript of User Story Mapping

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<8.,4.*/"<$($-"&-)48912"=2.*/

=2$-">1)-?"@'AA.*/

#$%"&'()*BA'()*C'9;6)-/

5556'/.,$A-)48914$2./*69);

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<8-"/)',2"'*4"'/$*4'"1)4'=

!"#$%&'(#)*&+"&,-(&+.(&,-()&-+")/&0#12$"3&#-&#&4#/&+"&5(-1)60(&,-()7-&(89()6(*1(&46+.&/",)&9)"5,1+

&'-1">?"@'AA.*/"82$-"21)-.$2

! B2$-"21)-="$22$*C',2

! D$,,.*/"21)-.$2"'E)81"10$"82$-"$FA$-.$*9$

! @'AA.*/"82$-"21)-.$2"E'2$4")*"$FA$-.$*9$

&'-1"G?"&,'**.*/"3',8'E,$".*9-$;$*1',"-$,$'2$2

! H4$*CI=.*/"A-)4891"/)',2"10'1"4$,.3$-="3',8$

! J,.9.*/"10$"21)-=";'A".*1)"3',8'E,$"-$,$'2$2

G

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Starting with the

User Story

What do you know about user stories?

What do you like about user stories?

What causes you trouble with user stories

<

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<2$-"=1)-.$2"'-$"4.%$-$*1"10.*/2"1)"

4.%$-$*1">$)>,$666

!"?@A"=184.)2

B

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<2$-"=1)-.$2"'-$";8,>?@8-@)2$"10.*/2

=1)-.$2"'-$"'A

! <2$-B2"*$$4

! &-)4891"4$29-.@>)*

! &,'**.*/".1$;

! C)D$*"E)-"'"9)*3$-2'>)*

! F$90'*.2;"E)-"4$E$--.*/"

9)*3$-2'>)*

G

!"Kent Beck coined the

term user stories in

Extreme Programming

Explained 1st Edition, 1999

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<1)-.$2"/'.*"4$1'.,")3$-"=;$

>6 <1'-1"5.10"!"#$%&

?6 744"'"'()'*+&",&+'-*.#()"

2);$"82$"10.2"82$@8,"1$;A,'1$B

As a [type of user]

I want to [perform some task]

so that I can [reach some goal]

C6 744")10$-"-$,$3'*1")($&++"

+.&'*/'!#()++")-"+0&$'1&+

D6 E$@)-$"F8.,4.*/"2)G5'-$"5-.1$"

!''&.$!)'&"'-*$&-*!"!"#$%&#%$'%

()#$%$"')%$'*+'%&#)',-

H

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

7/.,$"9821);$-2")-"<-)4891")5*$-"

<-.)-.=>$"21)-.$2".*1)"'"?'9@,)/

7"9),,$9=)*")A"21)-.$2"A)-"'"

2)B5'-$"<-)4891".2"

-$A$--$4"1)"'2"10$"!"#$%&'(

)*&+,#-

C0$"?'9@,)/".2"<-.)-.=>$4"

2890"10'1"10$";)21"

3',8'?,$".1$;2"'-$"0./0$21

D

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Let’s talk about the nature

of multi-purpose things(yes I’m going meta)

<

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<2$-"=1)-.$2"'-$"!"#$%&'()"!*+,-.

>

?$-$@2"10$"A*$"B-.*1")*"C)8*4'-D")CE$912F

G7"C)8*4'-D")CE$91".2"'"9)*9$B1".*"2)9.),)/D"1)"4$29-.C$".*H)-;'I)*"

82$4".*"4.%$-$*1"5'D2"CD"4.%$-$*1"9);;8*.I$26"/0+()&'+)12&.3,4)

5$-+'1'+-+%)%56+'+$-2()&,'"..),"77#$53+.)!#-)85-0)+$"#90)

577#-&!2+),"$-+$-)-")7&5$-&5$)5$-+9'5-(J"KKL.M.B$4.'

G/0+()&'+)8+&:2().-'#,-#'+%)5$),"77"$)#.+4)&$%)!+,"7+).-'"$92()

.-'#,-#'+%)5$)5$%5;5%#&2<.5-+)#.+="N0$D";'D"C$"'C21-'91")-"9)*9-$1$6"

N0$D"0'3$"4.%$-$*1";$'*.*/2".*"4.%$-$*1"2)9.',"5)-,42"C81"10$.-"

21-8918-$".2"9);;)*"$*)8/0"1)";)-$"10'*")*$"5)-,4"1)";'M$"10$;"

-$9)/*.O'C,$";$'*2")H"1-'*2,'I)*6"N0$"9-$'I)*"'*4";'*'/$;$*1"

)H"C)8*4'-D")CE$912".2"M$D".*"4$3$,)B.*/"'*4";'.*1'.*.*/"9)0$-$*9$"

'9-)22".*1$-2$9I*/"2)9.',"5)-,426J"KK"P$./0"Q"R-.$2$;$-

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<2$-"=1)-.$2"'91"'2"10$">)8*4'-?"1)"@'9.,.1'1$"

9)*3$-2'A)*">$15$$*";'*?"B$)B,$

CD

82$-

How do I

describe to you

what I want?

How

do I understand

users and their

needs?

<E"B$-2)*

What are the

details of this

feature I need

to specify?

F7

What are

the details of

what I need to

build today?4$3$,)B$-

How

do I validate

this work is

done?1$21$-

How

do I schedule

this work and

track it its &G

What are the

things my

product needs to

be successful?

>82.*$22",$'4$-

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<81"2.=$"',5'>2";'($-2666

?)5"@./".2"10$"21)->"5$"

5'*1"1)"1',A"'@)81B

CC

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

7*4+".1<2"$'2="1)"/$1",)21".*"10$"20$$-"

*8;>$-")?"10$;

@A

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

7*4+"'2"5$"21'-1";)3.*/"<)-5'-4+"0)5"4)"

5$"21'=")*"1-'9>?

@A

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<2$-"=1)->"?'@@.*/".2"'*"'*"'@@-)'90"1)"

!"#$%&'&%#"!"#"("&)"&*'&%#+82$-"21)-.$2

<*,.A$"1>@.9',"82$-"21)->"

B'9A,)/2+"=1)->"?'@2C"

! ;'A$",&-&./0"10$"5)-AD)5")-"

3',8$"90'.*

! 20)5"10$""0/$*)%-1&2-")E",'-/$-"

21)-.$2"1)"10$.-"90.,4"21)-.$2

! 0$,@"9)*F-;"10$"3)42/050%0--"

)E">)8-"B'9A,)/

! @-)3.4$"'"82$E8,"3)%5065"E)-"

@-.)-.GH'G)*

! &,'*"-$,$'2$2".*"9);@,$1$"'*4"

,$/7$./0+-/&30-")E"E8*9G)*',.1>6

IJ

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<2$-"=1)->"?'@@.*/".2"'*"'*"'@@-)'90"1)"

!"#$%&'&%#"!"#"("&)"&*'&%#+82$-"21)-.$2

AB

=1)->"?'@2"28@@)-1"10$"

@-.;'->".*1$*1")C"82$-"21)-.$2+"

"&,-+.&/,0//&)%

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

The foundational building

block of a stories that say

what people are doing

(user tasks)

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<.-21",$1=2"4)"'"!"#$%&'()*)#+,-)(1)"

8*4$-21'*4"'">$5"9)*9$?12

@0'1"5$-$"',,"10$"10.*/2"A)8"4.4"1)"/$1"-$'4A"1)"B$"

0$-$"1)4'AC

! D1'-E*/">-);"10$";);$*1"A)8"5)F$"8?"8*E,"A)8"

'--.3$4"0$-$

! G*"'"20$$1")>"?'?$-+"1'F$"'">$5";.*81$2"1)",.21"10$"

10.*/2"A)8"4.4

HI

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

What’s common about the items

each of you wrote down?

What was different?

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

&$)<,$"'90.$3$"/)',2"10-)8/0".*1$-'9=)*

problem or

goal How I’d like to feel, or what

I’d like to achieve

Take some

action action evaluation Did that action deliver the results I

expected?

goal evaluation Is my goal met or problem

resolved?

the worldInformation and tools

>?

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

problem or

goal How I’d like to feel, or what

I’d like to achieve

<0.*=")>"10-$$",$3$,2?"/)',+"1'2=+"'*4"1)),

the worldInformation and tools

Take some

action action evaluation Did that action deliver the results I

expected?

goal evaluation Is my goal met or problem

resolved?

goal

task

tool@A

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<0.*=")>"10-$$",$3$,2?"/)',+"1'2=+"'*4"1)),

goal

task

tool@A

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<)=5'-$"9)*1'.*2">$'18-$2"10'1"28??)-1"'"

3'-.$1@")>"1'2A2"'*4"'"3'-.$1@")>"/)',2

software

goals

tasks

toolsfeaturesBB

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69); <=

User tasks make ideal

user stories:

Title: Take a shower

As an instructor

I want to take a shower

So that I don’t offend my colleagues

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

user story

<*"=-'9>9$"82$-"21)-.$2";'?"@$"5-.($*"1)"4$29-.@$"

82$-"1'2A2")-"10$"1)),2"10'1"28==)-1"10$;""

software

tasks

features

goalsAs a weekend gardener

I want to dig a hole

so that I can plant a tree

B)-$"1'2AC9$*1-.9D

As a weekend gardener

I want a shovel

so that I can [dig a hole to]

plant a tree

B)-$"1)),C9$*1-.9D

E)-"F$'18-$C9$*1-.9G"

HI

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Organize user stories into a

map that communicates

experience

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<="'--'*/.*/"'9>3.1="'*4"1'2?@9$*1-.9"21)-="

9'-42"2A'>',,=+"5$"9'*"1$,,"B.//$-"21)-.$2C$,,"'"B./"21)-=")D"10$"A-)4891"B="21'->*/"5.10"10$";'E)-"82$-"

'9>3.>$2"10$"?.)2?"5.,,"B$"82$4"D)-

! 7--'*/$"'9>3.>$2",$F"1)"-./01".*"10$")-4$-"=)8G4"$HA,'.*"10$;"1)"

2);$)*$"50$*"'2?$4"10$"I8$2>)*J"KL0'1"4)"A$)A,$"4)"5.10"10.2"

2=21$;MN""

time

OP

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<="'--'*/.*/"1'2>?9$*1-.9"21)-="9'-42"

2@'A',,=+"5$"9'*"1$,,"B.//$-"21)-.$2744"1'2>?9$*1-.9"21)-.$2".*"8*4$-"$'90"'9A3.1=".*"5)->C)5")-4$-"

,$D"1)"-./016

! EF"=)8"5$-$"1)"$G@,'.*"1)"2);$)*$"50'1"'"@$-2)*"1=@.9',,="4)$2".*"10.2"

'9A3.1=+"'--'*/$"1'2>2".*"10$")-4$-"=)8H4"1$,,"10$"21)-=6"":)*H1"/$1"1))"

8@A/01"'B)81"10$")-4$-6

time

IJ

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<="'--'*/.*/"1'2>?9$*1-.9"21)-="9'-42"

2@'A',,=+"5$"9'*"1$,,"B.//$-"21)-.$2C3$-,'@"82$-"1'2>2"3$-A9',,=".D"'"82$-";'="4)")*$")D"2$3$-',"1'2>2"'1"

'@@-)E.;'1$,="10$"2';$"A;$

! FD".*"1$,,.*/"10$"21)-="F"2'="10$"2=21$;2G"82$-"1=@.9',,="H4)$2"10.2")-"10.2")-"

10.2+"'*4"10$*"4)$2"10'1+I"H)-G2I"2./*',"'"21'9>.*/"3$-A9',,=+"H'*4"10$*G2I"

2./*',"21$@@.*/"0)-.J)*1',,=6

time

KL

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<0$";'="20)52"4$9);=)2.>)*"'*4"

1?=.9',"@)5"'9-)22"10$"$*>-$"2?21$;

A$'4.*/"10$"'9>3.>$2"'9-)22"10$"1)=")B"10$"2?21$;"0$,=2"82"

8*4$-21'*4"$*4C1)C$*4"82$")B"10$"2?21$;6""D<',E"10-)8/0"F821"

10$2$"50$*"1',E.*/"5.10"=$)=,$"5.10"20)-1"'($*>)*"2='*26G

time

H$,)5"$'90"'9>3.1?+")-",'-/$"

21)-?"'-$"10$"90.,4"21)-.$2"10'1"

;'E$".1"8=

IJ

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

&-)4891":.29)3$-<"=)->20)?2

@2$"?-)4891"4.29)3$-<"5)->20)?2"

1)"8*4$-21'*4"10$"?-)4891"5$A-$"

B8.,4.*/"'2"'"82$-"21)-<";'?

:8-.*/"4.29)3$-<"2$22.)*2"

4.29822C

! 10$"!"#!$%&")D"10$"?-)4891+"

'*4"0)5".1"9-$'1$2"3',8$"D)-"

10)2$"B8.,4.*/".1

! 10$"'"%($)&#%"50)"5.,,"B8<"10$"

?-)4891

! 10$""%&#%"50)"5.,,"82$"10$"

?-)4891

! 0)5"10$<A,,""%&"10$"?-)4891

EF

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

&-)4891":.29)3$-<"=)->20)?2

=0)"?'-@9.?'1$2A

! !"#$%&'()*#+"B"10)2$"50)"C-.*/"

.*D)-;'@)*+"28CE$91";'($-"

$F?$-@2$+"'*4"4.-$91"$F?$-.$*9$

! !"#$,-..%(&-/#"B"10)2$"50)"

0'3$"4$2.-$"1)"C8.,4"'"/-$'1"

?-)4891

! !"#$+#0%.%(&$*-1#)."B"10)2$"

50)"9'*";'>$"1)8/0"4$9.2.)*2"

'C)81"50'1"'*4"0)5";890"1)"

C8.,4

! !"#$+(#)."B"-$?-$2$*1'@3$2"

D-);"10$"1$';"50)"5.,,"C8.,4"

10$"?-)4891"2),8@)*

GH

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<8.,4.*/"'"21)-=";'>"0$,>2"?'9.,.1'1$"

4.29822.)*"@"A81"-$B8.-$2"'"A.1")?"2>'9$

Gary Levitt, owner & designer of Mad Mimi

CD

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

7"21)-<";'=">)-"'"-$'2)*'?,$"2.@$4"2<21$;"

9'*"A,,"'"-));

BB

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Product Discovery Looks Like this:

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<1)-=">'?"@'-.'A)*2

• >'?2"'B)81"2=21$;"

B$0'3.)-

• C$'18-$D9$*1-.9"

;'?2

• 72D.2"?-)4891";'?2

• E0'1"$,2$F

GH

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

The easiest way to write

user stories is by telling

user stories(hopefully this won’t come as a surprise)

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Let’s try one together...

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Discuss, fill in, refine the

map, and test for

completeness

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

:.29822.)*2")3$-"21)-<";'=2"0$,="4-.3$"

)81";)-$"4$1'.,2

>?

Repeated review of the story map with multiple users and subject matter experts will help test the model for completeness

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<-$'=*/">$-2)*'2"?)-"4.%$-$*1"@.*42")?"

>$)>,$"82.*/"A)8-"2A21$;

BC

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

7"<-'/;'=9"<$-2)*'".2"'">8.9?"$@<,)-'=)*"

)A"50'1"5$"?*)5"'B)81")8-"82$-2

CD

E8.,4"10$;"1)"21'-1"4.29822.)*"

'B)81"50'1"5$"?*)5+"'*4"

4)*F1

E8.,4"10$;"1)"0$,<"4-.3$"

;'<<.*/"G)8-"82$-"

$@<$-.$*9$"82.*/"21)-.$2

:)*"H)-;'*http://www.jnd.org/dn.mss/personas_empath.html

“..people can often

mine their own

extensive experiences to

create effective

Personas...”

:'3.4"I822;'*

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<=$190"'">-'/;'?9">$-2)*'"10.*=.*/"

'@)81"2);$)*$"4.%$-$*1"A-);"B)8-2$,A

CD

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<="'--'*/.*/"'9>3.1="'*4"1'2?@9$*1-.9"21)-="

9'-42"2A'>',,=+"5$"9'*"1$,,"B.//$-"21)-.$2744"'"3$->9',"'C.2"1)".*4.9'1$"*$9$22.1=

D)3$"1'2?2"8A"'*4"4)5*"10.2"'C.2"1)".*4.9'1$"0)5"*$9$22'-="10$="'-$"1)"

10$"'9>3.1=6

! E)-"'"82$-"1)"2899$22F8,,="$*/'/$".*"10.2"'9>3.1=+".2".1"*$9$22'-="10$="A$-F)-;"

10.2"1'2?G""HF".1I2"*)1"'B2),81$,="*$9$22'-=+"0)5"9-.>9',".2".1G

time

necessity

JK

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<="'--'*/.*/"'9>3.1="'*4"1'2?@9$*1-.9"21)-="

9'-42"2A'>',,=+"5$"9'*"1$,,"B.//$-"21)-.$2C$21"10$"D1)-="E'A"B="1$,,.*/"B.//$-"21)-.$2"5.10".1

! F0))2$"'*"'9>3.1="1)"21'-1"5.10

! G0$*"-$'4.*/",$H"1)"-./01"82$"10$"9)*I8*9>)*"J'*4"10$*K"1)"9)**$91"9'-42".*"10$"21)-=

! G.10"9'-42".*"10$"2';$"-)5"82$"J)-K"1)"9)**$91"9'-42".*"10$"21)-=

! L)-"9'-42"B$,)5"10$"1)A+"J'B2),81$,="*$9$22'-=K"'M.2+"82$"10$"A0-'2$"J;./01")A>)*',,=K"1)"

9);;8*.9'1$")A>)*',.1=

! F0)2$"'"9)*9-$1$"82$-"*';$"1)"0$,A"1$,,"10$"21)-=

time

necessity

NN

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<="'--'*/.*/"'9>3.1="'*4"1'2?@9$*1-.9"21)-="

9'-42"2A'>',,=+"5$"9'*"1$,,"B.//$-"21)-.$2

time

necessity

CD

“Steve knows the title of what he’s looking for. He steps up to

the kiosk and searches by title. Optionally he might have

searched by artist. After seeing titles that match what he typed

in, Steve views the price new and used, and then views the

status – whether it’s in stock or not. He notices it’s in stock as

both new and used, so then Steve views the location in the store

for the used title.”

E)>9$"10$"B),4"F'9$4"82$-"1'2?2"

F-);")8-"21)-=";'A

E)>9$"10$"9)*G8*9>)*2"10'1"?*.1"10$"

9'-42"1)/$10$-".*1)"'",)*/$-"21)-=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<0$"82$-"21)-=";'>"9)*1'.*2"15)"

.;>)-1'*1"'*'1);.9',"?$'18-$2<0$"!"#$!%&'")?"10$"'>>,.9'@)*".2"10$",.21")?"

$22$*@',"'9@3.@$2"10$"'>>,.9'@)*"28>>)-12

<0$"(")$*&+,-$')'.%&".2"10$"2)A5'-$"5$"B8.,4"10'1"

28>>)-12"10$",$'21"*8;B$-")?"*$9$22'-="1'2C2"'9-)22"

10$"?8,,"2>'*")?"82$-"$D>$-.$*9$

time

necessity

The backbone

The walking skeleton

EF

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<2.*/"4.29822.)*+"=,,".*">)8-"21)->";'?

@)-A"1)/$10$-"'2"'"1$';

B))A"C)-"!"#$%&!'($)#!*+*

! @0'1"$,2$";./01"82$-2")C"10$"2>21$;"0'3$"

4)*$"10'1"4.4*D1"9);$"8?".*">)8-"29$*'-.)2E

B))A"C)-"$,-$.'/&*

! @0'1"9)8,4"/)"5-)*/+"'*4"50'1"5)8,4"10$"

82$-"0'3$"1)"4)"1)"-$9)3$-E

F)*2.4$-"/#0$%)1*$%*

! @0'1";./01")10$-"1>?$2")C"82$-2"4)"1)"-$'90"

10$.-"/)',2E

G*.1"',"10$2$"'44.H)*',"21)-.$2".*1)">)8-";'?

IJ

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Slice the map to find ideal

incremental releases

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<.3$*"21)-=";'>")-/'*.?$4"3$-@9',,="A="

*$9$22.1=+"5$"*$$4")*,="2,.9$"1)">,'*

B0))2$"9)0$-$*1"/-)8>2")C"C$'18-$2"10'1"9)*2.4$-"10$"2>'*")C"A82.*$22"

C8*9@)*',.1="'*4"82$-"'9@3.@$2

D8>>)-1"',,"*$9$22'-="'9@3.@$2"5.10"10$"E-21"-$,$'2$

F;>-)3$"'9@3.1="28>>)-1""'*4"'44"'44.@)*',"'9@3.@$2"5.10"28A2$G8$*1"-$,$'2$2

time

optio

nalit

y

necessary

lessoptional

moreoptional

first release

second release

third release

HI

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<.3$*"21)-=";'>")-/'*.?$4"3$-@9',,="A="

*$9$22.1=+"5$"*$$4")*,="2,.9$"1)">,'*

BC

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

It’s easy to make release

“slices” and move

detailed stories into them

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

744.*/"1'<$",.*$2"1)"10$"5',,",$12"

<'-=9.<'*12")-/'*.>$"21)-.$2".*1)",'?$-2

@A

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

744.*/"1'<$",.*$2"1)"10$"5',,",$12"

<'-=9.<'*12")-/'*.>$"21)-.$2".*1)",'?$-2

@A

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

744.*/"1'<$",.*$2"1)"10$"5',,",$12"

<'-=9.<'*12")-/'*.>$"21)-.$2".*1)",'?$-2

@A

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

&,'**.*/".*9-$;$*1',"-$,$'2$2"9'*"<$"

='9.,.1'1$4"'2"'"9),,'<)-'>3$"$3$*1

??

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<8.,4.*/"<$($-"&-)48912"=2.*/

=2$-">1)-?"@'AA.*/

#$%"&'()*BA'()*C'9;6)-/

5556'/.,$A-)48914$2./*69);

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Bonus Material (Not addressed in the Story Mapping session)

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Iteratively and

incrementally construct

software

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<-'4.=)*',"2)>5'-$"4$3$,)?;$*1"@A$2"29)?$"

10$*"$2=;'1$2+"'*4"'($;?12"1)"@A"=;$"'*4"9)21

Traditional

software

development

Scope

Time Cost

(resources)

BC

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

7/.,$"4$3$,)<;$*1"=>$2"?;$"'*4"9)21+"10$*",$3$-'/$2"

.1$-'?)*"'*4".*9-$;$*?*/"1)";'>.;.@$"29)<$"

Traditional

software

development

Scope

Time Cost

(resources)Scope

Time

Cost

(resources)

Agile

software

development

AB

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<$3$-'/$"'"20'-$4"8*4$-21'*4.*/")="4$2.-$4">-)4891"

/)',2"1)";.*.;.?$"29)>$"50.,$";'@.;.?.*/"3',8$

Traditional

software

development

Scope

Time Cost

(resources)Scope

Time

Cost

(resources)

Agile

software

development

Target business goals &

outcomes AB

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

To release benefit on a

schedule we’ll need to

leverage incremental and

iterative thinking(What’s the difference?)

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<.*9-$;$*=*/>"?8.,42"'"?.1"'1"'"=;$

1 2 3 4 5

Incrementing calls for a fully

formed idea.

And, doing it on time requires

dead accurate estimation.

@A

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<.1$-'=*/>"?8.,42"'"-)8/0"3$-2.)*+"

3',.4'1$2".1+"10$*"2,)5,@"?8.,42"8A"B8',.1@

1 2 3

A more iterative allows you to

move from vague idea to

realization making course

corrections as you go.

4 5

CD

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);193 <=

>'*?")-/'*.@'A)*2"9)*2.4$-"-$3.2.*/"10$"2';$"

B8*9A)*',.1?"'2"B'.,8-$6""C1$-'A)*".2"*)1"

1),$-'1$46

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

72"'"<-)4891")5*$-+"=)8"*$$4"'";)-$"-$>*$4"

8*4$-21'*4.*/")?"@20.<<'A,$B

CC

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

tool

<$$=.*/")8-"82$-"21)-.$2"1'2>?9$*1-.9"

',,)5$4"82"1)"4$@$-"2),8A)*"4$9.2.)*2

user goal

user task

BC

hold my options open

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<'=$">$'18-$"4$9.2.)*2".*"10$"9)*1$?1")>"

@;$"'*4"A84/$1",.;.1'@)*2

hole (to put the flower in)

dig hole

?

BC

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<);;.1"1)"2'=2>?.*/"82$-"*$$42+"*)1"1)"

2@$9.A9">$'18-$2

hole (to put the flower in)

dig hole

?

BC

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

51

&-)48912"5.10"2.;.,'-"<$'18-$2")=$*"3'->"

28?21'*@',,>".*"10$"A-.9$"5$"A'>

low cost moderate cost high cost

B0.*C"'?)81"10$"0./0D,$3$,"<$'18-$2"

.*"'"9'-"D"5$,,"'"?82".*")8-"$E';A,$

71"'"0./0",$3$,+"',,"<$'18-$2"'-$"

*$9$22'->

F81"5$"C*)5"10'1"',,"?82$2"4)*G1"

0'3$"10$"2';$"A-.9$

H'90"$22$*@',"<$'18-$"3'-.$2".*"

28?I$9@3$"J8',.1>"'%$9@*/"10$"K*',"

A-.9$

LM

$*/.*$

1-'*2;.22.)*

?-'C$2

282A$*2.)*

2$'12

21$$-.*/"50$$,

N"

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<'*)"9'8=)*2"82"1)"9)*2.4$-">8',.1?"'2"@$.*/"

9);A)2$4")B"!"#$%&'$"'*4"()"#$%&'$"$,$;$*12

C:.29822.)*2")B">8',.1?"0'3$"-$3),3$4"

'-)8*4"10$"15)"'2A$912")B"28@D$9=3.1?"

'*4")@D$9=3.1?"2.*9$"10$"=;$")B"

7-.21)1,$6"

E;@$44$4".*"10.2")@D$9=3$F28@D$9=3$"

2A,.1".2"10$".4$'"10'1"!"#$%&'$*+),-./0*

1$2/,.3(*/!*/4$*5%!36!27,3%$*/!*

2$+).2$7$3/(8"50.,$"()"#$%&'$*+),-./0*

1$2/,.3(*/!*/4$*5(,&(6,%&!3*!6*)($2(9GH

FFI)-.'J."<'*)

There’s more to

me than that

silly survey

technique!

KL

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<'*)"$=>,'.*2"10-$$"/$*$-',"9,'22.?9'@)*2"A)-">-)4891"

A$'18-$2B"!"#$%&'()#+"*+)%,-!)+#-*+'.#+"'*4",).-/&$)0#1

2"#$%&'()#C0$">-)48912";821"0'3$"10.2"

A$'18-$2"A)-";$"1)"D$"

9)*2.4$-"10$">-)4891"

'99$>1'D,$

3+)%,-!)+#-*+'.#C0$";)-$")A"10.2"E"/$1+"10$"

D$($-

4).-/&$)0#E",)3$"10.2"$,$;$*1")A"10$"

>-)4891F

“This car has many flaws. Buy it

anyway. It’s so much fun to

drive”

-- from a NY Times review of the

Mini Cooper

GH

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<$='-'1$")>?$9@3$"A8',.1B"C-);"28>?$9@3$"

A8',.1B

D>?$9@3$"A8',.1B"-$C$-2"1)"10$"3.2.>,$";$'28-'>,$+"'*4"

$'2.,B"3',.4'1$4"90'-'91$-.2@92")C"10$"=-)4891"828',,B"

.*"-$,'@)*"1)"10$"=-)48912E"2=$9.F9'@)*26"

! :)$2"10$"=-)4891"=$-C)-;">8/"C-$$"'2"2=$9.F$4G

! HI=$91")>?$9@3$"A8',.1B"1)">$"0./06

!"#$%&'(%)*"+,-./)0%1%02).3).4%)25%&-6&+'37)

30)5038"&.)8%2-97)&43-&%2)/3"):+;%)+2)+)

5038"&.)3<7%0=)"J0$2$"90).9$2"'%$91"10$"

=-)4891"82$-2E"=$-9$=@)*")C"A8',.1B

! K2"10$"=-)4891"2.;=,$"1)"82$G

! K2"10$"=-)4891"$L9.$*1"1)"82$G

! :)"K",.M$"82.*/"10$"=-)4891G

NO

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<2$"10$"='*)"9,'22.>9'?)*2"1)"@)10"

A-.)-.?B$"'*4"2A,.1

Brakes

(must have)

Basic brakes

(must have)

Stopping

distance(one dimensional)

Anti-locking

(delighter)

Cool dashboard

light when

slipping

(delighter)

CD

=$$A".*";.*4E"F)8";821"G*)5"F)8-"9821);$-2"'*4"82$-2"1)"

4$1$-;.*$"28@H$9?3$"3',8$6

I*$"A$-2)*J2"4$,./01$-";'F",$'3$")10$-2"'A'10$?96""

7*)10$-J2";821"0'3$".2"82$,$22"1)")10$-"9821);$-2

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

features

release

en

gin

e

tra

nsm

issio

n

su

sp

en

sio

n

bra

ke

s

ex

teri

or

bo

dy

Inte

rio

r se

ati

ng

tire

s

sprint

1234

Product goal: (in 4 sprints) be driving the coolest bus in town

<=

>$1?2",))@"'1"50'1"0'AA$*2".B"5$"1'@$"'"

*'.3$".*9-$;$*1',"'AA-)'90"1)"9)*21-89C)*

>$1?2"21'-1"5.10"10$"D'2.9"B$'18-$2")B")8-"D826

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

1 2 3

Iterating affords building up quality over time

<$"9'*",$3$-'/$".1$-'=)*"1)">8.,4"8?"

@8',.1A

BC

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<)*2.4$-"10$2$"=)8-"21)->"2?,.@*/"

0$8-.2A92"10'1"B8.,4"8?"C8',.1>!"#$%&$'$(()*+%

D)-"10$"=$'18-$"1)"B$";.*.;',,>"

4$;)*21-'B,$"E"B81"*)1"-$,$'2'B,$+"

50'1".2"10$";.*.;',"=8*9A)*',.1>

!"#$%&'()*)+,-$)./01),2&3)2'4'55#-3)

6'&75)#27)2,)8#&/7#9,2

,"-".)/)*+%0%1/$2).)/)*+"

F0'1"5)8,4"'44"10$"'B.,.1>"1)"?$-=)-;"

10$"82$-"1'2G".*"4.%$-$*1"5'>2H""744.*/"

.*"28B"1'2G2"10'1"'-$")?A)*',,>"

?$-=)-;$4H

!"#$%&'()#)+,-$)./01),%9,2#&)6'&75:)

7#0')&,,;<%)0,,&5:)/2%<0)0-#25&#9,2),2)

7#0'5

3"4$*+"

F0'1"5)8,4";'G$"10.2"=$'18-$"2'=$-"1)"

82$H""D)-"B)10"10$"82$-+"'*4"=)-"10$"

B82.*$22"?'>.*/"=)-"10$"2)I5'-$H

!"#$%&'()/2%<0)8#&/7#9,2:)'2+,-4'$'20)

,+)=<5/2'55)-<&'5)5<41)#5)4-'7/0)4#-7)

8#&/7#9,2))

5(".)/)*+6%7$#48#9":'$6%3$2%

;--$"/

F0'1"5)8,4";'G$"10.2"=$'18-$"$'2.$-"1)"

82$H"J)-$"4$2.-'B,$"1)"82$H""D'21$-"1)"

82$H

!"#$%&'()#<0,>4,$%&'9,2:)5'"3)8/5<#&)

7'5/?2:)5%''7);'35

KK

* Adapted from Gerard Meszaros’ “Storyotypes”

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

user

tasks to s

upport

releaseD D D D D I IB- C C- D D D DA- B B- B B B B-A- A B A A- A- B-

sprint

1234

Product goal: (in 4 sprints) be driving the highest quality bus possible

<=

>8.,4.*/"8?"@8',.1A".1$-'B3$,A"'*4"

.*9-$;$*1',,A"20.?2"10$"C$21"?-)4891"?)22.C,$D6 E$"F*)5"$'90"21)-A"9'*"C$"2?,.1".*1)"'1",$'21"G)8-"?'-12

H6 I'-,A".1$-'B)*2"21-.3$"1)"C8.,4"C'-$"*$9$22.B$2+",'1$-".1$-'B)*2"C8.,4"8?"

@8',.1A

J6 I3',8'B*/"-$'4.*$22"C'2$4")*"28CK$9B3$"@8',.1A"1)"8*4$-21'*4"4)*$*$22

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

:.3.4$"-$,$'2$"4$2./*"<"4$3$,)=;$*1".*1)"

10-$$"=0'2$2!"#$%$&'()*#+">8.,4"'"2.;=,$"2?21$;"2='*")@"*$9$22'-?"@$'18-$2"A-21"B"10$"

5',C.*/"2C$,$1)*

,%-.()*#+"744"D$E.F.,.1?"'*4"2'@$1?"*$E1

/$-'()*#+"G.*.20"5.10"9);@)-1+"=$-@)-;'*9$+"'*4",8E8-?

H$2$-3$"I;$".*"10$"-$;'.*.*/"10.-4"@)-"8*@)-$2$$*"'44.I)*2"

'*4"'4'=1'I)*2

timeuncertainty decreases over time

un

cert

ain

ty

OpeningGame

Build up necessities

Mid-GameBuild out

flexibility and business rule enforcement

End-GameRefine the UI and interactions, take

advantage of iterative learning

JK

Construx on the Cone of Uncertainty: http://www.construx.com/Page.aspx?hid=1648Visdos on the cone: http://www.implementingscrum.com/2008/02/19/vegas-hangover-enlightenment/

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

timeuncertainty decreases over time

un

cert

ain

ty

<0.2"=-)4891"/-)5.*/"21-'1$/>"2,)5,>"

?-.*/2"10$"=-)4891".*1)"@)9827*"'-A21"$*3.2.)*2"'*"$*A-$"='.*A*/"?>"21'-A*/"5.10"'"2B$190")-"'*"

8*4$-C='.*A*/"'*4"2,)5,>"?8.,4.*/"8="4$1'.,"

7==,>"10$"2';$"21-'1$/>"1)",$'-*"'?)81"10$"=-)4891"4);'.*"'2"D8.9B,>"

'2"=)22.?,$"E"1)"90'2$")81"8*9$-1'.*1>"?$@)-$"1))"0$'3.,>".*3$2A*/

OpeningGame

Build up necessities

Mid-GameBuild out

flexibility and business rule enforcement

End-GameRefine the UI and interactions, take

advantage of iterative learning

FG

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

End Game

Over time the value of

stories begin to

diminish signaling it’s

time for release

Mid Game

Once we’re confident

we have the “shape”

of the product right,

we begin to pile in

value

Opening

GameEarly stories emphasize

iteration and learning.

We need to be sure

we’re building the

right product

<))=.*/"'1"10$"-$,$'2$")>"?82.*$22"3',8$"

)3$-"@;$",$12"82"2$$"50'1A2"/).*/")*"0$-$B)"C*.20")*"@;$"

5$";'D"E1-.;"10$"

1'.,F"?D"4$>$--.*/"

21)-.$2")>";)4$21"

3',8$

time

cu

mu

lative

bu

sin

ess

va

lue

GH

!"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>

End Game

Over time the value of

stories begin to

diminish signaling it’s

time for release

Mid Game

Once we’re confident

we have the “shape”

of the product right,

we begin to pile in

value

Opening

GameEarly stories emphasize

iteration and learning.

We need to be sure

we’re building the

right product

?,<;51-2",-"@0,7;<4"A-,8/'72'"*<B;10'7."

C'"5''"43'"715<,6'0D"E'-'F4"2*1-'7

G3'"1-6'05'",H"015A"

15"A-,8/'72'

I'*0-1-2"'*0/1'0"1H"

8'J0'"E;1/71-2"43'"

01234"@0,7;<4"

>1K2*4'5"015A

timeac

qu

ire

d p

rod

uc

t k

no

wle

dg

e

L#

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<8.4$,.*$2"=)-"-$,$'2.*/")*">;$

?@

A6 B0.*"21)-.$2"'//-$22.3$,C"48-.*/"$'-,C"2D-.*12"1)"

E8.,4"',,"$22$*>',"=8*9>)*',.1C"$'-,C6

F6 G8.,4"8D"=8*9>)*',.1C")*,C"'H$-"',,"*$9$22.>$2"

'-$".*"D,'9$6

@6 &-)1$91">;$".*"10$"I*',"2D-.*12"=)-"D-)4891"

-$I*$;$*16

J6 722$22"-$,$'2$"-$'4.*$22"'1"10$"$*4")="$'90"

2D-.*1"'2"D'-1")="D-)4891"-$3.$56

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Parting thoughts

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

Questions?

<=

!"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69);

<8.,4.*/"<$($-"&-)48912"=2.*/

=2$-">1)-?"@'AA.*/

#$%"&'()*BA'()*C'9;6)-/

5556'/.,$A-)48914$2./*69);