Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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?
  2. Handcrafted Treasures versus Mass Produced Crap Friday, February 1, 13

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

    think of when we think of mass production
  4. Friday, February 1, 13 Handmade Japanese chef’s knife, $900 on

    Etsy http://www.etsy.com/listing/115201436/tsubaya-stainless-steel-powder-layer-16
  5. 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
  6. Friday, February 1, 13 Anthony Bourdain in “Medium Raw” “Hire

    more people like Justo” is not a strategy
  7. 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
  8. 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
  9. The formula (not perfected) Friday, February 1, 13 Lots of

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

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

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

    to try is craft, determining whether it worked is math
  15. 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.
  16. 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.
  17. 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.
  18. 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
  19. Software development, the crafty parts Friday, February 1, 13 What

    do engineers at Etsy do to make code better for the other engineers?
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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”
  26. Use the time you save to spread the values of

    craft through your organization Friday, February 1, 13