HACKER Q&A
📣 wallflower

If not fresh out of college, what did you do to join a FAANG?


Given the removal of the need to move to a High-COL area to work for a FAANG-type or FAANG-aspiring company with the rise in intermediate-to-senior level remote work opportunities for some of them, I feel that it might be possible to FIRE for more of us.

I've always been fortunate enough to avoid grinding LeetCode, telling myself I don't want to jump through those hoops (rotating a red-black tree on a whiteboard) and that I was happy enough at non-FAANG companies. I know that at almost all of these companies they will ask you LC medium (or even LC hard) questions. However, the death of a close friend has made me reevaluate whether I want to work until 65. Maybe retiring early or at least having the option to not work full time makes sense. I do know that you can still live a good life before you are retired, and I am guilty of "Groundhog Day" living like some of us are.

If you were not hired into FAANG out of college and were rusty on algorithms and data structures, what advice would you like to share on getting hired into FAANG? What did you have to do to prepare successfully for the interviews? How many "practice" interviews did you do? How much time did you spend every week? How did you maintain discipline during the grind Did you have a coach or some coach-type program? What books or courses would you recommend? Thanks for any input. Happy new year!


  👤 david-gpu Accepted Answer ✓
> However, the death of a close friend has made me reevaluate whether I want to work until 65. Maybe retiring early or at least having the option to not work full time makes sense. I do know that you can still live a good life before you are retired, and I am guilty of "Groundhog Day" living like some of us are.

After grinding for years and finally becoming financially independent, my advice to people considering the same is: don't.

Instead, focus on making small improvements to your daily quality of life. From sleep, to exercise, to diet, to finding a project/team/company that is aligned with your personal enjoyment. Try things out and stick to whatever works for you at the moment.

The reason for this is that becoming financially independent is not going to magically make you a happier person, it just gives you more free time. If you were bitter and joyless from years of keeping your nose to the grindstone, once you retire you will just be a bitter and joyless person with extra free time to simmer in your own misery.

Happiness happens today, not some distant future.


👤 clintonb
I'm not a fan of LeetCode since it doesn't give much signal about the ability to do the actual day-to-day job. I did not pass the interviews at Amazon, Facebook, or Google because I don't "grind" LeetCode. I worked as an engineer for about eight years before applying to Stripe. Stripe's interview questions resonated with me because they were more grounded in real-world problems. I hit my four year anniversary in early 2022.

👤 ivanech
I don't like the way this document is written, but it works: https://docs.google.com/document/u/1/d/1eKirumpmwDWTtKCJKn2H...

I did what it said and got offers.


👤 latte
Here is my story:

- got an applied maths / CS degree in the beginning of 2000s, followed by a non-STEM master's degree and almost 10 years in a non-tech career

- burned out, quit job

- spent about a year working on pet projects and (re-)learning programming, then a couple of years on a startup with co-founders (which didn't gain much traction)

- moved to a different country for a developer job. I didn't want to ask my old connections for recommendations, so I just took an offer from a small company that found me on Monster or something similar

- after a couple of years, things at the company became worse, so I started looking for a new job. By that time, I had a circle of friends in the new country, some of which worked at FAANGs and asked me if I wanted a referral.

- I had remembered most of the theoretical stuff needed for LC interview from my CS course from 15 years ago, so I just needed to refresh it, cover the topics I didn't know and have some practice. That took me about a month or two of weekends, evenings and lunch breaks.

- I was so frustrated with my job that I took leetcoding as a pleasurable distraction - I didn't really need anything to maintain discipline. The country was in lockdown, so I didn't have much else to do anyway.

- the whole process from deciding to change jobs to getting an offer took about 4 months. I interviewed at around 5 companies, got 2 offer (one FAANG and one non-FAANG) and decided to take the FAANG one instead. Not sure if this job is a viable road to FIRE (and not sure if this concept is for me at all) but I like it so far.


👤 xiphias2
Don't worry about rotating a red-black tree, I love algorithms, I worked at Google, and as an interviewer I would never ask (or even memorise) something so complex.

Now if it's reversing a binary tree (the famous interview question), if you don't love doing it, you won't love working with big data and complex systems.

As for me, I loved being there working for 1 feature for half year as much as I hated working at small companies where new features had to be implemented every day. I think the latter is just better match for you.


👤 QuercusMax
Graduated in 2004 with a MS in CS and joined a company that I stayed with for 11 years. My titles were at various points Director and Fellow; I was the most senior engineer who touched code every day.

Interviewed at Google in 2015. I basically went through all the exercises in Cracking the Coding Interview, and spent a bunch of time relearning all the stuff in my Algorithms book that never really clicked when I was 20.

I probably spent a month study all told, and I passed the interview to get hired as a Senior SWE. Had some graph questions, and honestly I've had to do a fair amount of graph related stuff at Google, so it's not a bad thing IMO.


👤 daviddever23box
Why the fixation on FAANG?

There are plenty of opportunities out there, with large corporations, that would allow you to grow as a developer, learning useful production skills as you go.


👤 thewebcount
I ran my own business for a while. It was difficult and while it only had one year out of five that it actually lost money, it barely made enough to pay me enough to live. It was very stressful.

However, during that time I sold products (and programming services) related to my field (video and image processing). I did my best to help other developers (some who could even be considered competitors). I posted to email lists of users, mostly with knowledge about the field in general and being very careful not to try to push them towards my company’s products because I didn’t want to come off as a shill.

Eventually, I decided that it wasn’t fair to me or my family to keep working so hard for so little return. I started looking for jobs with other companies and by luck there was a position that opened up on a team that was directly related to my skill set. (I had written some plugins for their product, in fact.) I had interacted with a few of their engineers on the various email lists I was on, and had even interacted with their QA once or twice when dealing with some issues with my plugins. I was able to get one of the engineers to pass my resume on to the hiring manager and eventually got the job.

While it’s hard to know for sure what the deciding factors were for them, I believe these things helped:

1. Being knowledgeable in the field 2. Posting helpful content for users and other developers and not worrying about whether I’m helping a competitor or going to make a sale 3. Getting to know an engineer or two on the team


👤 edmundsauto
I was hired via the pure luck route. A recruiter contacted me on LinkedIn, and I went through the interview process blind. I guess I did well enough - one thing that helped was the certainty that no way would I take this job, regardless of the interview. I was only doing the interview due to family pressure, so I felt no personal pressure (I had my dream job, at 25% the pay rate, lined up and was ready to move across the country for it).

I'm in my late 30s, have a CS degree, started a company that was acquihired, have pretty diverse experience in my career. That, plus a storefront-only consulting site I built to have a 'presence' seemed to get my foot in the door. Once there, the advantage I think I had was 1) not nervous, and 2) able to think about the problems presented, rather than just trying to solve them directly. By that, I mean that I showed the interviewers how I was able to think - and I asked for help / collaboration when I was stuck.


👤 psyc
Contract to hire. Easier initial interview. I still had to do a full FTE interview afterwards, but I had the extreme advantage that everyone on the team had already made up their mind. So some of them lobbed softballs, especially the manager.

👤 whoknew1122
The question is what do you want to do at a FAANG? Do you want to be a software developer? Leet code might help.

But as a infrastructure, architecture, and security person I've never been asked a single coding question. It's all about the above mentioned topics. The fact I can sling a little code is just a value add.

If you are interviewing with me, you won't be asked about an algorithm; you'll be asked about SAML and the differences between IdP initiated and SP initiated login flows.

So what do you want to do? Make sure you have a few projects and can speak to those experiences.


👤 mrkentutbabi
This is why I go to FAANG and live in high col areas and compete a hard as possible I forget how to live.

I want to work for 10 years then go back to my origin country and just live a simpler life.


👤 xen0
I graduated University with a Bachelor's degree in Maths and Physics. I 'accidently' landed a job as a Software Dev with a small amateurish company near my parents home. Passing their job interview basically required that I could write coherently and pass an ancient IBM 'logical thinking' test. I was there for 18 months.

Prior to this, my programming experience consisted of two terms of Pascal programming pre-University.

After this job, I joined a research company that actually knew something about software, if not money. Here I got most of my relevant experience, and after 5 years decided I should get a new job. I wasn't targeting FAANG, but I did interview at Amazon and Google.

My prep was largely some time on HackerRank and similar sites, probably totaling less than 20 hours. I likely spent more time preparing for Amazon's leadership questions.

I did no practice interviews, but did fail Amazon's on-site (and a few others).

I do, however, do Advent of Code every year. This was probably the single largest aid in getting me past Google interview.

I felt like I was a bit lucky with respect to the interview questions I got, but I think most people who pass feel that way. And anyway, the more you do prepare, the more likely you are to be lucky. ;)


👤 cletus
The most important thing here is if you're asking this question right as you finish college and this is your goal, then you're screwed up.

Why? Because resume-building for high-profile employers begins long before graduation. Probably the most important factor: internships. Getting an internship is the highest-probability way of getting an offer bar none. If you don't have 1 or preferably 2 internships under your belt then you've made a mistake.

The second is that passing interview loops is a skill. It's one that can be studied for, learned and practiced. And if you're serious about this then you should do that. Many recommend CLRS [1] as a source for this. Personally, my choice would be Skiena [2]. Go through all the chapters on sorting and searching, lists, trees, graphs and possibly dynamic programming (some employers use this in interviews, some don't). Backtracking is useful but I've never seen it in an interview.

Do the same problems on an actual whiteboard. Don't just think about it. Get comfortable enough with any popular language (eg Javascript, Python, C/C++, Go, Java) such that the syntax and common libraries are second nature.

It's not unsalvageable to do this at the end of college (if that's the case). You just need to commit a few months to it.

Some will ask "why FAANG?" and the answer is obvious: the money can be life-changing but even aside from that it's an opportunity to learn a lot and having that on your resume is amazing social proof that will quickly eclipse the value of going to a top-tier school.

[1]: https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press...

[2]: https://www.algorist.com/


👤 mooreds
No personal experience, but a reader on my site wrote a post about this: https://letterstoanewdeveloper.com/2020/12/21/interviewing-a...

👤 caw
I read Elements of Programming Interviews rather than do LC questions online. That book has a few flavors for popular languages—-just level up on the language you know best, don’t try to learn a new one.

I spent about a month covering the book, and then grokking the systems design.

It’s not so much the knowledge as the familiarity with the interview format and expectations (ask clarifying questions, explain your reasoning). The company I ended up joining had an opportunity for a mock phone screen interview, which I took advantage of. It was roughly a LC easy but covered the format and gave me some feedback on how I conducted myself.


👤 colordrops
After working at mediocre companies and failed startups for the first 20 years of my career I got a job at a smaller company that is famous for being highly selective and achieving amazing engineering feats and worked there for several years, then followed the wave of coworkers to FAANG when I wanted to hang out with my kids and work less than 85 hours a week. Having several ex-coworkers that trusted me at the FAANG def helped getting in. I can't answer most grindy Leetcode questions at an interview.

👤 ditto64
Graduated '16 with a STEM degree. Opted against med school or doctoral studies, so instead took an IT job. Started scripting to fix common issues. Scripts became more like software and I transitioned to a dev job within the same company.

Friend with a FAANG started a bootcamp service and I was one of the first students. Algorithms and mock interviews for 6 months before I landed a FAANG role. It was a grind, but worth it in the end.


👤 908B64B197
> Given the removal of the need to move to a High-COL area to work for a FAANG-type or FAANG-aspiring company

I don't really like nor understand this Col thing.

Most of what's used to derive such metric is the cost of housing... except when you buy a house you are also building equity in it (and you get the cash value plus capital gain when you sell). It's just disguised compensation.


👤 kaycebasques
I worked at an internet of things startup for 3 years. Note that my profession is technical writer, not SWE. Google recruited me and I told them to check back in a year because I was learning a lot at the startup. Sure enough they did follow up after a year. At that time I was ready to move on.

👤 pixel16
Started out has a contractor for one. And then was eventually converted to an fte after two years.

👤 Lamad123
I don' know if you'd ever be quizzed on"rotating a red-black tree ", but you might be asked to verifying if a binary tree is balanced, which seems like a fun exercise. I used to hate leetcode and the like!!

👤 arbitrary_name
Consulted for them and then accepted the offer to interview. Comp was meh but the perks and experience made me sign. No regrets thus far.

Not a coder/dev, for what its worth.


👤 baby
The interview process is stupid: you’ll have to grind leetcode and other “system design” interview stuff.

👤 ProjectArcturis
I got a PhD, went into industry as a data scientist, started managing a small team, and then a recruiter reached out to me. Not surprisingly the management interviews are far easier and less technical.

I didn't take the job. They did a geographical adjustment to the comp, and it was considerably less than I already made, and about half what levels.fyi had led me to expect.


👤 unoti
I was hired at Microsoft several years ago. I do not have a college degree, but had many years of experience in software development. Here is what I did to prepare. I read Skienna's Algorithm Design book, and actively coded many of the things in there. Then I spent weeks practicing on a whiteboard, actively talking out loud through the problems. (These days you're basically not going to need to use a whiteboard, but you should practice talking out loud while you work through the problems in a text editor.) I identified the kinds of problems that gave me the most difficulty, and for me that was things involving dynamic programming. But you should be well versed with graph problems, how to attack problems involving recursion, and so on.

I practiced for weeks or months and thoroughly immersed myself in it. Different people would likely need to practice less. Practice enough to transform your though process from "I'm nervous" to "I've trained for this." I probably over prepared, but I'm the kind of person who would rather show up too early for an airplane flight than to endure the stress of maybe missing the flight. Also whenever I do a long talk, I spend an embarrassing amount of time preparing for it. But if you take weeks or more to prepare don't beat yourself up about it. And keep in mind that if you don't get the job it's not the end of the world. You can come back and interview again. In short the only way you can fail is to give up.

Another very useful thing to do when preparing is make a list of stories you'd like to be able to tell. Little 1-2 minute stories of different important things that you have done. Rehearse telling those stories. When you look at lists of common behavioral interview questions ("tell me about a time you convinced your team to do something" etc.) think about which stories you would tell to answer such questions. Good stories will have several kinds of questions they can answer; during the interview, look for opportunities to tell some of these stories. This is a trick that a top sales person taught me, and has been very useful to me.

If you're transitioning from one kind of technology to another, and the job you're shooting for requires experience in a field you have no experience in, then do some work to prepare a portfolio you can point to. For example, when I made the transition into an AI job that required demonstrated experience with machine learning, I spent a good amount of time preparing a portfolio of work I could point to.

Many people spend a lot of time talking about how it's useless to jump through these hoops to get a FAANG job, and how broken the process is. Do not distract yourself worrying about this; if you want to land the job you need to go prepare. While needing the actual knowledge is somewhat debatable, it's good to be able to demonstrate that you're the kind of person who can dive in to hard-to-learn things and get the learning done. Because once you get the job, you're going to be diving into hard-to-learn systems that you won't know anything about.


👤 alpineidyll3
Applied.

👤 fbftethrowaway
I’m a Midwest dev w/ 8 YOE at non big tech who got multiple FAANG+ offers last year. I wrote the below guide for friends interested in following the same path so I’ll just post it here.

Took about four months of studying ~2 hours daily.

0. Total Compensation (TC)

Compensation data: https://www.levels.fyi/

Get the app Blind and start browsing it daily. People regularly post their offers, and it is the most up to date info on the market. It’s an anonymous forum where your company email is verified. You can DM employees of target companies for referrals or information about roles.

1. Leetcode (LC)

Buy a yearlong Leetcode premium subscription and do all the modules listed here, in no particular order, but skip decision trees and machine learning: https://leetcode.com/explore/learn/

When you are done with that, do all the problems on this list: https://www.teamblind.com/post/New-Year-Gift---Curated-List-...

A lot of these problems are on the modules linked previously, so you will only have 30-40 new problems here

Next, do random problems until you "see through the matrix."

Focus on medium level problems. Try to do something like 35% easy, 50% medium, 15% hard.

If you can't find the optimal solution to a problem, "upsolve" by reading a bit of the solution and trying again. If you still can't get it, copy the code of the solution and study it. Then erase it and try to solve it from memory.

Periodically go back over solved problems and re-solve them while taking notes.

Your goal should be to solve two random LC mediums in ~35 minutes. Consider using Python as your interview language if you are comfortable enough with it. It's faster than Java for writing.

Some places will have you run the code, others it will be a glorified whiteboard, so don't use the run button as a crutch.

Around two weeks before your interview, start doing company tagged problems like: https://leetcode.com/company/doordash/

Start doing this part first and grind it hard. It might take 3 months, it might take a year. It takes as long as it takes until you think you can crush it. I spent around 2 hrs each day in the morning on LC.

2. System Design

If you are being considered for senior level roles, this will be by far the most important part of your interview as far as leveling. If you are shaky, they will downlevel.

Buy DDIA: https://www.amazon.com/Designing-Data-Intensive-Applications...

Read it more than once.

These courses on educative.io are useful: https://www.educative.io/courses/grokking-the-system-design-... https://www.educative.io/courses/grokking-adv-system-design-...

These videos are also really good: https://www.codekarle.com/

Tech talks on Cassandra/Kafka and stuff like that are good.

Videos are the best last minute prep before interviews for design.

3. Companies

Amazon tends to be easier in terms of LC problems but ask more behavioral. Amazon also has a reputation of being stressful and pay is not at the level of Meta/Google, though that might be changing. I would do this interview first since it’s good practice for getting behavioral stories real sharp.

Google is way slower than these other companies, so if you wanna consider them, get the process started as early as you can.

If you are interested in remote, also consider Zoom, Square, Twitter, and Coinbase.

4. Applying

Get referrals wherever you can. Most places will ignore you unless you have them. I applied to probably 25+ companies and got rejects or ignored for all but Uber and AirBnB. Places I had referrals to I scored onsites for 100% of the time, including places that rejected me before a referral.

You can get referrlas off Blind. I didn’t do this, but I guess it happens! You probably also have people somewhere in your network in FANG and top tier companies if you look. If people think you have a chance of passing they’ll be happy to refer. Referral bonuses are several thousand dollars. Ask them for mock interviews as well.

5. Interviewing

The process is recruiter call -> "phone screen" (do an LC problem on Hackerrank while on a zoom call) -> "onsite" which is 5 hours of zoom...usually 2 coding, 1 behavioral (maybe a small coding question as well), 1 design.

Do mock interviews with friends/colleagues for LC problems. I had 3 different people give me a total of 6 mock interviews. You can also pay for this with different companies like interviewing.io or randoms off Blind.

Getting mock interviews for system design is harder, and you might have to pay for it. I did and it was the best money I spent that year.

Also for interviews you can interview over 2-3 days after 3pm PST to avoid taking time off work if you’re not in PST.

Recruiters will let you push back interviews for any reason multiple times, especially if it's for more interview prep, so if you aren't where you want to be before one, it's totally fine to ask for more time.

6. Negotiating

You should try to get all your interviews lined up very close together to get competing offers, especially if you want Google, who tends to lowball candidates that do not have competing offers.


👤 enigmatic02
Joined a high-growth startup, got promoted quickly, then FAANG came knocking. Interviews were surprisingly easy because I had so much experience interviewing other people at the startup, and plenty of stories to share

Here's a list of high-growth startups for those looking: https://topstartups.io/