Artisanal Software
Manufacturing
(No metaphors were harmed in the creation of this
presentation.)
Friday, February 1, 13
Growth inevitably encourages an industrial approach, how do we avoid losing craft in the
process?
Slide 2
Slide 2 text
Let’s confront our
preconceived notions
Friday, February 1, 13
Slide 3
Slide 3 text
Handcrafted Treasures
versus
Mass Produced Crap
Friday, February 1, 13
Mass production is often equated with low quality
Slide 4
Slide 4 text
Friday, February 1, 13
In America, this is what we think of when we think of mass production
Slide 5
Slide 5 text
Friday, February 1, 13
The dollar store, tons of cheap junk at very affordable prices
Slide 6
Slide 6 text
Friday, February 1, 13
Apple has sold over 100 million of these
Slide 7
Slide 7 text
Friday, February 1, 13
Here’s a mass produced product people like
Slide 8
Slide 8 text
Friday, February 1, 13
Handmade Japanese chef’s knife, $900 on Etsy
http://www.etsy.com/listing/115201436/tsubaya-stainless-steel-powder-layer-16
Slide 9
Slide 9 text
Friday, February 1, 13
LAX desk, $4350 on Etsy -- moss design in Chicago
http://www.etsy.com/listing/101087003/reclaimed-mid-century-modern-wood-and
Slide 10
Slide 10 text
Friday, February 1, 13
Cute, but ...
Slide 11
Slide 11 text
Friday, February 1, 13
Expensive and hated
Slide 12
Slide 12 text
Craft and mass
production are
value-neutral
Friday, February 1, 13
Slide 13
Slide 13 text
Craft maximizes the
skill and creativity of
the individual artisan
Friday, February 1, 13
Slide 14
Slide 14 text
Mass production
optimizes for
predictability and
repeatability
Friday, February 1, 13
Neither are without their downsides
Slide 15
Slide 15 text
Mass production can
make us faceless
drones
Friday, February 1, 13
Slide 16
Slide 16 text
Friday, February 1, 13
Most people don’t want their job to feel like this
\
Slide 17
Slide 17 text
Heroism doesn’t scale
Friday, February 1, 13
Slide 18
Slide 18 text
Friday, February 1, 13
Anthony Bourdain in “Medium Raw”
“Hire more people like Justo” is not a strategy
Slide 19
Slide 19 text
Friday, February 1, 13
The elephant in the room: in software development we don’t make things over and over.
Everything is “hand crafted.” Writing code is more like building factories than working in one
Slide 20
Slide 20 text
Software is both a set
of instructions for a
computer and a
document written for
other humans
Friday, February 1, 13
Here’s how I put software in this context
Slide 21
Slide 21 text
Industrial practices
apply to the first
purpose, craft applies
to the second.
Friday, February 1, 13
Slide 22
Slide 22 text
The question:
How do we grow
without forgetting
about craft?
Friday, February 1, 13
Slide 23
Slide 23 text
The formula
(not perfected)
Friday, February 1, 13
Lots of industrial practices to create room for craftsmanship
Slide 24
Slide 24 text
Software development,
the industrial parts
Friday, February 1, 13
1. process monitoring
2. automation
3. interchangeable parts
Slide 25
Slide 25 text
Process Monitoring:
Throughput
Friday, February 1, 13
The fundamental engineering question is, have we built a system that supports Etsy’s
throughput. From the right side of the graph, you can see the answer is “not always”
Slide 26
Slide 26 text
Process Monitoring:
Performance
Friday, February 1, 13
Load time for the top 5 pages at etsy.com. You can’t optimize without measurement.
Slide 27
Slide 27 text
Process Monitoring:
Exceptions
Friday, February 1, 13
Any industrial process seeks to minimize exceptions while acknowledging that they cannot
be eliminated. We do the same thing in software.
Slide 28
Slide 28 text
Process Monitoring:
A/B Tests
Friday, February 1, 13
Deciding what to try is craft, determining whether it worked is math
Slide 29
Slide 29 text
Automation:
Developer setup
Friday, February 1, 13
Every developer has a virtual machine with their development environment set up and the
Etsy code checked out on day one.
Slide 30
Slide 30 text
Automation:
Continuous integration
Friday, February 1, 13
We use Hudson, like most everyone else. We have a very robust set of tests. Unit tests,
functional tests, static analysis, and style checks.
Slide 31
Slide 31 text
Automation:
Deployment
Friday, February 1, 13
Running pre-production tests and pushing to the pre-production environment requires one
button push. Pushing to production requires another.
Slide 32
Slide 32 text
Interchangeable Parts
Friday, February 1, 13
At Etsy, our goal is to keep our stack simple so that developers can be interchangeable parts
-- reducing the friction when moving between teams or projects. This pays dividends that I’ll
talk about shortly
Slide 33
Slide 33 text
Software
development,
the crafty
parts
Friday, February 1, 13
What do engineers at Etsy do to make code better for the other engineers?
Slide 34
Slide 34 text
Craftsmanship:
Code reviews
Friday, February 1, 13
1. Developers learn by being reviewed
2. Developers learn by reviewing
3. Exposure to more code always helps
4. People get accustomed to constructive criticism
Slide 35
Slide 35 text
Craftsmanship:
Bootcamps
Friday, February 1, 13
1. New devs -- meet people, learn how teams work, see some code
2. Developers enjoy it, ask to boot camp periodically
3. Senior Boot Camps -- one month boot camp on your annual hire date
4. SPOF insurance
Slide 36
Slide 36 text
Craftsmanship:
Bootcamps
Friday, February 1, 13
1. New devs -- meet people, learn how teams work, see some code
2. Developers enjoy it, ask to boot camp periodically
3. Senior Boot Camps -- one month boot camp on your annual hire date
4. SPOF insurance
Slide 37
Slide 37 text
Craftsmanship:
Bootcamps
Friday, February 1, 13
1. New devs -- meet people, learn how teams work, see some code
2. Developers enjoy it, ask to boot camp periodically
3. Senior Boot Camps -- one month boot camp on your annual hire date
4. SPOF insurance
Slide 38
Slide 38 text
Craftsmanship:
Bug rotation
Friday, February 1, 13
1. Bugs on features not in active development are pooled
2. Several developers are on bug rotation every day
3. Goal is to get people to work with new people and work on new code
4. Teams can focus on new projects rather than on their bug queue
Slide 39
Slide 39 text
Craftsmanship:
Code readers
Friday, February 1, 13
1. One person selects code, not necessarily from Etsy
2. Just like a book club, everyone reads it
3. We have a discussion
4. We build some consensus around “good code”
Slide 40
Slide 40 text
The counterfactual?
Friday, February 1, 13
Scaling up process rather than automation
Slide 41
Slide 41 text
Friday, February 1, 13
It’s inevitable that your company feels more and more like this as it grows
Slide 42
Slide 42 text
Friday, February 1, 13
You want your developers to feel like this
Slide 43
Slide 43 text
Measure everything
that can be quantified
Friday, February 1, 13
Slide 44
Slide 44 text
Automate any process
that doesn’t involve
craftsmanship
Friday, February 1, 13
Slide 45
Slide 45 text
Use the time you save
to spread the values of
craft through your
organization
Friday, February 1, 13
Slide 46
Slide 46 text
Thanks!
codeascraft.etsy.com
follow me on twitter: @rafeco
Friday, February 1, 13