steering iterative and incremental delivery with jeff patton
Post on 28-Jan-2015
113 Views
Preview:
DESCRIPTION
TRANSCRIPT
!"#$%&'())*+,&-#$&./&0$(122#+3$45%*+,&6,*73&(+8&./&5#,3"93$
:3;&0(<#+=)(<#+>(1?@#$,AAA@6,*730$#8B1"C34*,+@1#?"A*<3$D&>=3;)(<#+
!"#$$%&#$''"()*"+,-./0",11"234567"2)7)28)90":::;<431)+2.9=>6?)734/;>.@
A5)"B2.9=>6".:/)2C7"B)27B)>D8)
E#
what:who:why:
what:who:why:
Product Goals
Simple Personas
User Interface Sketch
User Story Map
R1
User Story Map
R2
R3
!""#$%&'(%)*+,-./#0F./6,3/7"8,1=,G1)"B2.9=>6",/9"H),6=2)"39),7
1$#2&-%*3(4-#56$)*I)7),2>50")JB1.2)0"8,139,6)",/9""B1,/"9)138)2K".H"B.6)/D,1"B2.9=>6"7.1=D./7
1$#2&-%*36/(56$)*L6)2,D8)1K",/9"3/>2)@)/6,11K"G=319",/9"8,139,6)"B2.9=>6"7.1=D./7
what:who:why:
Product Backlog
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?'0'"*0'"43'"@'A"<,-<'B45!"#$%&'()"&(*+&,%-+#.(+/&#+&01/%,&(+&*21$&'()&2%1",
/3#4#+5&$2%&617
4(3310("1.8%&731++#+5
9:;&<&99=
"%3%1/%&/$"1$%5'
,#/4(8%"'&721/%
"%1$)"%/&1+,&%>7%"#%+4%&617/
CC
7!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
Steering iterative and incremental delivery
%$$
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
Product Ownership takes a team
%$%
De
live
ry T
ea
mPr
od
uc
t O
wn
ers
hip
Te
am
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
!"#$%&'()*$+)#,'-#.("/0'.1%)#23$-'4"20'*..5'6.#17#('7%('87/5'0.'2"--.#0'07/9/7*'()+)*.-4)%0
%$#
Cycle 0 Cycle 1 Cycle 2 Cycle 3 Cycle 4
• implement cycle 1
• support cycle 1 delivery
• design for cycle 2• research for cycle 3
• implement cycle 2• fix cycle 1 bugs if any
• support cycle 2 delivery
• design for cycle 3• research for cycle 4• validate cycle 1
features
• implement cycle 3• fix cycle 2 bugs if any
• support cycle 3 delivery
• design for cycle 4• research fir cycle 5• validate cycle 1+2
features
• planning• researching• high level product
design• design for cycle 1
• development environment setup
• architectural “spikes”
See Miller’s Case Study of Customer Input For a Successful Product:: http://www.agileproductdesign.com/useful_papers/miller_customer_input_in_agile_projects.pdf
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
!"#$%&'()*$+)#,'-#.("/0'.1%)#23$-'4"20'*..5'6.#17#('7%('87/5'0.'2"--.#0'07/9/7*'()+)*.-4)%0!"#$%"! !"#$%&'(#)*+",-./(
0++',('#(&-##,+(#"()".'+(,'#".+,(1#"('-+(*+2'(345(&6&7+,
! 8-+6('-+*(/79*('-+()#":('-+6(*++$('#($#('#(;+'("+9$6(.*&7%$.*;(<=($+,.;*(9*$()".>*;(9&&+/'9*&+(&".'+".9
! 8-+6()#":,-#/($+'9.7,().'-('-+("+,'(#1('-+('+90
&'%()*! !"#$%&'(#)*+",(
/96(9?+*>#*@(9*,)+"(A%+,>#*,@(9*$(B9&&+/'C(,'#".+,('-9'(0++'('-+."(;#.*;4.*(,/+&.D&9>#*,
+,"%! !"#$%&'(#)*+",(
9,,+,,(/"#$%&'(A%97.'6(-#7.,>&9776(9*$(.*E+&'(0#"+(,'#".+,('#(.'+"9>F+76(.0/"#F+(.'
! !"#$%&'(#)*+",('9:+('-+()#":.*;(/"#$%&'('#(%,+",(9*$(&%,'#0+",('#(9,,+,,+,(.'
%$?
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
)0,7;<4",8-'05"?/*-"7'/16'0@"";51-2"43'">*?
214
!""#$%$&'($#)*&('+*$,-!.&/&0#12&"$'345.6&$(7! (548&9:/&'/7/%05&7! $%)6&$'.&/&0#12&"$'9;90&
Decompose big stories into smaller “sprint-sized” stories
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?;';'";@"'>'021-2"54,01'5"4,"715<;55"*4"0,;A-'"@0,7;<4",8-'0531@">''A-25
%$B
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
='4*1/'7"?@"7'512-"7016'5"7'<,>A,51B,-",C"D12"54,01'5"4,"5>*//'0"54,01'5
%$E
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
To release on a schedule leverage incremental and
iterative thinking(What’s the difference?)
%$?
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?1-<0'>'-@-2A"B;1/75"*"B14"*4"*"@>'
1 2 3 4 5
Incrementing calls for a fully formed idea.
And, doing it on time requires dead accurate estimation.
%$C
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?@4'0*A-2B"*-7"?1-<0'>'-A-2B"C;1/75"*"0,;23"6'051,-."6*/17*4'5"14."43'-"5/,8/D"C;1/75";E"F;*/14D
1 2 3
A more iterative allows you to move from vague idea to realization making course corrections as you go.
4 5
%$G
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>193 %%$
?*-@",02*-1A*B,-5"<,-517'0"0'6151-2"43'"5*>'"C;-<B,-*/14@"*5"C*1/;0'9""D4'0*B,-"15"-,4"4,/'0*4'79
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> %%%
?<;/@4;0'"*4"6*01,;5"54*2'5",A"<,>@/'B,-."C;5D'"7EF05*G.")*015
Product Owners must understand the delivery strategy that leads
to a finished product
time!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?,0@"/1@'"*-"*0A54"4,"'-6151,-"*-7"B;1/7"43'"C0,7;<4"3,/15A<*//D
Mid-Game End-Game
%%E
“Art is never finished, only abandoned.”
-Leonardo DaVinci
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
:5"8'"?;1/7"5,@8*0'"8'A0'"71*/1-2";B"5;?C'<D6'"E;*/14F
!"#$%&$$#'($)'*)+&,-#./)0,12)321'-124),3'&(4).02).5'),$62%.$)'*)$&782%91#./),(4)'782%91#./)$#(%2).02)9:2)'*);3#$.'.-2<)
=:724424)#().0#$)'782%912>$&782%912)$6-#.)#$).02)#42,).0,.)!"#$%&'$()*+,-./(0$1.+-23(.!(.4$(5%!26!17+2%$(.!(1$)*-1$7$2.38)50#-2)3*"#$%&'$()*+,-./(0$1.+-23(.!(.4$(53+&36+%&!2(!6(*3$139?@
>>A'3#,B#)C,('
There’s more to me than that silly survey technique!
%%#
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?*-,"7'5<01@'7"2'-'0*/"</*551A<*B,-5"C,0"D0,7;<4"C'*4;0'5
!"#$%&'()#!"#$%&'()*+$,)-+$"./#$+"#-#$0#.+)&#-$0'&$,#$+'$*'1-2(#&$+"#$%&'()*+$.**#%+.34#
*+)%,-.)+#-/+'0#!"#$,'&#$'0$+"2-$5$6#+7$+"#$3#8#&
1)0-2&$)3#5$4'/#$+"2-$#4#,#1+$'0$+"#$%&'()*+9
“This car has many flaws. Buy it anyway. It’s so much fun to drive”
-- from a NY Times review of the Mini Cooper
%%E
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?5'"43'"@*-,"</*551A<*B,-5"4,"C,43"
D01,01BE'"*-7"5D/14
Brakes(must have)
Basic brakes(must have)
Stopping distance
(one dimensional)
Anti-locking(delighter)
Cool dashboard light when
slipping(delighter)
%%F
@''D"1-">1-7G"H,;">;54"I-,8"H,;0"<;54,>'05"*-7";5'05"4,"
7'4'0>1-'"5;CJ'<B6'"6*/;'9
K-'"D'05,-L5"M7'/1234'0N">*H"/'*6'",43'05"*D*43'B<9""
:-,43'0L5"M>;54O3*6'N"15";5'/'55"4,",43'0"<;54,>'05
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?,-517'0"43'5'"@,;0"54,0A"5B/1C-2"
3';015D<5"43*4"E;1/7";B"F;*/14A
!"#$%&$'$(()*+%G,0"43'"@'*4;0'"4,"E'">1-1>*//A"
7'>,-540*E/'"H"E;4"-,4"0'/'*5*E/'."
83*4"15"43'">1-1>*/"@;-<D,-*/14A
!"#$%&'()*)+,-$)./01),2&3)2'4'55#-3)6'&75)#27)2,)8#&/7#9,2
,"-".)/)*+%0%1/$2).)/)*+!I3*4"8,;/7"*77"43'"*E1/14A"4,"
B'0@,0>"43'";5'0"4*5J"1-"71('0'-4"
8*A5K"":771-2"1-"5;E"4*5J5"43*4"*0'"
,BD,-*//A"B'0@,0>'7K
!"#$%&'()#)+,-$)./01),%9,2#&)6'&75:)7#0')&,,;<%)0,,&5:)/2%<0)0-#25	,2),2)7#0'5
3"4$*+"I3*4"8,;/7">*J'"4315"@'*4;0'"5*@'0"
4,";5'K""G,0"E,43"43'";5'0."*-7"@,0"43'"
E;51-'55"B*A1-2"@,0"43'"5,L8*0'K
!"#$%&'()/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%;--$"/I3*4"8,;/7">*J'"4315"@'*4;0'"'*51'0"
4,";5'K"M,0'"7'510*E/'"4,";5'K""G*54'0"
4,";5'K
!"#$%&'()#<0,>4,$%&'9,2:)5'"3)8/5<#&)7'5/?2:)5%''7);'35
%%N
* Adapted from Gerard Meszaros’ “Storyotypes”
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
)/*?"@2,,7AB'+'0AB'54C
%%D
goodbetterbest
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?5'"*"<3'55"2*>'"7'/16'0@"540*4'2@"4,",02*-1A'"54,01'5"4,"B;1/7!"#$%$&'()*#+!"#$%&!'!($)*%+!,'%-$./!(-+%+01.,%-.()*#+!2&&!3+4$5$%$067!'%0+8.'9:+(7!;('<+06=
/$-'()*#+!>+?.+!#('5$%$067!*+8<18)'.@+7!'+(0A+9@(>+(+8:+!9)+!$.!0A+!8+)'$.$./!0A$8&!<18!#.<18+(++.!'&&$91.(!'.&!'&'*0'91.(
OpeningGame
Build up necessities
Mid-GameBuild out
flexibility and business rule enforcement
End-GameRefine the UI and interactions, take
advantage of iterative learning
%%C
time
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?3'"54,0@">*A"<,-4*1-5"48,"1>A,04*-4"*-*4,>1<*/"B'*4;0'5!"#$!"#$!%&'$%&$'"#$())*+,(-%.$+/$'"#$*+/'$%&$#//#.-(*$(,-0+-#/$'"#$())*+,(-%.$/1))%2'/
!"#$(")$*&+,-$')'.%&$+/$'"#$/%34(2#$4#$51+*6$'"('$/1))%2'/$'"#$*#(/'$.175#2$%&$.#,#//(28$'(/9/$(,2%//$'"#$&1**$/)(.$%&$1/#2$#:)#2+#.,#
time
necessity
The backbone
The walking skeleton
%%C
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?,;0"7'/16'0@"540*4'2@">*A1>1B'5"/'*0-1-2"*-7">1-1>1B'5"015C!"#$%&'(')*$+,-$./0$/$%-(1)2$3.-$+1$'2-)34#$/$%/4-$2-&'5-"#$%+"/+-*#
%#$
!"#$%%"&'(")*+,-."*//"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
)01,01?@'"8,0A"4,">*B1>1@'"/'*0-1-2
!"#$%&%'("#$)&"$(&*(+",$"(-.&)/&%'(01"($&'10(2$3/.40(5&6'#0"7($&78
!"#$%&%'("#$)&"$(#-3.0(0"41%&4#)(41#))"%'"7(5&6'#0"7($&78
9"(4#%(:%&71(3%(65"(-;(<0$&55&%'(01"(0#&)=(>(/"*"$$&%'($":%"5"%07
timeac
qui
red
pro
duc
t kno
wle
dg
e
%#%
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?'0'"*0'"43'"@'A"<,-<'B45!"#$%&'()"&(*+&,%-+#.(+/&#+&01/%,&(+&*21$&'()&2%1",
!"#$%&'(#)*+",-./('+01,
2%034'"0&5($+6+3#/1+*'
!"#$%&'(#)*+",-./('+01(1++7*8,
9'#":(,/3.;*8(-+%".,7&,
<##$4=+>+"4=+,'(,'"0'+8:
2+3.6+":(,'"0'+8:
?035.*8(,5+3+'#*%##
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
We fail when we can’t collaborate effectively to
deliver
%#?
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
Build shared understanding throughout design and
development
%#?
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
We fail when we can’t imagine the future
%#?
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
Map the future vision of your product
%#?
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
We fail when we believe the experience we imagine is true
%#?
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
Plan to learn: build enough to validate early
%#?
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
Now and Later
%#?
!"#$%&'())*+,&-#$&./&0$(122#+3$45%*+,&6,*73&(+8&./&5#,3"93$
:3;&0(<#+=)(<#+>(1?@#$,AAA@6,*730$#8B1"C34*,+@1#?"A*<3$D&>=3;)(<#+
6E(*7(F73&G*+"3$&HIJJ
Questions?
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?5'@;/"/1-A5"*-7"0'@'0'-<'5
!"#$%!&'(%)!*+,,-./!+%012$3!45,3667778.9':((;81(<6.9':((;#6#=$6:$5$%#(>7+%$?@@AB6-.C$98,4,D#'+%0CEFGH6FI!!!
J4$!.$7!K#$%!#'(%)!:+1;2(/!-#!+!<+,3!45,3667778+/-2$,%(CK1'C$#-/.81(<6:2(/6'4$?.$7?:+1;2(/84'<2!
L/-2$!M$N$2(,<$.'!@@!9!@O!PK-1;%$Q3!45,3667778+/-2$,%(CK1'C$#-/.81(<6C(7.2(+C#6=K-1;%$Q#6,+5(.?+/-2$?@@9@O8,CQ
R%(CK1'!S7.$%#4-,!@@!9!@O!PK-1;%$Q3!45,3667778+/-2$,%(CK1'C$#-/.81(<6C(7.2(+C#6=K-1;%$Q#6,+5(.?,(?@@9@O8,CQ
"#$%!&'(%)!*+,,-./!PK-1;%$Q3!45,3667778+/-2$,%(CK1'C$#-/.81(<6C(7.2(+C#6=K-1;%$Q#6,+5(.?#'(%)?<+,,-./8,CQ!
%B%
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?5'@;/"/1-A5"*-7"0'@'0'-<'5
!"#$%!"&'()%'(*"+&%,)-.#($%/*('%"&%*0-)1%$2,,"&+%3#2**(*4%56,477
88892+"#(,)-'/30'(*"+&93-$7'-8&#-2'*7:#$;:&'();'(*"+&;,)-.#($9,'<
!"#$%!"&'()%(=2$,#(%.23>#-+%?,)"&0*%-&%,)(@,()<-)20('%./*"&(**%32)'*A4%56,477
88892+"#(,)-'/30'(*"+&93-$7'-8&#-2'*7%:#$;:&'();.23>#-+;32)'*9,'<
B"##()C*%!"#$%&'()*%+,%!(#'+-$.%/01('%2+.%"%&(33$##,(4%5.+)(3'4%56,47788892+"#(,)-'/30'(*"+&93-$7/*(</#;,2,()*7
$"##();3/*0-$();"&,/0;"&;2+"#(;,)-D(30*9,'<%%
E5(%FG2#/2.#(H%/*2.#(H%2&'%<(2*".#(I%$2&0)2%2&'%-05()%+--'%"'(2*%3-$(%<)-$%
B2)01%J2+2&C*%.-->4%/0#16.$)7%8+9%'+%!.$"'$%5.+)(3'%!(#'+-$.#%:+;$
K%+)(20%'"*3/**"-&%-&%-/0,/0H%-/03-$(H%2&'%"$,230%"&%"&%L-.()0%!2.)"32&0C*%
)(3-)'('%02#>4%<$=";6+.%6#%>(.%?$)6(-%56,477#".)2)19"='29-)+7&-'(7M
E5(%)(2#%*-/)3(%-<%05(%3#(G()%B-&2%N"*2%G"*/2#"O2P-&%3-&3(,04%Q-5&%K)$"02+(C*%
@.$%@A64$%?$'=+)#%B++)%2+.%C$#6A04%56,477'#923$9-)+73"02P-&93<$R
"'STUVMWV
%B#
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
Story Mapping examplesThanks to all those that have sent photos.
This is just a few. Please send your examples to jpatton@acm.org
%??
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?4,0@">*AA1-2"*4"=*BC,
%DE
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?4,0@">*AA1-2"*4"=*BC,
%DE
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?4,0@">*AA1-2"*4"?B)
%CD
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?4,0@">*AA1-2"*4"?B)
%CD
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?4,0@">*AA1-2"*4"?B)
%CD
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?4,0@">*AA1-2"1-"B31-*
%CD
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?/1<1-2"*">*@"1-"A1-5B
%C$
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?4,0@"A*BB1-2"1-"C50*'/
%D%
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?4,0@">*AA1-2"*4"B/,C,9<,>
%D#
!"#$%%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
?4,0@">*AA1-2"*4"B/,C,9<,>
%DE
top related