Slide 1

Slide 1 text

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