In his Design for Continuous Deployment presentation at the Warm Gun conference in San Francisco, CA Randy Hunt shared how Etsy's development process allows designers and developers to collaborate at scale on production code. Here’s my notes from his talk.
Etsy sees 1.4 billion page views a month and will generate $600 million of sales this year. The company has 140 people working on the product (design & engineering) and they are all pushing production code between 50-60 times a day. On a slow day, the company may only deploy code 20 times. This is a complex environment but the team moves very quickly. How?
- Etsy has 1.4 billion page views a month and will generate $600 million of revenue this year. The company has 140 people working on the product (design & engineering) and they are all pushing production code between 50-60 times a day. On a slow day, the company may only deploy code 20 times.
- Continuous deployment: release changes to the world all the time. Deploy frequent, low-risk releases. Because changes are small, they are easy to identify, and easy to fix.
- Product managers and designers write production code at Etsy. The number of people who deploy production code at Etsy who are not engineers passed the number who are engineers a while ago –this is a great thing.
- People like to feel responsible, trusted, and empowered. Allowing them to deploy production code helps everyone feel this way. When writing production code, you have to trust each other, you are responsible for what you put out, and empowered to change the site/experience for your customers.
- Allow designers to interact with code. It’s not scary even in a big company.
- Why should designers work this way? It allows them to be part of the overall development process and interact with engineers in the way they work. Designers learn version control and the language of engineers when they are part of the deployment process.
- Not only do Etsy designers release early and release often, they also share early and share often. At Etsy, the designer who makes the sketches also writes the code.
How Do You Do It?
- Everyone at Etsy has a development environment on their machine. All the designers have local environments to do design work on GUIs.
- Quick start guides and packages are created for designers to bring them up to speed on how the process works.
- Send local changes to dev environment. When a file is saved it is moved to the virtual environment. This allows people to share links across the organization.
- Pattern library allows the team to rough out designs: no duplication. Simple UI behaviors in HTML, CSS, and Javascript. Pattern libraries give people a common language to work together.
- Etsy does not branch code at all. Instead they branch things inside of code so only certain people can see things. These config flags are also used for on/off, dev/prod, whitelist/company/all, and A/b test cells.
- Commit and code reviews prevent people from launching mistakes. Do a simple code review before shipping things out.
- Measure behavior, performance, and business metrics instantly. You can see if things are performing correctly.
- Why is this exciting? Simplify the complex process of deployment. It breaks things down into simpler, more understandable process.
- Work more closely by being forced to use the same tools and language. This allows people to get great work done. When people are allowed to make great work, they are happy.