Outside The Code
Upcoming SlideShare
Loading in...5
×
 

Outside The Code

on

  • 3,744 views

Languages and applications development frameworks continue to get more capable, more dependable, and help us build applications faster than every before. But building good applications fast usually ...

Languages and applications development frameworks continue to get more capable, more dependable, and help us build applications faster than every before. But building good applications fast usually draws attention to what we all know is the toughest part of software development: figuring out what to build.

The good news is that while tools we use to build software have been improving, the tools we use to figure out what to build have been improving too. This short talk focuses on the techniques we use outside the software to collaborate and plan with our customers and users. You’ll learn about concepts and techniques for effectively talking about and representing your product ideas, for understanding the people who use your software, and how to leverage iterative and incremental development to learn faster and reduce risk.

As a responsible software craftsman, you’ll walk away with ideas for matching your skills outside the code with your skills inside the code.

Statistics

Views

Total Views
3,744
Views on SlideShare
3,677
Embed Views
67

Actions

Likes
9
Downloads
204
Comments
0

5 Embeds 67

http://blogs.agilefaqs.com 56
http://www.slideshare.net 7
http://www.linkedin.com 2
http://clickwatchlearn.blogspot.com 1
http://clickwatchlearn.blogspot.com.au 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Outside The Code Outside The Code Presentation Transcript

  • Agile Outside the Code Using agile discovery ideas to drive product success Jeff Patton AgileProductDesign.com !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>
  • A story about Gary and his rough start creating a product using an agile approach 4 strategies Gary used to course correct Gary’s successful product today !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> #
  • @''4"A*0B9"" C'D5"*">;51<1*-"E*551,-*4'"*F,;4"*"E0,7;<4"17'*9 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?
  • ?*0@"8*-45"4,"A;1/7"*"B0,7;<4"C,0" B',B/'"/1D'"31>5'/C E3'"B0,7;<4"8,;/7"3'/B" >;51<1*-5"<,//*A,0*4' B/*-"B0,F'<45"*-7"2125 A;1/7"'/'<40,-1<"B0'55"D145 >*-*2'"*"A*-7">*1/1-2"/154 B0,>,4'"2125"430,;23"'>*1/ !"#$%&'&()%*+&*,-)%#./& ('.012,3&*,#1.4'+156 ?*0@"<*//'7"14"!"#$!%&% !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> G
  • ?*0@"A,;-7"*"43'"B'54"C*1/5"7'6'/,D'0" 3'"<,;/7 :0>'7"8143"*"D0,7;<4"6151,-."43'"4'*>" 2,4"54*04'79 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> E
  • ?3'@";5'7"*"51>A/'"*21/'"*AA0,*<3."B0'*C1-2" 7,8-"8,0C"1-4,"5>*//"A*045"D";5'0"54,01'5 E,0C"A0,20'55'79""F*0@"5*8"20'*4" 5,G8*0'"B'1-2"B;1/4"'6'0@"7*@9 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> H
  • :5"5,?8*0'"2'45"@;1/4."A*0BC5"<*53" 0'5'06'5"2,"7,8- !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> D
  • :5"5,?8*0'"2'45"@;1/4."A*0BC5"<*53" 0'5'06'5"2,"7,8- !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> D
  • What was going wrong? !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> %
  • ='4'0>1-1-2"'?*<4/@"83*4"4,"A;1/7"15" 71B<;/4 “The hardest single part of building a software system is deciding precisely what to build.” :21/'C5"51>D/'"54,0@"801E-2" *-7"D01,01EF*E,-"15"51>D/' G,,"51>D/'9 I0'7"J0,,K5." *;43,0",L"MN,"O1/6'0"J;//'4P."H%QR !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> H$
  • Typical process: discovery delivery !"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69); <<
  • Bad agile process: delivery !"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69); <=
  • Good agile process: discovery delivery !"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69); <=
  • discovery: figuring out what to build, and validating those decisions delivery: building it !"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69); <=
  • Think of a product you were proud to have contributed to... How did discovery happen before and during the project? (take 5 minutes and talk with someone near you) !"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69); <=
  • Delivery: Discovery: • Specify product to build • Understand customers & market • Write code • Understand competitors • Test working software • Understand users • Document product • Distill business strategy into • Manage product delivery product strategy • Ideate product ideas • Prototype user experience • Validate prototype user experience with users • Create detailed UI design • Validate working software with users • Compare expected market results with actual market results after delivery !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • Common agile practice today, and what’s missing !"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69); <=
  • 3 general roles: team (delivers) customer/product owner (discovers) coach/ScrumMaster (supports & facilitates) !"#$%"&'()*+"',,"-./012"-$2$-3$4+"55567/.,$&-)4891:$2./*69); <=
  • ?-"*21/'"7'6'/,@>'-4"8'A0'"1-6,/6'7"1-" >*-B"-'54'7"<B</'5 product release release Sprint daily story development cycles time © 2006-2009 Jeff Patton, All rights reserved, www.agileproductdesign.com !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> 39
  • !""#$%&'()(%*+,#$%*('%+,#'(,(+-(-#*.#/'(+0# 12#,.%3#2('$."-#/(*4((%#21/,$&#'(,(+-(- product public release incremental incremental delivery delivery Sprint daily story development cycles time © 2006-2007 Jeff Patton, All rights reserved, www.agileproductdesign.com 5#6778#9(:#;+<.%=#+,,#'$3>*-#'(-('?("=#444@!3$,(;'."1&*A(-$3%@&.) 40 67
  • !"#$$%$&'#$(')%*%+%"%,-'"../'(%0121$,'#,' (%0121$,'#"3,4(1* product D<1'G2.(4@,',1#B'"%)1*'<121 public release E F.@4*'.$'21"1#*1'&.#"* incremental E H11G'#$'1-1'4G',.',<1'2.#(B#G incremental delivery delivery Sprint D<1',1#B'"%)1*'<121 daily story E F.@4*'.$'*G2%$,'&.#"* development cycles E H11G'#$'1-1'4G',.',<1'21"1#*1 time © 2006-2007 Jeff Patton, All rights reserved, www.agileproductdesign.com 5'6778'910'!#:.$;'#""'2%&<,*'21*12)1(;'===>?&%"1!2.(4@,A1*%&$>@.B 40 6C
  • !"#$%&'()*+&#,-".(*+('/-(0*++*12(3/4+- product public release incremental incremental delivery delivery Sprint Product Discovery daily story development cycles © 2006-2007 Jeff Patton, All rights reserved, www.agileproductdesign.com 5(6778(9-:(!4;#1<(4==("*2/'+("-+-",-$<(>>>?@2*=-!"#$%&')-+*21?&#0 40 66
  • We’ll focus on 4 emergent agile strategies that emphasize discovery: 1. Understand users and what they need to succeed 2. Prioritize goals and users before features 3. Make the product concept visible 4. Use both iterative and incremental delivery strategies that maximize discovery !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> #?
  • Practice #1: Understand users to understand your product !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> #?
  • Gary assumed his users were just like him, so he didn’t have to think much about them. The Rails expert assumed the same. !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> #?
  • You aren’t your user. And likely neither is your client or customer. !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> #?
  • ?4*04"@A"/15B-2"'*<3"C1-7",D";5'0",D"A,;0" E0,7;<4 J*-7"K*-*2'0 M*5;*/"<,-<'04N2,'0 K;51<1*- M/;@">*-*2'0 J*-7"L*- )0'55 F*<3"4AE'",D";5'0"3*5"5,>'431-2"43'AG7"/1C'"4," *<<,>E/153"8143"A,;0"E0,7;<4."83*4"15"14H !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> #I
  • ?,0'"4@A'5",B";5'05"C">,0'"4@A'5",B" ;5'5 F*-7"?*-*2'0 H*5;*/"<,-<'04I2,'0 ?;51<1*- H/;J">*-*2'0 F*-7"G*- )0'55 ?,0'"4@A'5",B";5'5"C">,0'"5,D8*0' !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> #E
  • Different users don’t just do different things Different users value software things... differently !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> #%
  • ?@'4<3"*"/12348'1234"A'05,-*"4," ;-7'054*-7"83B"B,;0";5'05"*0'-C4"/1@'"B,; !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> D$
  • ?0'*@-2"A'05,-*5"<*-"B'"C*54"*-7" <,//*B,0*@6' !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> DE
  • ?0'*@-2"A'05,-*5"<*-"B'"C*54"*-7" <,//*B,0*@6' !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> D#
  • Premier Health User Constituencies am ple ex Mary Patricia Partner Physician Staff Member Personal Health Advisor • Experienced clinicians and medical office staff. • 50+, above average • Experienced nurse, with income good phone and computer • Desire to serve patients skills better, but frustrated by • Mixed health – some very the economics that make healthy, others managing • Uses the application many it difficult. chronic problems hours at a time, multiple days a week • Computer skills vary wildly. • Looking for better quality health care – specifically • Will receive training and • Fast paced office with a more help and advice than support big workload. a doctor and staff seem to • Access to peers to ask • Likely buried in paper have time to give. • Not computer phobic, but ?0'*4'"51>@/'"A;1<B" questions records not particularly skilled. • Uses the application 0'C'0'-<'"@*2'5"4,"5,<1*/1D'" “I want to efficiently help members and not have to “I’m excited that Premier can offer my patients the extra attention I can’t. infrequently from home. worry about the technology “I want someone who can E,;0">,54"<01F<*/"@'05,-*5 while doing it” But I want to make sure that the extra record keeping isn’t a burden for answer questions and give my staff.” me advice.” !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> GG
  • ?*7"?1>1@5"A054"51>B/'";5'0"B0,A/'5 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> CD
  • Use lightweight user personas to identify what you do and don’t know about your users Backfill with lightweight research !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • Practice # 2: Identify and prioritize goals and users before features !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • =,-?4"<,-@;5'"@'*4;0'5"A,;"<0'*4'"B"A,;0" !"#$"#"B"@0,>"C0,7;<4?5"%&$'(# D,,7"C0,7;<4"2,*/5"@,<;5",-"-,4"E83*4F"4,"G;1/7"G;4"7'5<01G'"E83AF" 1-"43'"@,0>",@"G'-'H4"8'?//"0'<'16' !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> IJ
  • )0,7;<4"2,*/5.";5'05"*-7"*<?61?'5"5;@@,04'7" AB"5,C8*0'"D,0>"*"7'@'-7'-4"31'0*0<3B Product Goals (Increase Revenue, Reduce Costs) User Types (The people that will use some solution to meet their goals) Activities & Tasks (performed by users using software) !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> EF
  • )01,01?@1-2"2,*/5"*-7"'/1>1-*?-2"/,8" A01,014B"2,*/5"3*5"<*5<*71-2"'('<45",-"5<,A' Product Goals (Increase Revenue, Reduce Costs) User Types (The people that will use some solution to meet their goals) Activities & Tasks (performed by users using software) !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> C%
  • )01,01?@'"A,;0"2,*/5"B'C,0'"A,;"D01,01?@'" A,;0"C'*4;0'5 Product Goals (Increase Revenue, Reduce Costs) User Types (The people that will use some solution to meet their goals) Activities & Tasks (performed by users using software) !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> E$
  • Identify your product goals and your users What goals are most important to achieve first? What users are critical to support to reach those goals? Prioritize goals and users before digging too deep into features !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • Practice #3: Collaborate to create visualizations that build shared understanding !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?#
  • ?@'-"83'-"8'"6'0A*//B"715<;55"17'*5."8'">*B" 1-<,00'<4/B"A'/1'6'"8'"3*6'"43'"5*>'";-7'054*-71-2 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> CD
  • ?'@0'5'-A-2",;0"17'*5"*5">,7'/5"*//,85";5"4," 7'4'<4"1-<,-5154'-<1'5"1-",;0";-7'054*-71-2 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> BB
  • ?30,;23"715<;551,-"*-7"14'0*@6'">,7'/"A;1/71-2" 8'"*0016'"*4"*"540,-2'0"53*0'7";-7'054*-71-2 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> BC
  • ?51-2"43*4"<,>>,-";-7'054*-71-2"8'"<*-" 8,0@"4,2'43'0"4,"*0016'"*4"43'"5*>'",AB'<C6'5 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> DE
  • ?;1/71-2"*">*@"A0,>"*21/'";5'0"54,01'5" B;1/75"53*0'7"@0,7;<4";-7'054*-71-2 Gary Levitt, owner & designer of Mad Mimi !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> CD
  • ?02*-1@'";5'0"54,01'5"4,"4'//"*"A122'0"54,0B" *A,;4"B,;0";5'05"'CD'01'-<'" !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> EF
  • ?5'">*@5"*5"*"A*<B70,@"C,0"715<;551,- =15<;551,-"17'-DCE"015B5."1-<,>@/'4'" ;-7'054*-71-2."*-7"7'@'-7'-<1'5 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> F%
  • ?014'";5'0"5<'-*01,5"4,"431-@"430,;23";5'0"'AB'01'-<' Steven Credit Card Marketing Field Manager Steven is a field manager working at the local shopping 5. The date is defaulted to today, and the shift is defaulted to ‘morning’ center. He’s in the middle of a since he hasn’t yet entered info for today. Steve begins to enter the long workday supervising 13 reps name, but after a few characters the system auto-completes his reps who are busy talking to name. people trying to convince 6. The rep’s ID is already filled in, along with the code for the credit card them to apply for a credit promotion they’re working on today. card. 7. Steve fills in the shift information for his rep. He then enters the total number of applications taken. Field Manager enters daily performance reports 8. It looks like from the notes on this sheet that this rep left sick two 1. The shift has just ended and his reps are coming up with their hours early. Steve adds a note about this in the system. totals. They have printed sheets with totals written on them. 9. Time passes as more reps bring in their sheets and Steve completes Steve quickly looks them over and signs them off. His assistant entering them in between conversations. manager brings him other sheets with totals he’s signed off. 10. After all the sheets are done, Steve looks at a summary screen for 2. In between visits by reps, Steve opens his Field Manager the day. It looks like he’s close to his goal. If the next shift continues Workbench on his laptop. After logging in he sees today’s date and the planned number of applications his reps should be at this rate he’ll beat the plan by 5% or so. That’s good. gathering – 180 for today. 11. Steve validates that the base pay is correct at $5 per app, and that 3. He also sees yesterday’s numbers, and last week’s numbers, he’s set an individual bonus giving reps $50 each if they reach 20 and the last 30 days in graph that shows applications relative to apps. Next to each rep he sees the calculated pay, base, bonus, and approval rate. Last week’s numbers were bad, and it’s the last total pay for the day. week of the month, so Steve knows he’s got to do well today. 12. The annual sale at Macy’s has brought a lot of people in today. Steve 4. Steve clicks “enter rep performance data.” He shuffles his reps chooses a “sale increases mall foot traffic” code to add to his shift performance sheets and grabs the first one. data sheet. Frank, his boss, has pestered him to make sure he includes this type of information in his daily summaries. !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> C$
  • ?,>1<"@,,A1-2"5'45"*";5'0"5<'-*01,"4," B1<4;0'5 C''"88897'512-<,>1<59,02"D,0"</1B*04"*-7"'E*>B/'5 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> FG
  • ?@'4<3A,*071-2"15"<,//*A,0*B6'"8*C"4," <,>'";D"8143"EF"17'*5 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> G#
  • ?3'"7'512-"54;71,"*@@0,*<3"/'4A5"'6'0B,-'" 3*6'"*"2,"*4"14 Design Studio Approach http://interaction08.ixda.org/Jeff_White%20and%20Jim%20Ungar.php © 2006-2009 Jeff Patton, All rights reserved, www.agileproductdesign.com !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> 177
  • ?;1/7"@*@'0"@0,4,4A@'5"*5"A,;"8,;/7"*" ;5'0"1-4'0B*<' C,>@,-'-DE'7"@*@'0"@0,4,4A@'5"*0'"F;1<G"4," H;1/7"<,//*H,0*D6'/A"*-7"'*5A"4,"<3*-2' !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> IJ
  • ?,6'*@/'"<,>A,-'-45"*//,8"51>;/*B-2" 43'";5'",C"*"A0,7;<4"@'C,0'"14"'D1545 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> EE
  • &,'"0'<,>>'-75";51-2"43'"?*?'0" ?0,4,4@?'"4,"<,>>;-1<*4'"43'"AB"7'512- !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> CD
  • ?,>>;-1<*4'"@,8"8143"/12348'1234" 54,0AB,*075 © 2006-2009 Jeff Patton, All rights reserved, www.agileproductdesign.com !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> 176
  • )0,7;<4"=15<,6'0?"/,,@5"/1@'"4315 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> AB
  • )0,7;<4"=15<,6'0?"/,,@5"/1@'"4315 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> A%
  • At every stage of building product understanding, make your understanding visible !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?$
  • Practice #4: When developing use iterative and incremental strategies to maximize learning, and minimize risk !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • Don’t confuse a purely incremental approach with an iterative and incremental approach !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?#
  • ?1-<0'>'-@-2A"7'/16'05"*"B14"*4"*"@>' Incrementing calls for a fully formed idea. And, doing it on time requires dead accurate estimation. 1 2 3 4 5 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> CD
  • During delivery we often fail to answer some critical questions A*6'"8'"B;1/4"43'" A*6'"8'"B;1/4"43'" 5,/;C,-"43'">*0D'4" 5,/;C,-"*4"*"I;*/14J" 6*/;'5E /'6'/",;0"4*02'4" F43'"01234"G0,7;<4H *;71'-<'"8*-45E F43'"G0,7;<4"01234H !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • ?14'0*@-2A"'BC'<45"<3*-2'."D;1/75"*"0,;23"6'051,-." 6*/17*4'5"*-7"<3*-2'5."43'-"5/,8/E"D;1/75";C"F;*/14E A more iterative strategy allows you to move from vague idea to realization making course corrections as you go. 1 2 3 4 5 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> GH
  • @*-A",02*-1B*C,-5"<,-517'0"0'6151-2"43'"5*>'" D;-<C,-*/14A"*5"D*1/;0'9""E4'0*C,-"15"-,4" 4,/'0*4'79 193 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ??
  • An iterative strategy builds up subjective quality (did you know there were two kinds of quality?) !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • )0,7;<45"8143"51>1/*0"?'*4;0'5",@'-"6*0A" 5;B54*-C*//A"1-"43'"D01<'"8'"D*A E31-F"*B,;4"43'"3123G/'6'/"?'*4;0'5" '-21-' 1-"*"<*0"G"8'//"*"B;5"1-",;0"'H*>D/' 40*-5>1551,- :4"*"3123"/'6'/."*//"?'*4;0'5"*0'" B0*F'5 5;5D'-51,- -'<'55*0A 5'*45 I;4"8'"F-,8"43*4"*//"B;5'5"7,-J4" 54''01-2"83''/ 3*6'"43'"5*>'"D01<' Q" K*<3"'55'-C*/"?'*4;0'"6*01'5"1-" 5;BL'<C6'"M;*/14A"*('<C-2"43'"N-*/" D01<' 51 low cost moderate cost high cost !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> OP
  • ?*-,"<*;@,-5";5"4,"<,-517'0"A;*/14B"*5"C'1-2" <,>D,5'7",E"!"#$%&'$"*-7"()"#$%&'$"'/'>'-45 F=15<;551,-5",E"A;*/14B"3*6'"0'6,/6'7" *0,;-7"43'"48,"*5D'<45",E"5;CG'<@614B" *-7",CG'<@614B"51-<'"43'"@>'",E" :0154,4/'9" H>C'77'7"1-"4315",CG'<@6'I5;CG'<@6'" 5D/14"15"43'"17'*"43*4"!"#$%&'$*+),-./0* 1$2/,.3(*/!*/4$*5%!36!27,3%$*/!* There’s more to me than that 2$+).2$7$3/(8"831/'"()"#$%&'$* silly survey +),-./0*1$2/,.3(*/!*/4$*5(,&(6,%&!3* technique! !6*)($2(9JK IIL,01*M1"?*-, !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> N%
  • ?*-,"'@A/*1-5"430''"2'-'0*/"</*551B<*C,-5"D,0"A0,7;<4" D'*4;0'5E"!"#$%&'()#."*+)%,-!)+#-*+'.#."*-7",).-/&$)0#1 2"#$%&'()# F3'"A0,7;<45">;54"3*6'"4315" D'*4;0'5"D,0">'"4,"G'" <,-517'0"43'"A0,7;<4" *<<'A4*G/' 3+)%,-!)+#-*+'.# “This car has many flaws. Buy it F3'">,0'",D"4315"H"2'4."43'" anyway. It’s so much fun to G'+'0 drive” -- from a NY Times review of the 4).-/&$)0# Mini Cooper H"/,6'"4315"'/'>'-4",D"43'" A0,7;<4I !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> J$
  • ?5'"43'"@*-,"</*551A<*B,-5"4,"C,43" D01,01BE'"*-7"5D/14 Brakes (must have) Cool dashboard Basic brakes Stopping Anti-locking light when (must have) distance (delighter) slipping (one dimensional) (delighter) @''D"1-">1-7H"I,;">;54"J-,8"I,;0"<;54,>'05"*-7";5'05"4," 7'4'0>1-'"5;CK'<B6'"6*/;'9 L-'"D'05,-M5"7'/1234'0">*I"/'*6'",43'05"*D*43'B<9"" :-,43'0M5">;54N3*6'">*I"C'";5'/'55"4,"5,>',-'"'/5' !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> FG
  • @'4A5"/,,B"*4"83*4"3*CC'-5"1D"8'"4*B'"*" -*16'"1-<0'>'-4*/"*CC0,*<3"4,"<,-540;<E,- @'4A5"54*04"8143"43'"F*51<"D'*4;0'5",D",;0"F;59 sprint 4 3 2 1 release Interior seating exterior body transmission suspension features brakes engine tires Product goal: (in 4 sprints) be driving the coolest bus in town !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?#
  • ?'"<*-"/'6'0*2'"14'0*@,-"4,"A;1/7";B" C;*/14D Iterating affords building up quality over time 1 2 3 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> EF
  • ?,-517'0"43'5'"@,;0"54,0A"5B/1C-2" 3';015D<5"43*4"E;1/7";B"F;*/14A !"#$%&$'$(()*+% 3"4$*+" G,0"43'"@'*4;0'"4,"E'">1-1>*//A" I3*4"8,;/7">*J'"4315"@'*4;0'"5*@'0" 7'>,-540*E/'"H"E;4"-,4"0'/'*5*E/'." @,0">'"4,";5'K""G,0"E,43"43'";5'0."*-7" 83*4"15"43'">1-1>*/"@;-<D,-*/14A @,0"43'"E;51-'55"B*A1-2"@,0"43'" !"#$%&'()*)+,-$)./01),2&3)2'4'55#-3) 5,L8*0'K 6'&75)#27)2,)8#&/7#9,2 !"#$%&'()/2%<0)8#&/7#9,2:) '2+,-4'$'20),+)=<5/2'55)-<&'5)5<41)#5) ,"-".)/)*+%0%1/$2).)/)*+" 4-'7/0)4#-7)8#&/7#9,2)) I3*4"8,;/7"*77"43'"*E1/14A"4,"B'0@,0>" 43'";5'0"4*5J"1-"71('0'-4"8*A5K"" 5(".)/)*+6%7$#48#9":'$6%3$2% :771-2"1-"5;E"4*5J5"43*4"*0'",BD,-*//A" ;--$"/ B'0@,0>'7K I3*4"8,;/7">*J'"4315"@'*4;0'"'*51'0" !"#$%&'()#)+,-$)./01),%9,2#&)6'&75:) 4,";5'K"M,0'"7'510*E/'"4,";5'K""G*54'0" 7#0')&,,;<%)0,,&5:)/2%<0)0-#25&#9,2),2) 4,";5'K 7#0'5 !"#$%&'()#<0,>4,$%&'9,2:)5'"3)8/5<#&) * Adapted from Gerard Meszaros’ “Storyotypes” 7'5/?2:)5%''7);'35 !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> NO
  • A;1/71-2";B"C;*/14D"14'0*E6'/D"*-7" 1-<0'>'-4*//D"531B5"43'"F'54"B0,7;<4"B,551F/' G9 H'"I-,8"'*<3"54,0D"<*-"F'"5B/14"1-4,"*4"/'*54"J,;0"B*045 #9 K*0/D"14'0*E,-5"54016'"4,"F;1/7"F*0'"-'<'551E'5."/*4'0"14'0*E,-5"F;1/7";B" C;*/14D sprint L9 K6*/;*E-2"0'*71-'55"F*5'7",-"5;FM'<E6'"C;*/14D"4,";-7'054*-7"7,-'-'55 4 3 2 1 A- B- D C D A B C- B- D B D A B A- D B A- D BI B- DI release user tasks to support Product goal: (in 4 sprints) be driving the highest quality bus possible !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • =1617'"0'/'*5'"7'512-"?"7'6'/,@>'-4"1-4," 430''"@3*5'5 !"#$%$&'()*#+"A;1/7"*"51>@/'"5B54'>"5@*-",C"-'<'55*0B"C'*4;0'5" D054"E"43'"8*/F1-2"5F'/'4,- ,%-.()*#+":77"<*@*G1/14B."H'I1G1/14B."*-7"5*C'4B /$-'()*#+"J1-153"8143";5*G1/14B."@'0C,0>*-<'."*-7"5'I"*@@'*/ K'5'06'"L>'"1-"43'"0'>*1-1-2"43107"C,0";-C,0'5''-"*771L,-5" *-7"*7*@4*L,-5 Opening Mid-Game End-Game Game Build out Refine the UI and uncertainty Build up flexibility and interactions, take advantage of necessities business rule iterative learning enforcement uncertainty decreases over time time Construx on the Cone of Uncertainty: http://www.construx.com/Page.aspx?hid=1648 Visdos on the cone: http://www.implementingscrum.com/2008/02/19/vegas-hangover-enlightenment/ !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> MN
  • ?315"@0,7;<4"20,81-2"540*4'2A"5/,8/A" B01-25"43'"@0,7;<4"1-4,"C,<;5 :-"*0D54"'-6151,-5"*-"'-D0'"@*1-D-2"BA"54*0D-2"8143"*"5E'4<3",0"*-" ;-7'0F@*1-D-2"*-7"5/,8/A"B;1/71-2";@"7'4*1/" :@@/A"43'"5*>'"540*4'2A"4,"/'*0-"*B,;4"43'"@0,7;<4"7,>*1-"*5"G;1<E/A" *5"@,551B/'"H"4,"<3*5'",;4";-<'04*1-4A"B'C,0'"4,,"3'*61/A"1-6'5D-2 Opening Mid-Game End-Game Game Build out Refine the UI and uncertainty Build up flexibility and interactions, take advantage of necessities business rule iterative learning enforcement uncertainty decreases over time time !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> II
  • ?,,@"*4"43'"!"#$%"&'",A"6*/;'",6'0"B>' C,"D-153",-"B>'" cumulative business value 8'">*E"F401>"43'" 4*1/G"HE"7'A'001-2" 54,01'5",A">,7'54" 6*/;' time Opening Mid Game End Game Game Early stories emphasize Once we’re confident Over time the value of iteration and learning. we have the “shape” stories begin to We need to be sure of the product right, diminish signaling it’s we’re building the we begin to pile in time for release right product value !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> IJ
  • ?,<;51-2",-"@0,7;<4"A-,8/'72'"*<B;10'7." 43'"!"#$%&'()."43'"<;06'"/,,A5"71('0'-4 C3'"1-6'05'",D"015A" acquired product knowledge 15"A-,8/'72' E'*0-1-2"'*0/1'0"1D" 8'F0'"G;1/71-2"43'" 01234"@0,7;<4" >1H2*4'5"015A time Opening Mid Game End Game Game Early stories emphasize Once we’re confident Over time the value of iteration and learning. we have the “shape” stories begin to We need to be sure of the product right, diminish signaling it’s we’re building the we begin to pile in time for release right product value !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> I%
  • Gary applied each of these strategies for MadMimi.com (and lots more) !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?$
  • Practice #1: Understand users to understand your product Gary identified different types of users he’d targeted. He quickly saw how serving too many people wasn’t helping him get to market !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • Practice # 2: Identify and prioritize goals and users before features Gary originally had goals to serve many markets, challenging many competitors In the end he chose differentiate his product in a smaller, more specific, market !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?#
  • Practice #3: Collaborate to create visualizations that build shared understanding Gary mapped the user stories that described his product, and prototyped UI relentlessly !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • Practice #4: Use iterative and incremental strategies to maximize learning, and minimize risk Gary built up the product in thin slices seeing the first fully functional product in a few weeks. (Rails really is fast when you know what you’re building) !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • Gary describes MadMimi.com !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • Mimi’s visitors have grown steadily over time !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • Today MadMimi.com sends tens of millions of messages per month !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?@
  • Mimi earns over $100,000 USD per month in recurring revenue from thousands of active customers !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ??
  • The strategies described here are used on small products like Mimi, and many larger products world wide !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,> ?%
  • Agile Outside the Code Using agile discovery ideas to drive product success Jeff Patton AgileProductDesign.com !"#$$%"&'(")*+,-."*//"012345"0'5'06'7."8889:21/')0,7;<4='512-9<,>