Artisinal Software Manufacturing

Artisinal Software Manufacturing

How to grow an engineering team without losing a culture of craft. Note that I ignored all of the speaker notes when giving the actual presentation.

Df2e97f18b5802e199d4920552a52d34?s=128

Rafe Colburn

January 31, 2013
Tweet

Transcript

  1. 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?
  2. Let’s confront our preconceived notions Friday, February 1, 13

  3. Handcrafted Treasures versus Mass Produced Crap Friday, February 1, 13

    Mass production is often equated with low quality
  4. Friday, February 1, 13 In America, this is what we

    think of when we think of mass production
  5. Friday, February 1, 13 The dollar store, tons of cheap

    junk at very affordable prices
  6. Friday, February 1, 13 Apple has sold over 100 million

    of these
  7. Friday, February 1, 13 Here’s a mass produced product people

    like
  8. Friday, February 1, 13 Handmade Japanese chef’s knife, $900 on

    Etsy http://www.etsy.com/listing/115201436/tsubaya-stainless-steel-powder-layer-16
  9. 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
  10. Friday, February 1, 13 Cute, but ...

  11. Friday, February 1, 13 Expensive and hated

  12. Craft and mass production are value-neutral Friday, February 1, 13

  13. Craft maximizes the skill and creativity of the individual artisan

    Friday, February 1, 13
  14. Mass production optimizes for predictability and repeatability Friday, February 1,

    13 Neither are without their downsides
  15. Mass production can make us faceless drones Friday, February 1,

    13
  16. Friday, February 1, 13 Most people don’t want their job

    to feel like this \
  17. Heroism doesn’t scale Friday, February 1, 13

  18. Friday, February 1, 13 Anthony Bourdain in “Medium Raw” “Hire

    more people like Justo” is not a strategy
  19. 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
  20. 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
  21. Industrial practices apply to the first purpose, craft applies to

    the second. Friday, February 1, 13
  22. The question: How do we grow without forgetting about craft?

    Friday, February 1, 13
  23. The formula (not perfected) Friday, February 1, 13 Lots of

    industrial practices to create room for craftsmanship
  24. Software development, the industrial parts Friday, February 1, 13 1.

    process monitoring 2. automation 3. interchangeable parts
  25. 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”
  26. Process Monitoring: Performance Friday, February 1, 13 Load time for

    the top 5 pages at etsy.com. You can’t optimize without measurement.
  27. 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.
  28. Process Monitoring: A/B Tests Friday, February 1, 13 Deciding what

    to try is craft, determining whether it worked is math
  29. 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.
  30. 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.
  31. 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.
  32. 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
  33. Software development, the crafty parts Friday, February 1, 13 What

    do engineers at Etsy do to make code better for the other engineers?
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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”
  40. The counterfactual? Friday, February 1, 13 Scaling up process rather

    than automation
  41. Friday, February 1, 13 It’s inevitable that your company feels

    more and more like this as it grows
  42. Friday, February 1, 13 You want your developers to feel

    like this
  43. Measure everything that can be quantified Friday, February 1, 13

  44. Automate any process that doesn’t involve craftsmanship Friday, February 1,

    13
  45. Use the time you save to spread the values of

    craft through your organization Friday, February 1, 13
  46. Thanks! codeascraft.etsy.com follow me on twitter: @rafeco Friday, February 1,

    13