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?
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
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
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”
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.
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.
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.
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.
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
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
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
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
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
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
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”