Download - Eric Ries leanstartup at Berkeley/Columbia
!"#$%&#'(%)*'"#$"#'(+
,-./00123"24.5'((67(5'3"7'89:;6<(.629$6=
>,'%5'37%123"24.
?;'37(23"24.
@'"A';'B0C6;4=:#3
D6(2%123"24.(%E3#;
D6(2%123"24.(%E3#;
D6(2%123"24.(%E3#;
D6(2%123"24.(%E3#;
• @42%#2%86'(7F2%,3G'%26%:'%2,32%H3B9
• I'%$37%86%:'-'"9
• >,#(%23;A%#(%3:642%,6H9
I,32%#(%3%(23"24.J
• K%(23"24.%#(%3%!"#$%&'%()*")+%%8'(#<7'8%26,-.'/-0&$&%-1&20+,"3*&+0&(-0/'3-%478'"$678#L67(%6M%-4*0-#-&"%3-0*$'%*59
• N62,#7<%26%86%H#2,%(#O'%6M%$6=.37BP%('$26"%6M
2,'%'$676=BP%6"%#784(2"B
Q"684$2%0%D3"A'2%E#2
“Do whatever is required to get to product/market fit. Including:
changing out people,rewriting your product,
moving into a different market,telling customers no when you don’t want to,telling customers yes when you don’t want to,
raising that fourth round of highly dilutive venture capital
—whatever is required.”
— Marc Andreessenhttp://blog.pmarca.com/2007/06/the-pmarca-gu-2.html
>,'%Q#G62
• I,32%86%(4$$'((M4;%(23"24.(%,3G'%#7%$6==67J
– >,'B%(23"2'8%642%3(%8#<#23;%$3(,%M6"%QRK(P%:42
'G6;G'8%#726%67;#7'%.3B='72(%M6"%'@3B9
– >,'B%(23"2'8%:4#;8#7<%@K1SC%#72'"."'2'"(P%:42
'G6;G'8%#726%2,'%H6";8T(%;3"<'(2%6.'"3L7<%(B(2'=(
=676.6;B9
– >,'B%H'"'%(,6$A'8%26%8#($6G'"%2,'#"%67;#7'%<3='(
$6=.37B%H3(%3$243;;B%3%.,626U(,3"#7<%(#2'9
• Q#G62/%$,37<'%8#"'$L67(%:42%(23B%<"6478'8%#7
H,32%H'FG'%;'3"7'89http://startuplessonslearned.blogspot.com/2009/06/pivot-dont-jump-to-new-vision.html
1.''8%I#7(
#M%H'%$37%"'84$'%2,'%L='%:'2H''7%=3V6"
#2'"3L67(
H'%$37%#7$"'3('%64"%688(%6M%(4$$'((
K%>3;'%6M%>H6%123"24.(
123"24.%?W
12'3;2,%123"24.%C#"$3%XYYW
K;;%3:642%2,'%2'3=
K%<668%.;37J
• 123"2%3%$6=.37B%H#2,%3%$6=.';;#7<%;67<U2'"=G#(#679
• &3#('%.;'72B%6M%$3.#23;9
• Z#"'%2,'%3:(6;42'%:'(2%378%2,'%:"#<,2'(29
• Z#"'%37%'[.'"#'7$'8%=373<'='72%2'3=%H#2,%267(6M%(23"24.%'[.'"#'7$'9
• E6$4(%67%\43;#2B9
• @4#;8%3%H6";8U$;3((%2'$,76;6<B%.;3]6"=9
• @4#;8%:4OO%#7%2,'%."'((%378%:;6<6(.,'"'9
K$,#'G#7<%E3#;4"'
• C6=.37B%M3#;'8%4-'";BP%^_YDD%378%`G'%B'3"(
6M%.3#79
• C"#..;'8%:B%a(,386H%:';#'M(b%2,32%8'(2"6B'8
2,'%'c6"2%6M%3;;%2,6('%(=3"2%.'6.;'9
1,386H%@';#'M%?W
• I'%A76H%H,32%$4(26='"(%H3729
1,386H%@';#'M%?X
• I'%$37%3$$4"32';B%."'8#$2%2,'%M424"'9
1,386H%@';#'M%?d
• K8G37$#7<%2,'%.;37%#(%."6<"'((9
K%<668%.;37J
• 123"2%3%$6=.37B%H#2,%3%$6=.';;#7<%;67<U2'"=G#(#679
• &3#('%.;'72B%6M%$3.#23;9
• Z#"'%2,'%3:(6;42'%:'(2%378%2,'%:"#<,2'(29
• Z#"'%37%'[.'"#'7$'8%=373<'='72%2'3=%H#2,%267(6M%(23"24.%'[.'"#'7$'9
• E6$4(%67%\43;#2B9
• @4#;8%3%H6";8U$;3((%2'$,76;6<B%.;3]6"=9
• @4#;8%:4OO%#7%2,'%."'((%378%:;6<6(.,'"'9
123"24.%?X
IMVU
IMVU
N'H%.;37
• 1,#..'8%#7%(#[%=672,(%e%3%,6""#:;B%:4<<B%:'23
."684$2
• C,3"<'8%M"6=%83B%67'
• 1,#..'8%=4;L.;'%L='(%3%83B%):B%XYYfP%67
3G'"3<'%gY%L='(%3%83B+
• N6%Q&P%76%;347$,
• &'(4;2(/%XYYh%"'G'74'(%6M%^WYDD
5'37%123"24.(%i6%E3(2'"
• C6==68#2B%2'$,76;6<B%(23$AP%,#<,;B%;'G'"3<'8
)M"''06.'7%(64"$'P%4('"U<'7'"32'8%$672'72P
1!D+9
• C4(26='"%8'G';6.='72%e%`78%642%H,32
$4(26='"(%H372%:'M6"'%B64%:4#;8%#29
• K<#;'%);'37+%."684$2%8'G';6.='72%e%:42%247'8
26%2,'%(23"24.%$678#L679
C6==68#2B%2'$,76;6<B%(23$A
• 5'G'"3<'%j%M6"%'3$,%647$'%6M%'c6"2%B64%#7G'(2
#7%B64"%."684$2P%B64%23A'%38G3723<'%6M%2,'
'c6"2(%6M%2,64(378(%6"%=#;;#67(%6M%62,'"(9
• S2F(%'3(B%26%(''%,6H%,#<,U;'G'"3<'%2'$,76;6<B
#(%8"#G#7<%$6(2(%86H79
• D6"'%#=.6"2372%#(%#2(%#=.3$2%67%(.''89
• >#='%26%:"#7<%3%7'H%."684$2%26%=3"A'2%#(
M3;;#7<%"3.#8;B9
C4(26='"%R'G';6.='72
! C67L7464(%$B$;'%6M
$4(26='"%#72'"3$L67
" &3.#8%,B.62,'(#(
2'(L7<%3:642%=3"A'2P
."#$#7<P%$4(26='"(P%k
" ![2"'='%;6H%$6(2P%;6H
:4"7P%L<,2%M6$4(
" D'3(4"3:;'%<32'(%M6"
#7G'(26"(,-./00:#29;B0E64"12'.(
K<#;'%Q"684$2%R'G';6.='72)K%23;'%6M%2H6%(23"24.(P%"'G#(#2'8+
• Q"#7$#.;'(%8"3H7%M"6=%5'37%D374M3$24"#7<
378%>6B623%Q"684$L67%1B(2'=
• >,'('%'[3=.;'(%3"'%8"3H7%M"6=%(6lH3"'
(23"24.(P%:42%#7$"'3(#7<;B/
– K;;%."684$2(%"'\4#"'%(6lH3"'
– K;;%$6=.37#'(%3"'%6.'"3L7<%#7%3%(23"24.U;#A'
'7G#"67='72%6M%-4*0-#-&"%3-0*$'%*5
Traditional Product DevelopmentUnit of Progress: Advance to Next Stage
Waterfall
Requirements
Specification
Design
Implementation
Verification
Maintenance
Problem: known
Solution: known
Agile Product DevelopmentUnit of Progress: A line of Working Code
Problem: known
Solution: unknown
“Product Owner” or in-house customer
Product Development at Lean StartupUnit of Progress: Validated Learning About Customers ($$$)
Problem: unknown
Solution: unknown
Customer Development
Hypotheses,Experiments,Insights
Data,Feedback,
Insights
Minimize TOTAL time through the loop
LEARN BUILD
MEASURE
IDEAS
CODEDATA
Z6H%26%:4#;8%3%5'37%123"24.
• 5'2F(%23;A%3:642%(6='%(.'$#`$(9
• 1=3;;%@32$,'(
• C67L7464(%8'.;6B='72
• 1.;#2U2'(2%)K0@+%'[.'"#='723L67
• D#7#=4=%m#3:;'%Q"684$2
• E#G'%H,BF(
Build Faster
Continuous Deployment
Small Batches
Continuous Integration
Refactoring
Small Batches
LEARN BUILD
MEASURE
IDEAS
CODEDATA
Learn Faster
Customer Development
Five Whys
Measure Faster
Split Testing
Actionable Metrics
Net Promoter Score
SEM
@'7'`2(%6M%1=3;;%@32$,'(
• E3(2'"%M''8:3$A
• Q"6:;'=(%3"'%#7(2372;B%;6$3;#O'8
• &'84$'%"#(A
• &'84$'%6G'",'38
Build Faster
Continuous Deployment
Small Batches
Continuous Integration
Refactoring
Continuous Deployment
LEARN BUILD
MEASURE
IDEAS
CODEDATA
Learn Faster
Customer Development
Five Whys
Measure Faster
Split Testing
Actionable Metrics
Net Promoter Score
SEM
Continuous Deployment• Deploy new software quickly
• At IMVU time from check-in to production = 20 minutes
• Tell a good change from a bad change (quickly)
• Revert a bad change quickly• And “shut down the line”
• Work in small batches• At IMVU, a large batch = 3 days worth of work
• Break large projects down into small batches
Cluster Immune SystemWhat it looks like to ship one piece of code to production:
• Run tests locally (SimpleTest, Selenium)o Everyone has a complete sandbox
• Continuous Integration Server (BuildBot)o All tests must pass or “shut down the line”o Automatic feedback if the team is going too fast
• Incremental deployo Monitor cluster and business metrics in real-timeo Reject changes that move metrics out-of-bounds
• Alerting & Predictive monitoring (Nagios)o Monitor all metrics that stakeholders care abouto If any metric goes out-of-bounds, wake somebody upo Use historical trends to predict acceptable bounds
I,'7%$4(26='"(%(''%3%M3#;4"'/o Fix the problem for customerso Improve your defenses at each level
&3.#8%1.;#2%>'(2(
SR!K1
CnR!RK>K
@oS5R5!K&N
D!K1o&!
6+,-&7$(*-0C67L7464(
R'.;6B='72
8-$("0-&7$(*-0&3.#8%1.;#2%>'(2(
9-$0%&7$(*-0E#G'%I,B(%&662
C34('%K73;B(#(
1.;#2U2'(L7<%3;;%2,'%L='
• K0@%2'(L7<%#(%A'B%26%G3;#83L7<%B64"
,B.62,'('(
• Z3(%26%:'%(#=.;'%'764<,%M6"%'G'"B67'%26%4('
378%478'"(2378%#2
• D3A'%$"'3L7<%3%(.;#2U2'(2%76%=6"'%2,37%+%-.'%-&+:&3+,-;
#M)%('24.p'[.'"#='72)999+%jj%q$672"6;q%+%r
%%%%00%86%#2%2,'%6;8%H3B
s%';('%r
%%%00%86%#2%2,'%7'H%H3B
s
>,'%KKKF(%6M%D'2"#$(
• K$L673:;'
• K$$'((#:;'
• K48#23:;'
D'3(4"'%2,'%D3$"6
• K;H3B(%;66A%32%$6,6"2U:3('8%='2"#$(%6G'"%L='
• 1.;#2U2'(2%2,'%(=3;;P%='3(4"'%2,'%;3"<'
!"#$%"&'(%")*'+,- ./*0%120#$'+3-
?%&'<#(2'"'8 WYXg WYtt
R6H7;638( hgg%)hdu+ hdd%)vhu+
K$LG'%83B(%YUW vYY%)gfu+ vgY%)gtu+
K$LG'%83B(%WUd gYY%)_fu+ g_g%)_tu+
K$LG'%83B(%dUWY dYY%)Xtu+ ddY%)dYu+
K$LG'%83B(%WYUdY XgY%)X_u+ XtY%)Xvu+
>623;%&'G'74' ^dXWY9gY ^d_gY9WY
&Qo ^d9Wd ^d9W_
D#7#=4=%m#3:;'%Q"684$2
SR!K1
CnR!RK>K
@oS5R5!K&N
D!K1o&!
6+,-&7$(*-0C67L7464(
R'.;6B='72
8-$("0-&7$(*-0&3.#8%1.;#2%>'(2(
9-$0%&7$(*-0D#7#=4=%m#3:;'%
Q"684$2
I,B%86%H'%:4#;8%."684$2(J
• R';#<,2%$4(26='"(
• K-"3$2%;62(%6M%2,'=
• D3A'%3%;62%6M%=67'B
• @#<%G#(#67/%$,37<'%2,'%H6";8
Q6((#:;'%K.."63$,'(
• aD3[#=#O'%$,37$'(%6M%(4$$'((b
– @4#;8%3%<"'32%."684$2%H#2,%=37B%M'324"'(%2,32
#7$"'3('%2,'%688(%2,32%$4(26='"(%H#;;%H372%#2
– Q"6:;'=/%76%M''8:3$A%47L;%2,'%'78P%=#<,2%:'%266
;32'%26%38V4(2
• %a&';'3('%'3";BP%"';'3('%6l'7b
– i'2%3(%=4$,%M''8:3$A%3(%.6((#:;'P%3(%(667%3(
.6((#:;'
– Q"6:;'=/%"47%3"6478%#7%$#"$;'(P%$,3(#7<%H,32
$4(26='"(%2,#7A%2,'B%H372
D#7#=4=%m#3:;'%Q"684$2
• >,'%#'%'#"#&('2%6M%M'324"'(%7''8'8%26%;'3"7M"6=%'3";BG37<';#(2(%e%G#(#673"B%'3";B%386.2'"(
– KG6#8%:4#;8#7<%."684$2(%2,32%76:68B%H372(
– D3[#=#O'%2,'%;'3"7#7<%.'"%86;;3"%(.'72
– i'2%2,'%M3$2(%:'M6"'%#2F(%266%;32'
• Q"6:3:;B%=4$,%=6"'%=#7#=4=%2,37%B64
2,#7Aw
D#7#=4=%m#3:;'%Q"684$2
• m#(#673"B%$4(26='"(%$37%a`;;%#7%2,'%<3.(b%67
=#((#7<%M'324"'(P%#M%2,'%."684$2%(6;G'(%3%"'3;
."6:;'=
• K;;6H(%4(%26%3$,#'G'%3%:#<%G#(#67%#7%(=3;;
#7$"'='72(%H#2,642%<6#7<%#7%$#"$;'(
• &'\4#"'(%3%$6==#2='72%26%#2'"3L67
![3=.;'(
• @4#;8#7<%SDmo%#7%(#[%=672,(
• XYY_%ax'""B%G(9%@4(,%3G323"%8':32'b
>'$,7#\4'(
• 1=6A'%2'(L7<%H#2,%;378#7<%.3<'(P%K8I6"8(
• 1!D%67%`G'%86;;3"(%3%83B
• S7U."684$2%(.;#2%2'(L7<
• Q3.'"%."6262B.'(
• C4(26='"%8#($6G'"B0G3;#83L67
• &'=6G#7<%M'324"'(%)a$42%378%.3(2'b+
E'3"(
• E3;('%7'<3LG'/%a$4(26='"(%H64;8%,3G'%;#A'8
2,'%M4;;%."684$2P%:42%2,'%DmQ%(4$A(P%(6%H'
3:37867'8%2,'%G#(#67b
• m#(#673"B%$6=.;'[/%a:42%$4(26='"(%867F2
A76H%H,32%2,'B%H372wb
• >66%:4(B%26%;'3"7/%a#2%H64;8%:'%M3(2'"%26%V4(2
:4#;8%#2%"#<,2P%3;;%2,#(%='3(4"#7<%8#(2"3$2(%M"6=
8';#<,L7<%$4(26='"(b
E#G'%I,B(
SR!K1
CnR!RK>K
@oS5R5!K&N
D!K1o&!
6+,-&7$(*-0C67L7464(
R'.;6B='72
8-$("0-&7$(*-0&3.#8%1.;#2%>'(2(
9-$0%&7$(*-0E#G'%I,B(%&662
C34('%K73;B(#(
E#G'%I,B(%&662%C34('%K73;B(#(
• K%2'$,7#\4'%M6"%$67L7464(%#=."6G'='72%6M$6=.37B%."6$'((9
• K(A%aH,Bb%`G'%L='(%H,'7%(6='2,#7<47'[.'$2'8%,3..'7(9
• D3A'%20+2+0)+%$.%#7G'(2='72(%#7%."'G'7L6732%3;;%`G'%;'G';(%6M%2,'%,#'"3"$,B9
• @',#78%'G'"B%(4..6('8%2'$,7#$3;%."6:;'=%#(4(43;;B%3%,4=37%."6:;'=9%E#[%2,'%$34('P%762V4(2%2,'%(B=.26=9
>,'"'F(%=4$,%=6"'k
SR!K1
CnR!RK>K
@oS5R5!K&N
D!K1o&!
6+,-&7$(*-0o7#2%>'(2(
o(3:#;#2B%>'(2(
C67L7464(%S72'<"3L67
S7$"'='723;%R'.;6B='72
E"''%y%n.'7U164"$'%C6=.67'72(
C;648%C6=.4L7<
C;4(2'"%S==47'%1B(2'=
z4(2U#7UL='%1$3;3:#;#2B
&'M3$26"#7<
R'G';6.'"%1378:6[
D#7#=4=%m#3:;'%Q"684$2
8-$("0-&7$(*-01.;#2%>'(2(
C;'3"%Q"684$2%nH7'"
C67L7464(%R'.;6B='72
o(3:#;#2B%>'(2(
&'3;UL='%D67#26"#7<
C4(26='"%5#3#(67
9-$0%&7$(*-01.;#2%>'(2(
C4(26='"%S72'"G#'H(
C4(26='"%R'G';6.='72
E#G'%I,B(%&662%C34('%K73;B(#(
C4(26='"%K8G#(6"B%@63"8
E3;(#`3:;'%ZB.62,'('(
Q"684$2%nH7'"%K$$64723:#;#2B
C4(26='"%K"$,'2B.'(
C"6((UM47$L673;%>'3=(
1'=#U342676=64(%>'3=(
1=6A'%>'(2(
E477';%K73;B(#(
C6,6"2%K73;B(#(
N'2%Q"6=62'"%1$6"'
1'3"$,%!7<#7'%D3"A'L7<
&'3;U>#='%K;'"L7<
Q"'8#$LG'%D67#26"#7<
i'2%123"2'8%>683B
• {64%3"'%"'38B%26%86%2,#(P%76%=3-'"
– H,6%B64%3"'
– H,32%V6:%B64%,3G'
– H,32%(23<'%6M%$6=.37B%B64F"'%#7
• i'2%(23"2'8%76HP%2683B9
>,37A(w
• 123"24.%5'((67(%5'3"7'8%@;6<
– ,-./00123"24.5'((67(5'3"7'89:;6<(.629$6=0
• i'|7<%#7%264$,%)?;'37(23"24.+
– ,-./002H#-'"9$6=0'"#$"#'(
– '"#$*2,';'37(23"24.9$6=
• I6"A(,6.%>6=6""6HP%K4<%XY
– ,-./00:#29;B0:64;8'"UH6"A(,6.
– t3=UW.=%32%>'$,123"(