Inside Meta's Engineering Culture: Part 2
A broad and deep dive in how Meta (formerly Facebook) works, from the perspective of SWEs and EMs.
This issue is part 2 of “Inside Facebook’s engineering culture.” See Part 1 of the series here.
This two-part series is about “things software engineers and engineering managers should know about Facebook’s engineering culture.” While the information is especially useful for anyone planning to join the company, the utility of these details goes well beyond that workplace. Facebook has grown blazingly fast to achieve global dominance, meaning many of its unconventional methods might serve other tech companies hoping to grow with similar speed, too.
As a reminder, I am referring to Meta as “Facebook” throughout.
This two-part series contains more information about Facebook’s engineering culture than any publication has revealed before. In writing this series, I talked with more than a dozen current and former Facebook software engineers, engineering managers, and engineering directors in verifying the details that follow. The majority of people I talked with had several years’ tenure at Facebook.
Still, it’s not possible to capture every single detail about an organization with tens of thousands of software engineers. Facebook gives high autonomy to both individuals and teams to decide how they work and I can’t cover all that variety, but I do try to provide a useful and comprehensive overview.
In this issue, we continue from Part 1, and go into:
1. Overview - covered in Part 1
Vocabulary
Core values
Standout differences between Facebook and other Big Tech companies
On the engineering-centric culture
On the individualistic culture
2. Hiring - covered in Part 1
Hiring processes
Hiring support
Software engineer hiring
Engineering manager hiring
Compensation: structure and examples
Internal mobility
Perks
Alumni and boomerangs
3. Career
Engineering and product roles
Career ladders
Competencies (axes)
Engineering management
Performance reviews, bonuses and equity refreshers
With numbers on cash bonus targets, equity refresher dollar values for the US, personal performance multipliers and example compensation outcomes.
COVID and the adjusted expectations program
The calibration process
Promotions
Archetypes
4. Engineering processes
Bootcamp & onboarding
Hackathons
How teams and projects operate
Documentation
Testing
The tech stack
Notable internal systems and tools
Open source
Company divisions
Company-wide processes
Changes at the company over time
5. Advice
Advice to succeed as an engineer
Advice to succeed as an engineering manager
Advice when leaving the company
Advice and inspiration for founders and managers to take from Facebook
Let’s dive in:
3. Career
Engineering and product roles
Engineering roles:
Software Engineer (SWE). Often referred to as SWE. Within this role, you can be a:
Generalist: product engineer
Specialist: Android, iOS, Frontend UI (web)
Whether you are a generalist or a specialist impacts the teams you can join after Bootcamp, several of which target specialists.
Business Engineer: a role where engineers work with partners external to Facebook. Roles include Solutions Engineer (SE), Partner Engineer (PE) and Developer Support Engineer. While these roles involve coding, they are not as hands-on as SWEs. Total compensation for roles is around 70-85% for SWEs at the same level. At the same time, the interview process for these positions has the same hiring bar as for coding.
Enterprise Engineer (EE): focusing on internal-facing tools. Their total compensation is around 70-85% of SWEs, with the base salary and bonus targets similar to SWEs, but the RSUs are lower.
Machine Learning Engineer (MLE). Typically scoped to IC4+. To succeed in this loop, hires typically need an advanced degree in ML and/or multiple years of ML-specific industry experience.
Research Scientist. Similar work as MLEs, but typically only hiring those with a PhD qualification.
Infrastructure engineering roles:
Production engineer (PE). This role is similar to what other Big Tech firms refer to as ‘Site Reliability Engineer’ (SRE). According to a former PE: "The folks who bridge the gap between product and infrastructure, taking care of many and various internal tools, automating data center deployments . Not dissimilar, yet broader in scope than Google's SRE. Probably the best role in Facebook’s engineering organization.”
Network Operations Engineer
Optimization Engineer
Hardware Engineer
Enterprise Network Reliability Engineer. Working within the Enterprise Network Reliability (ENR) group. This group operates Facebook’s data center networking.
AR/VR
Hardware, software, research areas
Lots of different positions are open in this area
Data science and engineering
Data Scientist (DS). Different organization than DE, but rolling up to the tech organization. I have heard of stories of people joining as data scientists, but wanting to do more machine learning engineering work. Those people had to re-interview on the MLE track to make the internal move.
Data Engineering (DE). Closer to "analytics engineering". This role involves working with SQL, pipelining and dashboarding. In the early days, this role was sometimes contentious as some people would join as a DE - which had an easier interview process. However, they would get bored and want to do more “meaty” data work that only SWEs did. To do so, they either had to move internally by re-interviewing. Failing this, people would frequently leave.
Product and Program
PM: Product Manager
TPM: Technical Program Manager. I cover this role in-depth in the article What TPMs do and what software engineers can learn from them.
A typical product team would consist of:
Several SWEs
A DS
A DE
A PM
For user-facing teams: a designer, and, possibly a UX researcher
An engineering manager
One thing that surprises many software engineers joining Facebook is how much software engineers work with data scientists and data engineers, on the same team.
Career ladders
All individual contributors (ICs) are called Software Engineers (SWE). Leveling is hidden within Facebook; promotions are not public and are only between the engineer and their manager. It’s frowned upon to share them.
Facebook uses the IC{number} leveling to grade individual contributor roles. For software engineers, the term E{level} is also used, where E is for engineer. These terms are used interchangeably within the company, so ‘E4’ and a software engineer at ‘IC4’ mean the same. At the same time, the IC numbering extends beyond software engineering to other tech functions like product management, design, data science, and so on.
Starting from around 2021, people have increasingly used the IC annotation over the E annotation, even internally.
We’ll be using the E{level} terminology in the rest of the article. This is because our focus is on software engineers.
Here’s Facebook’s leveling and which titles these would map to at most other Big Tech companies:
E3 - Software Engineer 1 (elsewhere all these levels are ‘Software Engineer’)
E4 - Software Engineer 2
E5 - Senior Software Engineer
E6 - Staff Software Engineer
E7: Senior Staff Software Engineer
E8: Principal Software Engineer
E9: Distinguished Software Engineer (still referred to ‘Software Engineer’ externally)
E10: Fellow. Facebook likely has very few engineers at this level; some people I talked with guessed there are only two or three in total. This level is similar to Google’s own Fellow level.
Level definitions comprise scope and three axes (direction, people, engineering excellence). Here’s a summary of each level: