I left Facebook (Meta) in 2021 to join a small startup called Replit. Leaving wasn’t easy, and during the process I’ve talked to half a dozen friends who were in the similar situation. I hope this post would be useful to senior engineers who are looking to leave.
- This post isn’t sponsored by Replit, Facebook (Meta), or any other company or product mentioned here.
- The advice might not work for you in you are in a different spot in your career.
History so far
I joined Facebook in October 2012. I felt very lucky to be there. It’s hard to describe the energy and culture that existed at the time.
I worked on all sorts of things. Started from internal tooling for tasks and configuration, then joined a new team that was bringing ReactJS to mobile (later known as React Native).
After that I worked on making an awesome onboarding experience for VR users at Oculus, and ended up learning a ton about cryptography and security protocols. Then I moved to Seattle, co-founded a team that made the Messenger for macOS and Windows.
8.5 years is forever in the tech world. Facebook makes it very easy to switch between teams, and every project I’ve been on felt like a small startup inside a large company.
Reasons to quit
Facebook has changed a lot since 2012. The types of projects that I thrive in were harder to come by.
The magic was gone.
Things I care a lot about, like quality, craft and focus, weren’t as important as scale, metrics and PSC.
None of this happened suddenly, just a very slow process. That was one of the reason it was hard to leave.
Why is it so hard to quit Facebook
Working at Facebook is very comfortable. There’s a million benefits, but some of them are harder to notice.
The salary is high. Facebook aims to pay top 5% compensation in the market (we’ll get back to that). This makes a lot of other things very comfortable: you can go to a restaurant without worrying too much about the bill, get a nicer car, a nicer house, better stuff.
The stock is doing well and is very liquid. Refreshers are constantly added in a way where there’s no great time to leave, there’s always a next vesting event to look forward to.
The benefits are top notch. Almost every doctor I visited said “wow” when looking at the health insurance. It’s very comfortable to know that you are likely not going to receive a huge bill for doing an ultra sound for a routine checkup.
Then there’s the Prestige. Facebook gets a lot of blame in media lately, but in everyday life it’s still very prestigious place to be working at. Getting a mortgage or a car loan is easy, saying you work for Facebook gets you on the fast line.
It’s comfortable to know that even if your project fails, you are not going to loose your job, your savings or your RSUs.
It’s comfortable to know your next steps on the career ladder. Getting from level N to N+1 is documented in the wiki, you make a plan with your manager from the blueprint and keep executing.
It’s comfortable to have the social capital to lean on. As an “old-timer” you get a different treatment and more opportunities.
How not to quit Facebook
This was not the first time I tried to quit Facebook.
In 2018 I found myself in between teams. My previous project was moved to Los Angeles, I moved to Seattle. At the time I was getting a steady email traffic from recruiters, so I decided to respond to some to see what the market has to offer.
I opened up Leetcode and started chipping away at the problems in the “Hard” section. It took me days to solve some and I felt miserable.
Self-doubt crept in, and I started to lose motivation. I hopped on 2 phone screens and failed both. It was humiliating and I felt like shit.
In the end things turned out to be pretty good for me. I doubled down on internal search and found a manager with an ambitious dream, and together we built Messenger Desktop.
For a while, Messenger Desktop did feel like a startup. We built MVPs, did user research, pivoted, built even better product. We grew a team from zero to 18 people, then doubled. It was a lot of fun.
But after a while, big corporation found its way in. Reorgs. Leadership changes. Direction churn. Politics. Lots of talks and meetings, and very little progress forward. The key people got burnt out and started leaving.
It was time for me to go, too. But this time I was determined to do it better.
Looking for a new company
As a blueprint for my latest job search I took a course made by my friend: Senior Engineer Jobsearch.
The most important thing I did this time was to change my mindset. Instead of trying to escape my unhappiness at Facebook, I took this as an opportunity to learn more about companies.
I started with The Narrative: a 2 page document outlining my career story so far, highlighting things that worked and things that didn’t, environments and products where I was the happiest, things I wanted to learn and risks I was willing to take.
At the time it felt like I was spending too much time on it (~ a week). In retrospect I wish I spent more time on it, and I’ll explain why in a second. Also it was a good idea to share this document with a few managers I’ve worked in the past, they helped me add and refine a bunch of points in the narrative.
I’ve set a deadline for myself to make a decision ~ 2 months out. This helped a lot because I could plan my interviews to all happen towards that date. In retrospect, it took 3 months to explore, interview, negotiate and make a decision.
3 months might seem like a lot, but only if you think of it as a chore or something you have to go through. With the right mindset, it’s one of the most fun and exciting times of my career. I’ve met a bunch of awesome people and learned a ton about the market and myself.
Most recruiters are terrible. They send generic job descriptions if there’s a matching word in your resume. I’m very surprised the market didn’t push the recruiter game up. There’s so much room for improvement!
Avenues I’ve used:
- Replied to a few dozens LinkedIn message requests. These resulted in a few phone calls, but none of them seemed to be the right fit
- Replied to a dozen emails sent directly to my email address. Some of these resulted in interview loops.
- Directly reached out to a few companies I’ve heard of.
This time in the spirit of exploration I also talked to a few fintech companies. I entered the discussions with pre-existing biases that these places are stressfull, not innovative but well paying. The conversations confirmed these biases (except the salaries, which were lower than I expected).
In the end I applied to a bunch of smaller tech-related companies.
My preparation plan was different this time, too. Instead of jumping on “Hard” leetcode questions, I started with “Easy”. It was reassuring, I could churn out a bunch of these in an hour, and it was so satisfying to see green check marks next to the unit test runs.
I asked a few friends for mock interviews. These were useful too.
But the highest return on time invested was not related to doing things at the computer. I’ve fixed my sleep schedule, made sure to walk a lot every day and eat better food.
The reasoning behind this plan was simple: I’ve been coding for almost 20 years. In my experience, the right mindset and good physical shape are far, far more important for problem solving than practicing very niche coding tasks.
This time I had zero interviews asking me to do leetcode-like problems. By leetcode I mean an abstract graph problem that has a traditional memory/CPU trade-offs.
All problems felt very relevant. E.g. at Replit the phone screen task was to build a small part of Replit, Figma asked to align 2 rectangles and design Figma file format, etc.
What I loved about these problems is that they were all very relevant to the product. They are also very “real-world”, with no best solution, and readability was important too.
Offers and compensation
Facebook aims to pay top 5% of the market. Which means almost everywhere you go, the pay would be lower.
Comparing FAANG and startup offers is hard. Facebook stock is basically cash. Startup equity throws you into long articles about ISOs and tax complications. I’ve spent tens of hours trying to figure out how to reason about these and still didn’t have a satisfying answer.
To cut the chase, the best offer I got was roughly 70% of what I was making at Facebook.
However, I found the process of comparing raw numbers like that very damaging. It spawns a rational though: if I were leaving Facebook to find a more fulfilling role, maybe I should stay, take the 30% difference and invest in a personal trainer or a couch? Plus an extra exotic vacation to boost that happiness levels.
The way out of this is to consider the total compensation as a lagging factor. You can optimize it within a certain range, but it’s much better idea to invest into the leading factors instead.
You should also read this article on salary negotiation. Senior Engineer Jobsearch goes over this too: when speaking to the recruiters you are at disadvantage and you should at the very least be aware of basic tactics.
In my experience, having competing offers made it possible to get better numbers. But numbers is not the only thing.
Making a decision
Ultimately making a choice is hard and very personal.
You also have to keep track of the incentives here. Recruiters’ and hiring managers’ job is to close you. That’s where the narrative document from earlier is extremely helpful. In the whirlpool of calls and discussions you have to keep your narrative front and center, otherwise you’ll get pulled into comparing meaningless benefits you don’t really care about.
Accepting offer, giving notice, etc.
For some reason I thought of these events as big milestones. In the end accepting the offer was as easy as clicking a Docusign form. Leaving Facebook wasn’t much more complicated: I emailed my HRBP, we’ve scheduled an exit interview. I got a checklist of items to do (transferring my phone number was the hardest one).
The exit interview was pleasant. Just a couple of basic questions (I’ve heard they replaced it by a form now).
The next Monday I started at the new place.
After 9 months
I still have good friends working for Facebook, and when we chat about work, I can’t help but notice how unimportant the old problems seem to me. A new reorg? That person being a dick? In the past I was upset by choosing bad trade-offs, teams acting in selfish fashion, drama and re-orgs. Now these problems seem so distant.
First week at the new place was like drinking from the fire hose. Slack messages, email, tools, terminology I did not understand. Under the hood it’s still code, and I was able to ship a few small fixes by the end of the first week.
I do miss a bunch of Facebook internal tools. Phabricator, Workplace, Scuba, Deltoid and a bunch of others.
During the first month I had to unlearn a bunch of Facebook skills. E.g. a common thought that crept into my decision process there was “Is this big enough scope? Can I communicate the importance of this and get people involved recognized?”
After joining Replit 9 months ago, I’ve shipped debugger, the new design system, web3 support. The team is top notch, and the vibes remind me my early days at Facebook so much.
A common question I get is about work/life balance. And I view it a little different too now. At Facebook I could get by barely working a few hours a day. But the job was so unsatisfying that it spilled the frustration in the “life” part. So I re-frame the question: how’s work affecting your life? For me leaving Facebook was definitely a huge improvement.
I’m now working on making mobile experience for Replit users much nicer. So many people outside of US are learning to code on their phones, and this space gets no attention from the professional programmers. I have a million ideas that have been brewing in my head for the last 5 years and I can’t wait to put them to use.
One more thing…
Re-reading this post might seem like I know what I’m doing. I don’t. It’s easy to connect the dots looking backward and assemble a story. But living through that story is a different experience.
If any part of this story was interesting to you, please feel free to reach out. I have my email address published on this website and Twitter DMs are good, too.
Hello! This text lives here to convince you to subscribe. If you are reading this, consider clicking that subscribe button for more details.
I write about programming, software design and side projects Subscribe