At Etsy, we continuously deploy code. New features and bug fixes can go from development to production in 20 minutes. We have maintained this low barrier to deployment over the past year despite nearly doubling the number of people that can deploy.
Communication has a huge impact on the velocity of development and moving forward. We explicitly communicate over IRC, but we also evolve communication patterns through several other vectors, and one of those vectors is out Continuous Integration environment.
In this talk I will not only discuss how communication patterns at Etsy have evolved with our growing development team, but I will also elaborate on how team size, role composition, motivation, culture, and available tools sets can impact communication patterns and subsequently throughput.
5. Methods of an
Anthropologist
Participant
Observation
Interviews
Surveys
6. Developer Culture
“The most important
component of The Etsy Way
is culture and that is as
difficult to teach as it is
important”
— Chad Dickerson, CEO
9. “Anthropology demands the open-mindedness
with which one must look and listen, record in
astonishment and that which one would not
have been able to guess.”
— Margaret Mead
10. Deployinating All the Pushes
One Button (stage)
Logging
Monitoring
No Child Safety Locks
12. 20 Minutes or Less
The Power of Continuous Deployment
13. Continuous What?!?
Continuous... Unceremoniously... Initiated By...
Apply Quality
Integration Anyone
Process
Push New Code
Deployment Anyone
To Production
Release New
Delivery Product
Feature
14. Communication Theory
1. The Basic Elements of Communication
Source Destination
Sender Message
Channel Feedback
Receiver
2. Goal-Oriented Communication
15. Goals
“Always Be Pushing”
You Shouldn’t Push on Red
You Should Write Clean Tests
You Should Write Clean Code
Trust Everyone To Do The Right Thing
25. You Should Not
Push on Red
De-Noising the Communication Channel
Pa rt ic ip a n t Ob se r v ati on s over IRC
26. Where We Started From...
Number of
Total Time Flakiness Support
Tests
~30 Practically
Legacy Unknown ~50%
Minutes None
~8
Platform ~1200 ~20% Small Core
Minutes
27. A Bunch of Noise
Need to Know How Much is Being Covered
Need to Know What is Being Tested
Need to Be Able to Detect Test Runner Errors
Need to Have Actionable Test Results
(Ownership)
28. De-Noise
Number of
Total Time Flakiness Support
Tests
~30 Practically
Legacy Unknown ~50%
Minutes None
>8
Platform >1200 ~5% Small Core
Minutes
30. You Should
Write Clean Tests
Writing Simple Tests
Isn’t Always So Simple
Alter n ati ve Te ach ing Met h od s
31. How To Improve Test Quality
Teach Them!
But People Need to
Want to Learn
32. Prove It!
Number of Average
Test Time
Tests Time per Test
Platform Tests 7:01 2332 0.18 seconds
0.00337
Unit Tests 0:10 2432
seconds
DBUnit Tests 0:32 70 0.09 seconds
December 2010
42. Using CodeSniffer
Draft Coding Style Guidelines
Experiment With Various Sniffs
Discover Actual Coding Syntax Tendencies
Decide on Changes to Coding Style Guidelines
Create a Strategy on How to Get to Green
47. More To Do
Code Reviews, Second Pair of Eyes
Entire Coding Standard in CI
Mess Detector Standards
PHPUnit --strict Standards
PHPUnit Testing Standards
...