In January 2019 (2 weeks from now) I’d be completing 4 years at Airbnb. This makes for a good milestone to look back and reflect on what I learned during that time, what went well, what didn’t go so well and some takeaways.
I started at Airbnb in 2015 after having worked on a couple of much smaller startups (We Heart It and Gogobot), both under 50 employees. Because of that, Airbnb was a huge shift for me, even then when it was a lot smaller than it is today, I still struggled to re-learn how to navigate the waters of a big company with lots of stakeholders, dozens of teams, different tools, processes, etc.
One thing I noticed right away when I started is that Airbnb makes an active effort to avoid adding unnecessary process. Only when it is clear that something is not working well and needs change is when we consider introducing a process to improve it. It is usually an organic and democratic process. Nothing is dictated or mandated, it’s quite the opposite. Change usually bubbles up from individuals within teams and then is brought up to bigger and bigger audiences until a decision is made. This can be painful though when it’s not clear who the owners/stakeholders are. In a hyper-growth company this can be quite common and is a frequent growth pain.
Teams are created, repurposed, renamed and refactored very often. Team mobility also is encouraged, so people switch teams quite frequently. Each team decides internally how they are going to organize work, eg.: use 1 or 2 week sprints (or none at all), which tools to use (Jira, Asana, Trello, etc.) and how often to meet. This means that the workflow is heterogeneous and switching teams could mean re-adapting to the ways of working of the new team.
I spent most of my tenure working on teams under the Infrastructure sub-organization. Infrastructure’s goal is to make sure other teams have the tools they need to ship code efficiently and with confidence. These are represented via the following goals: business continuity, customer satisfaction and cost of good sold.
Team sizes vary a lot but tend to be usually 2–10 engineers, an engineering manager and sometimes a project manager and designer(s). Every engineer reports to an engineering manager.
Tracking performance 📈
Airbnb Engineering levels range from L3 through L7. Once you get to L5 (usually equivalent to senior engineer in peer companies) you are not necessarily expected to to get a promotion to L6 and might decide to instead stay comfortably as an L5, that is totally fine. Getting a promotion is generally very hard (based on my own experience, your mileage may vary) and requires at least two cycles of “exceeds expectations” performance. That means, in practice, that you need to be performing at the next level for at least a year in order to be considered for promotion.
Performance reviews happens every six months and the possible ratings are (from lower to higher):
- Does not meet expectations
- Meets some expectations
- Meets all expectations
- Exceeds expectations
- Greatly exceeds expectations
Rating assignments tend to follow a normal distribution, however I’ve heard multiple times that there is no forced curve, that is, it’s totally possible for all members of a team to greatly exceed expectations, however in practice that is pretty rare. During review season, employees write self, peer and upward reviews. People are encouraged to select 2-3 peers to review their work. Reviews are supposed to be objective (not qualitative) and any claims should be objective and backed up with data, as much as possible. Here are some examples to illustrate.
Example of a bad review:
I loved working with John Doe, he was such a great teammate!
Example of a good review:
While working with Alice on project Foo, together we achieved goals X and Y through Z (includes a graph with proof). She worked on feature A while I worked on feature B and we both delivered on time.
Interviewing and hiring
Engineers may start interviewing candidates after 3 months at the company. During high peak hiring season, the load became pretty high on some engineers and sometimes it really turned into a burden, with some people doing 4–5+ interviews per week. I’ve personally not experienced that, usually averaging 0–1 interview per week, which was not that disruptive to my work.
Candidates are evaluated for coding, systems design, problem solving, algorithms and data structure, quite in line with other big tech companies like Facebook, Amazon, Google, etc. The unique aspect about interviewing at Airbnb are the “core values” interviews (two 45-minute interviews per candidate). They are evaluated against the company mission and core values to make sure there is a “culture match”. If we deemed that a candidate was a great engineer but did not fit well with the company’s values, most often than not, they would not get an offer. This could of course easily become a point of contention due to the highly subjective aspect of those interviews.
This is where I wanted to talk about the “lowlights” of my time at Airbnb. Let me preface this by saying that working there has been an absolutely incredible experience to me and I am deeply thankful for having had the opportunity to work at a “unicorn” company like Airbnb that’s on a mission to change how people travel. That doesn’t mean of course that everything was perfect, quite the opposite. Airbnb has a lot of challenges ahead of it, but I’m very confident it will be able to overcome them.
Getting a promotion gets exponentially harder as you progress through levels. That means getting from L5 to L6 is several orders of magnitude harder than getting from L4 to L5. That usually requires a lot of external factors to work in your favor and often those factors are outside of your control. For example, during review cycle there are the infamous “calibration sessions” where engineering managers with the help of a “moderator” meet for several hours and evaluate the performance of their reports, “suggesting” a rating and optionally a promotion, opening for discussion in case there are any disagreements. This “calibration” format has a lot of drawbacks in my opinion. I think the way Amazon does it works better, where your peers get to vouch or veto your promotion, since your are evaluated by the people who worked directly with you and are very familiar with your work. That doesn’t happen with the current process at Airbnb and I’d love to see it change at some point.
I’ve been always very proud of Airbnb’s culture and simply loved it from day one. It may sound cheesy but I truly felt like I belonged there. However, as time passed and the company grew bigger and bigger, I could clearly see how the culture got diluted over time. It was losing some of that “magic”. It’s hard to put it in words, but it was simply changing, losing its identity.
This is a very hard problem especially with this kind of hyper growth and I honestly don’t have an answer for how it could be tackled. Would love to hear ideas from people who have also been through it 🙂
Some things have changed since I first started writing this article (~2 months ago!) and I’ve since joined Stripe as of a month ago. I can already spot some similarities and qualities shared by both companies, which makes me very happy. It’s like 2015 all over again for me!
Overall, I’m very happy to have had the chance to work at Airbnb and learned so much during that period. I met so many intelligent and fun people. Some of them who turned into good friends, which is for me the most important thing I take away from this experience.