Meta is my first large tech company, so I don't know much about the other big players (Amazon, Google, etc). I was curious as to what makes Meta unique compared to other giant tech companies, so I could get a better understanding of the industry overall.
I have a bad taste in my mouth due to a particularly bad experience at Meta, but will try to put that aside.
Meta seems obsessed with metrics and experiments, but it feels a little disingenuous. You will set up your experiment, set guardrails, put the flag in your code (but did you expose it right? Not everyone does), then get nonsense results. You’ll change the universe and rerun it. It is possible that you repeat this multiple times, and the data doesn’t prove our your hypothesis. There’s a lot of stress, and time spent iterating, on getting the numbers to show the impact, or prove no impact, or whatever. It is my opinion that at times the results were invalid and nearly random, but once there was a result that looked good, that one was considered good. It felt a little cover your ass.
Access to Mark is pretty unprecedented. I think he’s gone off the deep end, but regardless getting on a Live every few weeks and taking questions from employees is… interesting.
I know some people love and swear by the level opacity @alex included. It does change culture. It really broke my brain and me trying to understand it only made things worse. I think I felt… deflated. I finally had a fancy, senior role and wasn’t supposed to tell anybody. More so it is super hard to deliver career advice without level information. I can assert it’s different, better or worse is an exercise for the reader.
There’s a lot of other things, but like… the Workplace stuff is… not used anywhere else I’ve worked, and the rubric to decide when to use WorkChat or whatever, Workplace posts, email… I never got it right. Use chat unless it’s a senior executive then email, but no one checks email.
Anyway… those are some I know, but I was full remote and not deeply steeped in a lot of culture.
I have a lot to say here. Meta is far from perfect, but I fell in love with its engineering culture (that's why I stayed there for 4 years, the longest stint in my career). There's so much to cover, so I'm going to split everything up into "Pros" and "Cons" (from my perspective). The really interesting thing about Meta is that a lot of the things I consider pros are considered as cons by many engineers and vice versa. Anyways, let's dig into it.
Meta gives its engineers a ton of autonomy over not only technical execution but product decisions as well. For the latter, it's so extreme that many engineers won't even have a day-to-day product manager on their projects as they are the functioning PM. This is literally formally embedded within Meta culture as it's one of the very few tech companies to support a PM/Engineer hybrid Staff Engineer archetype [E6] (it's written in the internal wiki as a recognized archetype).
For product teams in particular, engineers are expected to come up with product ideas and propose experiments. Engineers have a huge role in roadmapping, especially at E5 and above.
Meta is focused on actually being fast instead of pretending to be fast by following "agile" principles like doing scrum, organizing work into sprints, and pointing stories. 95% of teams at Meta don't use JIRA (because of the bottoms-up culture, teams are allowed to choose how they run themselves and some teams do have enough older folks that they want JIRA).
In a nutshell, Meta's philosophy is to start with the work and add in process later if it's necessary, while most companies start with overbearing process first and hope it squeezes out some amount of work.
You can learn more this culture here: "Is sprint planning and agile not a thing at Meta?"
Unlike pretty much every other tech company, Meta doesn't make the levels of its engineers internally public. This forced engineers to judge one another based on the quality of their ideas and interactions, not some arbitrary string next to their name in the company directory. I 100% believe that this is the right way to go when running a top-tier engineering organization, and it was a big contributor towards Meta being more of a meritocracy with great upwards mobility. It wasn't rare to see an engineering manager who was 28 with a 35 year old senior engineer reporting to them.
On the other hand, when a company has public levels, everything becomes far more stratified. If everyone knows you're a junior, they are less likely to listen to you in meetings. Conversely, if everyone knows you are Staff, everyone goes to you for help, increasing your scope. This makes it harder to level up as everything is far more entrenched. I have worked at places like this before, and it sucks.
You can find more of my in-depth thoughts on how to consider level here: "How should I think about levels when it comes to evaluating jobs and in my career overall?"
This is admittedly taken from Google (I've heard Amazon is good at this as well), but I do think Meta's the best at this, especially with the bootcamp system. My 1st tech lead at Meta put things extremely well: "Meta essentially lets you switch companies without leaving the company". Due to the bottoms-up culture of Meta, every organization within Meta has its own unique culture, especially as you go from app to app. Facebook/Messenger feels like a different company compared to Instagram which feels like a different company compared to WhatsApp while feels like a different company compared to Oculus.
Unfortunately bootcamp is weakening as an institution, especially after the layoffs. But when I joined, bootcamp culture was still very much alive, and the team switching culture at Meta is still one of the best in the industry.
Meta has an internal tool for everything, and engineers who work on internal tools are universally respected, not looked down upon as 2nd class citizens working on "boring" things. BUCK, Meta's build system which is also open-source, was an E7 -> E8 project. Engineers can reach very high levels solely working on internal tools, and many of them make $1,000,000+ per year (like the guy who built BUCK).
At most companies, internal tools are kind of an afterthought and they often outsource internal tooling to some external SaaS provider, which rarely fully works as those solutions can't be fully customized for everybody. Meta refuses to let anything internal be suboptimal, so almost every internal tool is built in-house.
To end this section, here's an interesting story: Meta didn't find Git to be scalable enough given its massive codebase and asked the Git maintainers to make changes to accommodate their scale. Git wasn't able to do that, which is why Meta uses Mercurial as its version control instead as it was allowed to make big modifications to it.
Meta engineers get promoted 2x - 5x faster compared to other engineers across the industry, including Big Tech (both Google L4 -> L5 and Amazon SDE 2 -> SDE 3 are known to be very difficult/slow). This is a combination of the fast, bottoms-up culture and the more unknown (and fairly onerous) up-or-out system where engineers need to make it to E5 (senior) within 5 years or get fired.
I've had an amazing track record with mentees (grew them from junior to senior in 2.5 years, $175 -> $400k TC), but I'll be the first to admit that I had an unfair advantage as a lot of those mentees were at Meta. If you're interested in how I did that, you can watch my video here: [Case Study] Mentoring Junior SWEs [E3] to Senior [E5] In Just 2.5 Years At Meta
Meta doesn't care if you work 20 hours a week or 100 hours a week as long as you get your work done (by the time I left Meta, I was a high-performing tech lead working ~35 hour weeks). It's pretty hard to hide behind the false appearance of doing work as Meta culture places such a huge emphasis on measuring impact and over-communicating. While Meta does have some freeloaders (especially at the executive level), this impact-driven culture tends to weed out most of them pretty quickly.
If an engineer was just posturing and not actually writing great code/getting work done in general, they generally got fired or put on some sort of PIP pretty quickly.
So... for the folks reading this who don't currently work at Meta: Should you work at Meta?
Probably.
Meta has a lot of problems, but there's a reason why it's currently worth over $1 trillion: The engineering culture is truly top-notch. I grew like a rocket ship while I was at Meta, and I grew many engineers into even faster rocket ships than myself while I was there. You'll be working with world-class people within world-class technical infrastructure while being paid work-class compensation.
In particular, Meta is great if you're earlier in your career (younger than 30). Up-or-out is stressful, but it does act as a forcing function to get you to senior quite fast (and Meta senior translates to Staff+ at most other companies). Starting at Meta is an excellent career foundation, and you can leave after you get to E5 to do better, more exciting things.
On the flip side, Meta is often not great if you're later in career and haven't worked at a similarly fast-paced company before. Unfortunately, I've talked with many engineers who have been PIP-ed/fired while at Meta and almost all of them were older than 35 with lots of experience at big, older, more traditional tech companies. Meta's culture is blisteringly fast and very unique, and it's very, very hard to make the adjustment if you are seasoned and dealing with that sort of environment for the first time.
Anyways, if all of this made you excited to work for Meta, check out this thread: "How does the Meta interview work?"
On the flip side, Meta is often not great if you're later in career and haven't worked at a similarly fast-paced company before. Unfortunately, I've talked with many engineers who have been PIP-ed/fired while at Meta and almost all of them were older than 35 with lots of experience at big, older, more traditional tech companies. Meta's culture is blisteringly fast and very unique, and it's very, very hard to make the adjustment if you are seasoned and dealing with that sort of environment for the first time.
I worked outside of the U.S. (in Canada until now) and was in banking industry until recently. Moving to Shopify made me realize how fast tech companies operate. I adjusted reasonably well, but the work I do in a day here would have taken a month at my previous company—not because I wanted to slack off, but because the culture was so anti-developer.
I saw in one of your other answers that if you have 10 years of experience, you can't salvage an offer by aiming for an E4 role, as Meta would rather reject you instead. Even though I have 10 years of experience, the first three were largely in support-ish kinda roles (even though my title is developer), and the next four were at a bank with a very slow development pace. I would consider my relevant experience to be around two good years in Shopify.
Alright, there were a lot of pros, but let's talk about the cons (there are also a lot).
Yes, if you can get all your work done (i.e. impact landed) with 20 hours a week, nobody cares. But the harsh reality is that the bar is so high that very, very few engineers can get their workload done in less than 40 hours per week with most engineers working 50-60 hour weeks just to get by. Meta pays top-of-market (even compared to FAANG), and it's for a reason: Meta extracts far more productivity from their engineers compared to 99% of other companies.
If you want work-life balance, Meta is probably not for you, especially if you haven't worked at a FAANG or FAANG-adjacent company before.
Meta is a place where high-performers are greatly rewarded. The converse is that low performers are heavily punished, and once you dip below the bar, it is very hard to recover (and the culture actively tries to push you out). You know what I said about team switching being great? Well, if you haven't gotten the average rating (Meets All Expectations) or higher for the past year, you literally can't switch teams. This means that if you're struggling due to a poor team match, you are screwed.
Almost every performance review season, there were 1-2 people in my organization who would mysteriously disappear. In my early Meta days I was naive and didn't realize what happened, but as I got to understand Meta's ultra-high-bar culture, I started putting 2 and 2 together...
If you're stress-averse and don't perform well under pressure, Meta is also not the place for you.
To learn more about Meta performance culture and stack rank, check out my in-depth explainer here: "How does Stack Ranking work (at FAANG) and how can I be proactive at a base level?"
Back when I was at Meta, a full-blown performance review happened every 6 months. Since Meta is a Big Tech company, the process took 2-3 months, meaning that you only got like 3 months of breathing room at a time before performance review started looming again. Due to the heaviness of the process and the pressure of the aforementioned high expectations, PSC was pretty stressful so it wasn't fun having it around so often.
Meta has gotten better since I left by moving to a yearly PSC, but now it's sort of similar to what I went through as they reintroduced a lightweight performance review in the middle of the year.
This was really bad when PSC happened every 6 months, but this culture is still very much around Meta now. Because Meta engineering is so performance review-driven (Meta also has some of the highest raises in the industry, even among FAANG), everyone is trying to land impact before the review rolls around.
The problem is that if you're graded every 6 months, you are incentivized to only pick up projects that can deliver something shiny within 6 months. The problem is that a lot of engineering efforts are naturally long-tail (especially at Big Tech), taking 1-2 years to fully manifest. A lot of these efforts are centered around quality and responsibility, and it was so, so hard getting these through as everyone was wondering how they could get enough impact points from it before PSC.
Because of this, I think Meta probably has the worst code quality among FAANG.
Yes, being impact-driven is good, but like with all good things, you can take it to a negative extreme: Meta takes it to that extreme. If you don't have some metric attached to your work item, it was pretty much worthless. This is really annoying as there are many things that can't be measured or shouldn't be. Here are some examples of those items which I really like but were hard to push for at Meta due to this culture:
There probably cannot be a better answer than what Alex has written and I 100% agree on whatever he has shared.
I recently joined Meta from a non big tech background and here are my thoughts...
Move fast mentality is still alive and well
Meta doesn't just preach, they abide by the culture they tell you upfront about. Especially the move fast mentality. The biggest difference with meta and other places has to be this. There is a huge bias for action that everyone tries to embed in you the moment you set foot in the office. You will be juggling 3-5 projects at the very minimum, probably no matter your level. You do not need to be fully prepped to jump in to a project, neither will you need to write a detailed tech proposal, you jump in and get your hands wet and produce tangible artifacts no matter how large or small. This is probably the only way to survive at meta, unlike at other companies...
Bottoms up is still followed but depends on your team
There is a lot of autonomy to ICs to bring to front new product iterations. Product managers won't be the ones to handhold and control the direction of what you're building, you as an IC will be the one driving it. There is a separate axis for it too btw that is highly important during PSC discussions, Direction. If you see a problem in your product/codebase/the way your team works/code reviews etc, grab the opportunity with both hands and raise awareness about it and propose solutions. You'll be credited for such improvements. You do not need to wait on someone to come and give you projects to work on.
Metrics
You have to get a firm grasp of what is important for the team, what they currently track, they should track, or suggest corrections to the way they're tracking certain things. As soon as you build this skill of being able to quantify anything and everything you touch/work on, you'll be in great shape for your performance discussions. The emphasis on numbers is nothing like I've ever encountered previously, which is both a good and a bad thing. In either case, it will be one of the most high leverage skills you can have for your survival at meta.
XFN partnerships
You will benefit a lot if you're great at working with other people. You WILL need to have excellent professional communication skills, negotiation skills (at times) and just learn how to be fun and easy and approachable to talk to. Meta is the most extroverted job I've worked on since in order to do 1 project done, you will almost certainly talk to 2-10 different people with different job profiles (other developers, PM, UX, DS, DE, customers, stakeholders etc). It isn't everyone's cup of tea but will definitely teach you a lot if you embrace it with open arms.
PSC, PSC, PSC
No matter what you do at meta and what time of year it is, performance reviews will ALWAYS be on your mind. You will need the ability to foresee what sort of a portfolio you are putting together in the next 6 things so that you're on track on all the 4 performance axis, people, direction, engineering excellence and impact. You will have regular discussions every single month with your manager about this. It will seem incessant and annoying but you can never loose sight of how your self review is shaping out and if you're on track to meet expectations/exceed them. Putting together a good self review summary is like a big project in itself on top of all projects you will be working on. Salesmanship comes in handy quite a bit here.
Meta is a demanding place to work at with a unique culture. But on the positive side, you will be compensated well, the vesting schedule is the best, the food will be awesome and there will never ever be a dull day in your professional life!