How I landed 18 FAANG+ software engineer offers after not interviewing for 5 years — a comprehensive tech job search guide
Originally published Dec 21, 2022, Last updated Nov 14, 2023
👉 My top recommendation is the Interview Kickstart interview prep boot camp- use my code for $300 off here
👉 I gave an extensive talk on this (with many more details than this article) for the Taro engineering mentorship community*, which contains the recording of the talk. You can get 20% off the membership if you use my link here
Steven Zhang invites you to join a community of the best software engineers
Become a member for insider advice on how to get promoted and onboarded
👉 If you found this article helpful for your job search, a comment on the LinkedIn announcement here or in the comments section below would be appreciated! Follow me on LinkedIn for more interview/job search tips as well!
👉 Summary of article in table form here
*I recommend Taro as a resource towards the end of this article. Taro is the premier software engineering online community. I’ve found it to be the best general resource for software engineering career growth out there. Think of it as /r/cscareerquestions but no spam, actually written by FAANG staff engineers and beyond, and super selective/curated
This article was originally written in Q3 2019 as a private Google doc that I shared liberally with friends. I decided to publish it on Medium.com since so many friends were asking for it in Q4 2022. I then migrated it to this dedicated site after the article became so popular.
The larger macro and software engineering hiring environment has changed a lot since 2019 but I believe a lot of it still applies
In the first half of 2019, I decided to do an extensive job search. I had stayed 5 years at Tableau so wanted to see what the market was like, and what kind of roles were out there at various company types.
My result: I got 18 offers in 22 onsites (please let me know if you meet anyone with more offers, I’d like to talk to them).
Here were my offers:
Late stage-about-to-go-public (now most of these are public/exited)
- Airbnb (2020 IPO)
- Lyft (2019 IPO)
- Palantir (2020 direct listing)
- Pinterest (2019 IPO)
- Uber (2020 IPO)
High-growth mid-stage companies on breakoutlist.com (or similar)
- Karat.io (interviewing as a service)
- Zoox (acquired by Amazon 2020)
Companies that have had to do major pivots since 2019
- Zume Pizza (now focused on food packaging instead of robotic food automation, interestingly enough)
See the appendix for the 4 companies where I did not get an offer and what I think I did wrong/failed at the onsite
I ultimately ended up going to Airtable (partially because I loved using the product so much- checkout the product here!).
I decided to write this semi-essay/notes doc to share my insights and mistakes with others! I put referral links because there’s no downside for anyone (but a small potential upside for me :) ). Feel free to discard the referral parameters, no offense taken!!
- Aaron, Machine Learning Engineer at Snap — “This guide reframed how I approached my job hunt and gave me concrete helpful links such as the system design primer and negotiation strategies. This is the most succinct and comprehensive summary of all the information you need to excel in your SWE job search.”
- Antonio, Software Engineer at Snap, ex-AWS — “Steven and I helped each other prep for our last job searches (all while having some generous Mario Kart breaks!). This document is a detailed and actionable synthesis of his learning. Given Steven’s impressive level of success, you really want to pay attention. I especially appreciate his addressing less commonly covered technical topics like system design as well as non-technical topics like time management, negotiation, and mental preparation. His focus on nuts and bolts makes it a concrete template to help other engineers get out of the tar pit and hit the ground running!”
- Nate, Senior ML Engineer at Robinhood — “Steven and I were interview buddies in our respective job searches in 2019. I especially appreciated the thoroughness of his preparation and ability to document it all in this document. The section on algorithms was super helpful for me- I don’t come from a traditional CS background (worked as a mechanical engineer for several years at the beginning of my career) so having an efficient way to learn and retain algorithms was key”
- Tosin, Software Engineer at Datadog — “Steven’s doc was a helpful resource during my interview prep. Sure you know you should leetcode or read cracking the coding interview, but perhaps you should consider mock interview resources or a different strategy for system design prep. Steven also includes helpful articles about negotiating your offers. I think this is a helpful reference for anyone going through the stressful process of tech (particularly SDE) interviews.”
- Anonymous SWE at Apple after joining the talk I gave on Taro about this experience: “There were a few things that were helpful about this article and Taro talk:
- seeing what’s possible when someone puts their mind to something which is inspiring
- the process Steven outlined of how Steven prepped himself, including using an interview boot camp (and giving a recommendation on which one to use), and how Steven tracked the different stages of the interview pipeline for each company
- hearing Steven’s experiences on going through it and seeing the community of others come to watch the talk through Taro”
- Anonymous Senior SWE at FAANG+ company — “When I first heard about this article, I thought, ‘wow this is incredible!’ but at the time I wasn’t actively looking, so it was more theoretical. Now that I’m actively looking, it’s even better than I remembered!”
- Anonymous SWE at after joining the talk I gave on Taro about this experience — “I woke up this morning and I’m making a plan on my job search. I learned a lot and I’m attempting to be more intentional. Thank you sooo much for this session.”
- Another anonymous SWE after joining the talk I gave on Taro — “Three takeaways: 1. the list of companies to target was very valuable. 2. Delaying interviews after being invited is a great idea. 3. Finally, the knowledge that it is a long hard slog makes me feel better about my own preparation process which I’m going through right now.”
Before applying think a bit more about what you want. Good resources for this are:
Cracking the Tech Career (same author as Cracking the coding interview)
Also, see “career advice” section at the bottom of this document
Climate tech is a hot space right now that IMO can provide equal career growth while allowing you to have much bigger social impact.
Check out ClimateTechList (curated by me) for 1,000+ active SWE job openings in climate tech from 100+ high impact climate tech companies
AI is also a great space right now to join as a SWE.
Check out AiJobsTracker.com, which scrapes thousands of active SWE job openings daily from hundreds of AI-first companies.
Checkout the following lists for companies to apply to from a “what company are growing fast” perspective
I also like listening to softwaredaily.com for interviews with founders/top engineers, which could be a good way to hear about what companies have cool engineering problems
Finally, keyvalues.com is a good place to find companies from a culture-first perspective
Interview prep courses are expensive (a few hundred to a few thousand dollars) but are cheap compared to the annual salary of a software engineer (even in this macro environment in non-FANG companies)
- Force you practice at regular cadence by giving you structure
- Teach you good algorithm concepts
- Give you recorded mock interviews that you take
Put another way, think of a course as a training camp- you’ll be immersed in a high-intensity, high-integrity environment where you do, debrief, get feedback, improve and repeat.
Of course, you *could* learn all these things by googling/LeetCoding, but will you do it as fast? Probably not even close
I recommend Interview Kickstart - use my code for $300 off.
Without IK, my rate of passing interviews and getting on-site would’ve probably been 9 out of 22 instead of 18 out of 22. How do I know this- I debriefed after each interview and noted which interviews I struggled with, and how I overcame the block / whether Interview Kickstart concepts helped
If you want to sign up, consider using my referral code here for $300 off.
There are a lot of resources on basic algorithms out there such as Interview Cake, and the classic Cracking the Coding Interview.
But here’s another hack: listen to grad-level algorithm classes. Sometimes these will pop up in interviews, and they’ll give you more formalism to reasoning about algorithms and data structures. I.e. Erik Demaine (one of my fave lecturers) MIT’s advanced data structures course: https://www.youtube.com/watch?v=T0yzrZL1py0&list=PLUl4u3cNGP61hsJNdULdudlRL493b-XZf
Another tip is to use the list feature on Leetcode for spaced repetition. Set up lists to review questions for one week and then one month from the day you solve them. Or create your own Anki flashcards!
For me personally, how I got good at DSA questions is roughly (broken down by % contribution):
- 30% Interview Kickstart training questions
- 30% Interview Kickstart mock interviews
- 5% LeetCode on my own
- 5% 1:1 mock interviews with friends
- 10% live interviews on interviewing.io
- 20% live interviews at actual companies
First read this just as a primer: Web Architecture 101
In my experience, how I got good at system design interview was roughly (broken down by % contribution)
- 20% listening to tech talks (i.e. Uber Engineering) on youtube
- 30% listening to problem breakdowns of system design problems on youtube (i.e. Whatsapp System Design: Chat Messaging Systems for Interviews)
Since 2019, one of my favorite system design resources has been ByteByteGo, the author Alex has excellent diagrams and excellent LinkedIn content as well
There are plenty of question banks floating around out there- I would NOT suggest that you memorize answers to questions- interviewers are trained to detect when a candidate gets the answer too fast! Instead, focus on using this to learn patterns.
Airbnb questions with solutions: https://github.com/allaboutjst/airbnb
Jason, former Senior SWE at Facebook found this helpful: https://leetcode.com/explore/interview/card/top-interview-questions-hard/ — “For coding problems, I pretty much just used LeetCode and in particular this list. When you buy premium you can also see the actual frequency of questions in interviews. “
Kevin, ML Engineer at Facebook says: LeetCode premium sorted by frequency works well for certain companies (can’t say for all companies since I didn’t look at them all). I also used this blind post
Here are my biggest (unconventional) tips for prepping behavioral interviews.
- Write a Google doc of all the possible common behavioral interview questions (see appendix for my list), and write out answers for them. Have friends review and comment on the google doc. (thanks David, Poorva, and Hermann for helping with mine!)*
- Record myself during a practice mock interview with a friend, using the list generated in # 1 as an audio file, then listen to myself the night before as a podcast to jog my memory. Ask me if you want a sample.
- Stop doing any heavy-brain-work (i.e. algorithm problems) at 7 pm the night before an interview. Instead, listen to founders on YouTube/podcasts talk about their company’s core values while working out/doing chores. Example: Airbnb 6 Golden Rules via Brian Chesky
Dan Croitor, the interview coach/YouTube content creator, said this after reading an initial version of this essay: “for future behavioral interviews, try categorizing your Google Doc on behaviors (vs. commonly asked questions); doing so helps build better answers if you do the prep in multiple rounds/revisions”
Breakdown of how useful each approach was:
- 1 writing google doc — 60%
- 2 mock interviews and listening to self-practicing mock — 30%
- 3 listening to founders talk — 10%
Again, I had a really good experience with interviewkickstart.com
In addition, you can try:
- meetapro.com — newer mock interview-as-a-service interviewing service, price ranges more varied (lowest one is fairly cheap at <$50/hour for a mock interview with non-US based).
- Exponent’s courses and resources — various courses and content on different interviewtopics, including software engineering.
And of course, ask your friends and former colleagues!
Don’t apply to companies- referrals are the way to go. If you have a former classmate or coworker at the company you want to apply, ask them to refer you.
Senior Engineer Ben Fisher has this tip- “I had success going to the company’s page on LinkedIn. Under employees, it will show if you have any contacts who have a contact at the company (“2”). I could then ask my contact to introduce me to the employee.”
Try https://repher.me/ to get referrals from companies where you don’t have connections
If current hiring is like Craigslist’s romance section ( inefficient) then these sites are like OkCupid (match with score)
Most of these are not developer-only (so data scientists, PMs, etc.)
In my experience, there was no noticeable difference between these, and they mostly had a lot of startups
- I got my Airtable offer that way, but I was already planning to reach out to them
- Triplebyte.com (developers only)
- One phone screen. Then you can skip to onsite interviews
- For me, this was the fastest process-
- I got my Apple, Mixpanel, and Zoox offers this way
- Unfortunately shut down as of 2023–03–16
- Intervewing.io — if you pass each phone screen anonymously (so basically no downside to trying) skip to onsites. It’s a good place to practice interviews too (I did 7 phone screens here)
- My Zume, WeWork, Uber, and Checkr offers came this way
If you’re applying to Amazon and live in Seattle, here’s a strategy that worked for me:
- Buy LinkedIn premium
- Have recruiters and HM from Amazon/AWS reach out to you
- Talk to a couple of them, but only talk to the ones where HM reaches out to you directly
- Then pick the HM/team that sounds most interesting
Why is this hack necessary? Because Amazon’s an exception because they’re the only company where:
- Multiple recruiting emails are sent out by them by separate teams*
- It’s a mix of HM/recruiter
- The actual on-the-job experience is so dependent on what team you join at Amazon anyways,
In fact, there is no way to remove yourself from the Amazon recruiting database because there is no central one! I’ve received 50+ recruiting emails from various Amazon teams since 2019 :(
Another thing to think about is sequencing which companies to apply to
For example, I’ve found that most people are out of practice at the beginning of interviews, and may get tired at the end so one strategy for this would be:
1. Have the companies you’re not as keen on ideally at the start.
2. Have the companies you’re more excited by in the middle when you have more practice.
3. Make sure you ping the companies you’re excited about if you get an offer before you run out of steam.
4. For companies that tend to have long processes, you might want to start these early.
Get a Calendly and use that to book times with recruiters instead of emailing back and forth times :)
Extreme example: I was able to schedule 10 onsites in roughly 10 days. The way I did this was by creating a separate Calendly for each company such that whichever company was scheduled first would get the most options.
(all the events plotted on timeline view) — each block is a call/phone screen/onsite
If you need to push back an interview…
If you need to push back an interview for whatever reason
- Go with “personal reasons” or “family reasons”
- Otherwise, just say that you’re not ready and want more time to prepare. Remember that recruiters are incentivized to get you hired at their company!
You’re going to be doing a ton of talking on the phone. Get yourself a quality headset. It was expensive but worth it. I use the Jabra Evolve 75 (connects to Bluetooth and computer). The killer feature for Jabra Evolve 75 is a microphone boom that can be physically moved up and down to toggle the mute state- you’ll never wonder if you’re muted or not again 🔇😅
For cheaper headsets, check out The 5 Best Wireless Headsets of 2022 | Reviews by Wirecutter
I’ve done a bunch of testing on various whiteboard markers. The expo clickable ones (often sold out- try this one instead if so) save you a lot of time from having to cap/uncap markers. Plus no company ever has clickable markers so it’s a subtle way to show the interviewer “I’m prepared and brought my own markers, no question”
You’re going to take your laptop onsite for quite a few interviews (a lot of companies now require coding/debugging onsite).
Note- this was true in 2019 but not as true post-covid, but leaving it in in case in-office interviews become the norm again in the future!
Set yourself up for success with a portable ergonomic keyboard, laptop stand, and external mouse (links are my choices)
I did it because of ergonomic problems, but during interviews I realized that it sent a really high signal to interviewers. For example, at Zoox, the engineering director even turned around at the end and commented “I’m very impressed by your laptop setup”
(By the way, if you’re curious about my current 90 degrees tented keyboard setup and eye-tracker mouse check out my doc here: http://stevenzhang.com/rsi )
Behavioral/mindset advice. I did 22 onsites (including 10 in 2 weeks). I found this routine to be super helpful the night before
1. After 9 pm, stop doing problems
2. Listen to Dan Croitor’s YouTube channel which talks about the cultural values of different companies (ex: the one for Airbnb): AirBnb 6 Golden Rules via Brian Chesky
3. Listen to some Bryan Cranston (actor mindset for auditions, really good parallel to interviews)
4. Listen to this guided meditation morning of Programming interview visualization exercise
It’s important to understand your compensation expectations when applying (even at step 0!). Here are some resources:
- https://h1bdata.info — uses public data that companies have to file with the US Department of Labor. Only includes salary though so not as accurate if your position is compensation heavy.
Companies typically get a conversion rate of 20–30% from offer to accept the offer, at least for SWEs. So basically you shouldn’t feel bad for negotiating and rejecting because, from the company’s point of view, they’re used to this.
- 100 Applications
- 25 Best-Qualified Applicants Screened by Recruiter
- 5–10 Candidates Forwarded to Hiring Manager
- 3–5 Selected to Interview by Hiring Manager
- 1 Offer Extended
In other words, they have no idea if you rejected them for 1 company or if you had 100 offers! (I don’t recommend you get 100 offers )
Also, I don’t have data to confirm this, but anecdotally it seems like recruiters seem to be incentivized to hire without taking into account the cost of interviewing (i.e. time spent for engineers). The incentive for recruiters is that they usually have a quota to hit each month/quarter of accepts (comment if you have more info on this)
A bunch of my friends and I have used the negotiation coaching services of teamrora.com — they have helped hundreds of professionals negotiate and the incentives are aligned- if they make you more money through negotiation, their fee is higher!
My personal experience with Rora- Rora probably helped increase my final offers by ~25%!
If you only have one hour, listen to this talk on Udacity presents: negotiating your engineering offer
Also, Offerletter.io — a guide to negotiation. The site is down, but it’s on the web archive here: https://web.archive.org/web/20170215155654/https://www.offerletter.io/blog/
Listen to the podcast of one ex-poker player (Haseeb Q) who climbed up his way up the salary negotiation ladder: https://youtu.be/7DQpZBP26ow . This is more for motivation, content in the Udacity video is about the same:
As you do all this, it’s best to be transparent with your recruiters (i.e. what other offers you’re considering, if you’re still interviewing, etc.). You don’t have to share every nitty gritty detail, but please don’t lie.
Henry Hippley, currently recruiting manager at Stripe and formerly recruiter at Convoy during my job search, said to me “One thing you didn’t mention that I appreciated during your search is being super transparent/direct with recruiters. It makes a huge difference on the company side.”
Tips on staying classy when accepting an offer:
People I like to follow for general SWE career advice
- Rahul Pandey — Building joinTaro.com to help Software Engineers find career success. Follow me to grow your career.
- Rahul and Alex are building *the* discussion platform for career advice. Very good content! Use this link for $50 off a yearly subscription (most people use company Learning & Development budgets for this too so it can be effectively free to you)
[✨ New] I’m teaming up with Taro (the premier SWE online community) to launch a course on becoming extremely good at the software engineer interviewing/search. Sign up to be notified here
Interview with Cyrus Xi of Uber (see also the Reddit post links in the video)
There were 4 onsites that I did not pass. Listing them here with some thoughts on why I did not pass them/what I could have done better. Note I don’t recall the exact details here- I’m just basing this based on my notes.
Got to final offsite, and according to my recruiter my ratings were:
- 1 Leaning hire
- 3 hires
- 1 leaning no hire
The leaning no hire question was a very complex tree question and I had not practiced enough trees at that point
Did extremely well on all the coding questions, but my system design interview went poorly-. Had not studied enough
Perhaps was unconsciously overly confident since I got Microsoft offer a few years ago?
Had not prepared enough on a few technical concepts. Was thrown off by the BST iterator as an example.
I ended up interviewing for a research engineer position (helping build prototypes) because the headcount was low for regular SWE. I don’t know what determined the HM choice but I do know that the recruiter said they had found someone with a more direct fit as a prototype/research engineer.
Pure behavioral questions (decreasing order of importance)
- Where do you see yourself in 5 years?
- Why should we hire you? [show off strengths]
- Why are you leaving your current company? [given a neutral answer, don’t say anything bad about the current company obviously]
- Why do you want to join us? [given question tailored to the company]
- How did you resolve conflicts in the past?
- What is your weakness [give a neutral answer or pair strength with weakness]
- Give an example of you and leadership
- Give an example of showing initiative
- Example of customer obsession
- What’s your promotion history? Why wasn’t it faster?
- Talk about a time you had to work with someone you didn’t respect.
- What was a nontechnical mistake you made?
Technical behavioral questions
- What was a technical mistake you made?
- Describe a <current/challenging> project? [give the interviewer a choice]
- Example of difficult tradeoff you’ve made
- How much time do you spend coding?
- What’s your day-to-day like?
- How do you ramp up on a new team/project?
- Talk about a recent project you’ve worked on
- What was the biggest scale system you’ve worked on?
- Example of raising the quality bar?
- Example of predicting deadlines?
- Most impactful thing done at previous companies?
Company-specific questions- Stripe
- Explain a project that you worked on recently that was difficult
- How do you stay up to date?
- Where do you see yourself in 5 years?
Company-specific questions- Airbnb
- What are some adventures you’ve gone on
- Time you were inclusive of others
- Time you persevered in face of challenge
- Time you were a team player
- Who is the best host/most hospitable person you know in life?
- What’s a time you’ve sacrificed something of yourself for someone else in the last 6 months/been nice for someone
- Tell me about a time you disagreed with someone. How did you resolve it?
- Tell me about a time when you didn’t follow the way things are usually done.
- Tell me about a time you took a risk.
- When have you created something from nothing?
- Tell me of a time when you’ve been spontaneous.
- What’s something about yourself that you want to improve? Why?
- When priorities change, how would you help your team understand and carry out the new goals?
- Tell me about a time when things didn’t go your way for something really important for you.
- What makes you feel optimistic about life/humanity?
- What was the last nice thing you did for someone?
- We’re living in a time of commoditization of software talent, which also means a talent pyramid is forming
- To avoid commoditization, keep skills sharp and stay at top/migrate to the top
- Part of keeping skills sharp is being at an organization with sharp skills
A common argument is that being good at interviewing doesn’t correlate completely with on the job performance. This is true, but here’s an alternate perspective to consider: Tim Ferriss Is Everything That’s Wrong With The Modern World (And Why You Should Follow His Lead
🙏 Thanks to Aly, Antonio, Brian, Ezzeri, Jason, Johari, Kevin, Peggy, Siobhan, and Tosin, for giving feedback and edits. And everyone else quoted in this essay!
🙏 I hope you enjoyed reading this article. If you did, a comment on the LinkedIn announcement here or in the comments section below would be appreciated! Follow me on LinkedIn for more interview/job search tips as well!
Steven Zhang on LinkedIn: How I landed 18 FAANG+ software engineer offers after not interviewing for… | 182 comments
4 years ago when I was doing my SWE job search, I received 18 offers (out of 22 onsites), including from companies such as Airbnb, Apple, Facebook, Palantir… | 182 comments on LinkedIn