Ask HN: If not fresh out of college, what did you do to join a FAANG?
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!
100 comments
[ 3.3 ms ] story [ 182 ms ] threadThere 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.
As long as there's trust and a work ethic on both sides, it's very virtuous.
If I have any advice for current CS college students, it would be to do everything possible to get into a FAANG or FAANG-like tech company.
The monetary compensation speaks for itself, but all of the other non-monetary perks will also contribute to making your future career better, and your daily work more pleasant if not enjoyable.
That's not to say FAANG is perfect - no company is. But no matter the ugly warts FAANG and similar companies have, most other companies (especially non-tech companies where tech is an unrespected cost center) are usually worse.
Which leads me to my second piece of advice for college students - if you don't or can't make it into FAANG or FAANG-like companies, do everything possible to get into a company where tech is a profit center, or at least respected.
Yeah, the time I worked at Google most people worked less than 40 hours a week.
> but my distinct impression is that one trades time for a significant chunk of money.
Right, I traded 30-40 hours a week (a significant amount of time) for about $250k a year (a significant chunk of money).
I know other FAANG are a bit more harsh to work at than Google, but I haven't heard of any place where 40 hours weeks isn't the norm. Except Amazon, but Amazon is just a regular toxic company, you find such at every paygrade.
I could be totally wrong, but my sense is that $300+ per annum is almost always accompanied by well over 40hours/week.
I worked there as a junior. The people I worked with had 500k+ and didn't work more than me. I have very low living expenses though and didn't want to stay in the HCOL area so I quit because I got more money than I needed.
One of my friends who works at Netflix got a ~$270k offer many many years ago. That is probably unspeakably and impossibly low for Netflix if you were to get an offer there today, but probably high for that time?
If you add the MULA companies, I believe ULA are on the higher side while M is on the lower.
Its absurd.
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.
(A research scientist with a PhD in CS making <$100k at Facebook—what!??)
Perhaps there is a big difference between getting hired in the Bay and moving later versus getting hired remotely from the beginning.
Note this is not accounting for stock appreciation. If stocks didn't go up you would just earn about $300-400k as a senior software engineer, with stock appreciation you can see $500k+.
I did what it said and got offers.
I've been looking for something like this. I'd rather read this crass/vulgar document than a 250 page books on algorithms and practice leetcode without a direction. This also seems to be full of insider knowledge and your review makes me feel much more positive towards it. Here's to making this year count.
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.
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.
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.
> I passed the interview to get hired as a Senior SWE
Maybe I'm unfamiliar with Google levels, but that sounds like a demotion from Director or Fellow. Did it feel that way?
https://www.glassdoor.com/Salary/AT-and-T-Technical-Director...
I work with someone in BD now who used to be the CEO of a company, so I don't feel too bad :).
And yet, I am sure it would take me 6 months to prep for these interviews (while employed full time). Yet everyone is throwing around "lol a month". Trying to figure out if you are all top 1% brilliant geniuses or completely, completely full of it.
As far as if I'm a genius or not - I think I'm pretty smart but think the same about lots of people I've worked with. I graduated with a 3.9 GPA at frankly a pretty easy school (Kent State), where I definitely was one of the top students in undergrad. I've definitely worked with smarter people at Google.
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.
I've encountered "practical" interview problems at various places also, esp. for frontend roles. But while not leetcode, many of them were things you still wouldn't code up in daily work - at least not serendipitously from scratch in 20-40 minutes with little to no references available.
My solution to this was...also grinding.
- Debug an issue in a library
- Balance bank accounts
- Design a scalable system, and discuss the trade offs
- Integrate with an API
The problems were extremely practical, but also not “dirty” (so not like where you are given something like a React project, and asked to build a website doing XYZ). It was more like “here is a general problem (let’s say, process scheduling algorithm for a hypothetical OS; not the problem i got, but similar in concept), here are the methods the class needs to implement. What are the approaches? Which one you would go with if you prioritized memory? What if we prioritized speed instead? Are there any other helpful methods that the class might need?”.
And it essentially boils down to conversational decision-making on implementing a feature that is very similar to how it is done in a real workplace, not as a leetcode problem at all. And yes, you still implement it in leetcode, but grinding leetcode will only help you with the very basics, and it can imo be totally passed without leetcode grind.
The non-coding interviews were also very well thought-out (in comparison to the typical FAANG process). Systems design was a delight, and the deep dive interview (where you pick a project you worked on before ahead of time, write a few sentences about it, and then when the interview comes you dive very deep into an aspect of it and get grilled with questions on it) was very meaningful and useful.
Overall, i can definitely recommend interviewing with Dropbox, and it was a very difficult decision for me to not take that offer, as I got extremely good vibe from both the people i interviewed with and the company overall.
I feel you, having the same issue with AirBnB myself. I got invited for an interview with them my senior year of college, but I had already signed another offer at that time, so I politely declined. It's been over 5 years since then, and I am yet to be able to get a single interview there, despite applying every year.
I want to work for 10 years then go back to my origin country and just live a simpler life.
I've had a couple friends at FAANG run the numbers that even with a cost adjustment they were ahead moving to states with no state income tax.
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.
Not a coder/dev, for what its worth.
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/
I think the grandparent comment isn’t claiming otherwise, which is why it essentially says [paraphrased] “if you are finishing college right now, internships are the most important factor in getting that full time offer when you graduate”.
- 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.
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.
- Start experimenting for happiness. I only in the last two years found out how incredible I feel stopping coffee at 1 PM and waking up before 6 AM.
- Financial independence can make you happier because not only does it give you more time it can also reward us by not needing to do things we don't want to do like house cleaning.
> 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.
You can do all of those while working at FANG. FANG is the best way to get peace of mind, you make lots of money for a modest amount of work so can focus on other things. If you get into a toxic team at Amazon then sure you trade stress and happiness for money, but the others aren't like that and are harder to get into for a reason.
The only reason to not care about this is if you love your job so much that you are sure you want to work all the time until you retire.
You make working for a large corporation sound like a religions experience.
I've worked in start ups my entire career, never once in 13 years did I worry about job security or financial issues in general, the market is just too good for competent software engineers.
The last one happened to have a very successful acquisition and now I still work at my startup (one of the lucky ones whose culture and working environment survive acquisition), but it's part of a larger fortune 100 company. Now I have a start up life, a FANG salary, and mission that doesn't include cramming ads in eyeballs or invading other's privacy and I can't help but to feel that my way was the best way.
This isn't to say that my way actually was the best way, but that calling out any single career path as "the best" seems likely to be wrong.
Having so much money you don't have to work is like a religious experience, it makes you revaluate life etc. Getting to that point without having to sacrifice anything is very valuable.
> Now I have a start up life, a FANG salary, and mission that doesn't include cramming ads in eyeballs or hording private data and I can't help to feel that my way was the best way.
Right, you got lucky. I went the reliable path where you get this every time. Start-ups is not a good way to get peace of mind, working 35 hours at FAANG is.
That certainly isn't widely true for Amazon or Facebook.
Also there are probably many smaller companies around with WLB similar to Google, just that they aren't as famous, no? It isn't like people use FAANG to literally just mean those 5 companies in these discussions, any company paying similarly works.
Your whole talk of "peace of mind" is misguided, as it means different things to different people, the whole point of my original comment that seems lost on you. Thus there is no "best" way to go about getting peace of mind. For instance, I'm working on technology that reduce herbicide usage in row crop farming by 50%, while being in FANG pay bands, that brings me peace of mind.
If you are perhaps in uncertain visa/citizenship position or it some sort of financial state that is precipitously close to ruin and absolutely require absolutely no risk, FANGS may represent the "peace of mind" that you are trying put them off as, otherwise, you are exaggerating the difference. And most people find happiness through their relationships with other people, the nature of their work and the lack of financial difficulty (which hardly requires a FANG).
At least to me work is inherently stressful and I can't get peace of mind as long as I have to go to a job. You seem to love working so to you it doesn't matter if you have money or not, but that isn't normal most people don't like working for other people.
So to me there is a huge difference between "lack of financial difficulties (if you work full time)" and "lack of financial difficulties (you don't need to work if you don't want to)".
-- Having a job where you don't go in every day thinking that today is when they will find a reason to fire me or get laid off.
-- Having a bit of surplus personal money (after retirement accounts are paid into, and other planned savings) is really good. It doesn't take much, and you don't really need extra income, just make sure your lifestyle matches slightly below your income.
-- Knowing you can survive for a while without a job, if needed.
To accomplish the above (without having to significantly increasing your income), make sure to avoid the trap of monthly payments as much as you can. Sure you can afford $800 a month on a car payment, but your emergency fund stretches much further if you buy a car with cash up front (or going no more than 3 years on a loan).
-- Take time for yourself. Don't leave vacation days unused. Take advantage of flex time without using vacation if you can (cutting out for a couple hours for a Dr appointment, etc). Take a couple Wednesdays off per month during the summer (5 weeks vacation gets you a 4-day work week every other week for the year, or take minimum time off in the winter, take a few 3-4 day weekends, periodically take a day off that you don't have "must-do" activities scheduled so you can do personal projects such as woodworking or gardening, etc).
This is what has kept me happy, and will continue to do so even if I have to work till I'm 65.
How do you judge what is important for you and what is like luxury which you don’t need right away ? I mean let’s say iPad is nice to have and would enjoy but it is not necessary or must have . But should I not buy something I don’t need to right now but save for future which is very random or unsure . I mean let’s say I been saving all long hoping to have a nice life after retirement but all of sudden I got hit by bus and thinking I should have enjoyed all things I wished sure rather than saving when on death bed . How to balance ?
I noticed that I'm happier now that I don't have payments going out for a lot of things (just mortgage and a car payment at the moment). I was looking into getting a motorhome, which I think we would really enjoy. But after thinking about it for the last couple years (and looking at industry quality issues), I figured that the maintenance plus depreciation totaled up to about twice what it would cost to do several 3-4 day weekend getaways at a nice resort every year.
As for buying things that will bring you joy, it isn't an all or nothing deal. Instead of getting the top-of-the-line tablet, see if a cheaper one would be 90% as good, and that leaves you money to get the watch also. On the other hand, if you cheap out too much on a purchase (say spend $300 on something that really doesn't bring you joy where the $800 item would), then you didn't save $500, you really wasted $300.
But the biggest rule I have is to not go into debt unless the payments are fairly close to what you would be paying out regardless. So buying a house (at least back before the prices got way out of control) would cost you close to the what you would be paying in rent, but you get to do so much more (extra rooms, yard, garage for tools and gear, etc). But putting a $3500 Macbook Pro M1 on a credit card that take you 5 years to pay off ends up causing you more stress than the joy that the purchase brought you (because the debt doesn't go down as easy as it goes up). Credit card debt is probably what put the most strain on my life over the previous couple decades (both personally and on my family, as I'd always be complaining about having to spend money on something).
The day I wiped out my credit card debt is the day I started feeling secure. It allowed me to go purchase a new car instead of driving a 15 year old vehicle that was starting to need monthly repairs, and the monthly payments on that didn't bother me because they fit in my budget while still having disposable income left over. Which allowed me to build up an emergency fund. Which now means I don't have to think about money if I want to go out and purchase that tablet, because I know it isn't going to add to my monthly debt payments. And if we want to take the kids to a water park resort for a 4-day weekend, again that is something that is budgeted for and not just thrown on a credit card to be paid off over the next few years.
Being poor is very stressful. I'm not advocating for that, of course.
In my personal experience money loses a ton of utility once you have adequate food, shelter and a book to read. Expensive objects or experiences can bring temporary joy, which is fine, but they rarely make a difference in daily contentment. I personally aim for the latter, which appears to be more influenced by the quality of our relationships and our capacity to look forward and enjoy the small victories: a smiling spouse, a cup of tea, a sleeping child.
I hope that answers your question. YMMV.
Thank you for sharing your perspective from someone who has done it. And congratulations on becoming financially independent! I feel you have shared a lot of wisdom in that one sentence. Life is now, not later.
It echoes what my brother-in-law told me when I blathered in our family WhatsApp about my (maybe) plan for 2022: "If this is driven by your friend's unexpected passing, then my suggestion is to live each day. Don't wait for retirement as life is too unpredictable. You should be able to live a good life while saving for retirement."
I'm still on the fence about grinding LeetCode to get into a FAANG or equivalent. However, I am rationalizing that even if I don't go for FAANG, getting familiar with LeetCode (even if not a grind that consumes my life) could still be an invaluable skill to hone as it would make those types of interviews less of a concern and more companies are adopting CodeSignal-type online assessments as their pre-screens.
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.
Congratulations on joining Microsoft several years ago! I like how you frame the benefits of practicing. I am totally with you on the showing up early for a flight. Pre-all those screenings, I once drove a family friend to the airport at 80-85+ mph speeds (never ever again!) so that they would barely catch their flight.