We Invite Everyone at Etsy to Do an Engineering Rotation: Here’s why
At Etsy, it’s not just engineers who write and deploy code – our designers and product managers regularly do too. And now any Etsy employee can sign up for an “engineering rotation” to get a crash course in how Etsy codes, and ultimately work with an engineer to write and deploy the code that adds their photo to our about page. In the past year, 70 employees have completed engineering rotations. Our engineers have been pushing on day one for a while now, but it took a bit more work to get non-coders prepared to push as soon as their second week. In this post I’ll explain why we started engineering rotations and what an entire rotation entails.
What are rotations and why are they important?
Since 2010, Etsy employees have participated in “support rotations” every quarter, where they spend about two hours replying to support requests from our members. Even our CEO participates. What started as a way to help our Member Operations team during their busiest time of year has evolved into a program that facilitates cross-team communication, builds company-wide empathy, and provides no shortage of user insights or fun!
This got us thinking about starting up engineering rotations, where people outside of the engineering organization spend some time learning how the team works and doing some engineering tasks. Armed with our excellent continuous deployment tools, we put together a program that could have an employee with no technical knowledge deploying code live to the website in three hours. This includes time spent training and the deploy itself.
The Engineering Rotation Program
The program is split into three parts: homework; an in-person class; then hands-on deployment. The code that participants change and deploy will add their photos to the Etsy about page. It’s a nice visual payoff, and lets new hires publicly declare themselves part of the Etsy team.
Before class begins, we assign homework in order to prepare participants for the code change they’ll deploy. We ask them to complete interactive tutorials, including HTML levels 1 and 2 on Code Academy and our in-house Unix Command Line 101. We also ask them to read Marc Cohen’s excellent article “How the Web Works – In One Easy Lesson,” followed by a blog post on Etsy.com discussing how the engineering organization deals with outages. These resources help familiarize each participant with the technologies they’ll work with, and introduce them to some of Etsy’s core engineering tenets, such as blameless post-mortems.
Next up is a class for all participants. It has five sections. The first section picks up where How The Web Works left off and explains how Etsy works. Then we introduce the standard three-tier architecture and walk through some example requests: viewing, creating, searching for and purchasing a listing. Next we take a deep-dive into database sharding. We explain what it is, why it’s necessary, why we shard by data owner and how we rebalance our shards. We then explain Content Delivery Networks and why we use them. After that, we move away from the hard technical discussion to talk about continuous deployment. We discuss the philosophy behind it, and describe why it’s safe to change the website fifty times per day and how we ensure that each change does exactly what we expect. We wrap up this session by giving an overview of all the engineering teams at Etsy and their responsibilities.
At this point we pair each participant with an engineer who will guide them through the process of making and testing the code change, and ultimately pressing the big green Deploy to Production button. These one-on-one sessions can take up to two hours as the pair discuss the different tools that exist at each step – some as simple as IRC or as complex as our Continuous Integration cluster. As the participant begins the process of deploying their code change, they’ll see their name appear atop our dashboards.
What have we learned?
The benefits of engineering rotations parallel those of our support rotations in many ways. It’s an opportunity for Admin throughout Etsy to work with people they normally wouldn’t, and to learn more about each other personally and professionally. To an outsider, the more technical aspects of Etsy might feel unapproachable – even a bit mysterious – but demystifying them encourages even more collaboration. Here’s what some of the participants of Etsy’s Engineering Rotations have said:
“Understanding the work of your colleagues breeds empathy and it’s been great having a better understanding of what working at Etsy means to others.”
“The best part about this program is that it pulls back the curtain on how software development works at Etsy. For people who don’t work with code every day, this can appear to be some sort of magic, which it’s not – it’s just a different kind of work, with different kinds of tools. Without this program, we would miss out on a huge opportunity for different groups to empathize with each other, which I think is crucial for a company to feel like a real team.”
“The internet goes under the sea in a cable. Whoa.”
Participants in both the engineering and support rotations come away with many lessons beyond the curriculum. More than a few times, support rotations have exposed engineers to parts of the site that generate lots of inquiries, and they were able to fix them immediately. And in one engineering rotation, someone pointed out that a lot of IRC tools we’ve built can’t be used by all employees because they don’t have access to our internal code snippet service. So we’re now looking at how we can give everyone that access. I led one session with our International Counsel, and we ended up having a fascinating discussion about the legality of deleting data. That sprang from my explanation of how we do database migrations!
But perhaps the biggest thing we’ve learned from the engineering rotations is that everyone involved likes doing them. They get to meet new people, learn new things, and use a tool called “the Deployinator.” What’s not to like?
You can follow Dan on Twitter @jazzdan.