$30 off During Our Annual Pro Sale. View Details »

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.

Rafe Colburn

January 31, 2013
Tweet

More Decks by Rafe Colburn

Other Decks in Programming

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?

    View Slide

  2. Let’s confront our
    preconceived notions
    Friday, February 1, 13

    View Slide

  3. Handcrafted Treasures
    versus
    Mass Produced Crap
    Friday, February 1, 13
    Mass production is often equated with low quality

    View Slide

  4. Friday, February 1, 13
    In America, this is what we think of when we think of mass production

    View Slide

  5. Friday, February 1, 13
    The dollar store, tons of cheap junk at very affordable prices

    View Slide

  6. Friday, February 1, 13
    Apple has sold over 100 million of these

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  10. Friday, February 1, 13
    Cute, but ...

    View Slide

  11. Friday, February 1, 13
    Expensive and hated

    View Slide

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

    View Slide

  13. Craft maximizes the
    skill and creativity of
    the individual artisan
    Friday, February 1, 13

    View Slide

  14. Mass production
    optimizes for
    predictability and
    repeatability
    Friday, February 1, 13
    Neither are without their downsides

    View Slide

  15. Mass production can
    make us faceless
    drones
    Friday, February 1, 13

    View Slide

  16. Friday, February 1, 13
    Most people don’t want their job to feel like this
    \

    View Slide

  17. Heroism doesn’t scale
    Friday, February 1, 13

    View Slide

  18. Friday, February 1, 13
    Anthony Bourdain in “Medium Raw”
    “Hire more people like Justo” is not a strategy

    View Slide

  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

    View Slide

  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

    View Slide

  21. Industrial practices
    apply to the first
    purpose, craft applies
    to the second.
    Friday, February 1, 13

    View Slide

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

    View Slide

  23. The formula
    (not perfected)
    Friday, February 1, 13
    Lots of industrial practices to create room for craftsmanship

    View Slide

  24. Software development,
    the industrial parts
    Friday, February 1, 13
    1. process monitoring
    2. automation
    3. interchangeable parts

    View Slide

  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”

    View Slide

  26. Process Monitoring:
    Performance
    Friday, February 1, 13
    Load time for the top 5 pages at etsy.com. You can’t optimize without measurement.

    View Slide

  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.

    View Slide

  28. Process Monitoring:
    A/B Tests
    Friday, February 1, 13
    Deciding what to try is craft, determining whether it worked is math

    View Slide

  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.

    View Slide

  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.

    View Slide

  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.

    View Slide

  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

    View Slide

  33. Software
    development,
    the crafty
    parts
    Friday, February 1, 13
    What do engineers at Etsy do to make code better for the other engineers?

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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”

    View Slide

  40. The counterfactual?
    Friday, February 1, 13
    Scaling up process rather than automation

    View Slide

  41. Friday, February 1, 13
    It’s inevitable that your company feels more and more like this as it grows

    View Slide

  42. Friday, February 1, 13
    You want your developers to feel like this

    View Slide

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

    View Slide

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

    View Slide

  45. Use the time you save
    to spread the values of
    craft through your
    organization
    Friday, February 1, 13

    View Slide

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

    View Slide