kastner@gmail.com / @kastner
jgoulah@gmail.com / @johngoulah
Put a Button on it
Removing Barriers to Going Fast
Slide 2
Slide 2 text
No content
Slide 3
Slide 3 text
1+ Billion Pageviews
Per Month
Slide 4
Slide 4 text
Speed
Slide 5
Slide 5 text
~80 Engineers
Slide 6
Slide 6 text
Barriers
Slide 7
Slide 7 text
Deployinator
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
We’re Hiring
http://etsy.com/jobs
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
Optimization
Slide 12
Slide 12 text
Happiness
Slide 13
Slide 13 text
Sad Engineers
are Bad Engineers
Slide 14
Slide 14 text
Barriers
Slide 15
Slide 15 text
Process
Slide 16
Slide 16 text
“Process is an embedded
reaction to prior stupidity”
– Clay Shirky
Slide 17
Slide 17 text
Fear
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
Correctness
Slide 20
Slide 20 text
Text
"My strategy has always been: be wrong as
fast as we can, Which basically means, we're
gonna screw up, … Let's not be afraid of that."
– Andrew Stanton
Slide 21
Slide 21 text
Legacy
Slide 22
Slide 22 text
How?
Slide 23
Slide 23 text
Communication
Slide 24
Slide 24 text
Trust
Slide 25
Slide 25 text
Openness
Slide 26
Slide 26 text
Constant Improvement
Slide 27
Slide 27 text
Then vs. Now
Slide 28
Slide 28 text
2009
Slide 29
Slide 29 text
2009 2011
Slide 30
Slide 30 text
2009
Single Deploy
Master
Slide 31
Slide 31 text
2009 2011
Single Deploy
Master
Anyone Can
Deploy
Slide 32
Slide 32 text
2009
Rollback in
Fear
Slide 33
Slide 33 text
2009 2011
Rollback in
Fear
Roll Forward
to Victory
Slide 34
Slide 34 text
2009
All Day
Deploys
Slide 35
Slide 35 text
2009 2011
All Day
Deploys
Deploy All
Day
Slide 36
Slide 36 text
How… for reals
Slide 37
Slide 37 text
So, what does Etsy
optimize for?
Slide 38
Slide 38 text
MTTR vs. MTBF
Slide 39
Slide 39 text
Default to Open
Slide 40
Slide 40 text
Culture First
Slide 41
Slide 41 text
If it’s your first day at
Etsy, you must deploy!
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
Doing the dumbest thing
that can possibly work
Slide 44
Slide 44 text
Committing to Trunk
Slide 45
Slide 45 text
Branching in Code
Slide 46
Slide 46 text
if ($cfg["new_search"]) {
// new hotness
$resp = search_solr();
} else {
// old busted
$resp = search_grep();
}