I've just landed a job at a FAANG company. Some random subjective comments based on my experience:
- it was hard work
- there was no way I could have passed these interviews without all the work.
- my past experience and education barely helped me for the interview
- it's not enough to be able to solve the problems, you need to be able to solve them on the spot, without much thinking, in an interview context
- I passed system design quite easily, even though I have little real-life experience with these systems. It would have been easy for interviewer to catch me off guard on real-life technical details, but they didn't care
- these companies (FB and Google) gave me a chance (even several ones), even though my resume is slightly atypical, and I'm on the older side (mid forties)
- Recruiters and interviewers were friendly and respectful. Overall they gave me a very good impression of these companies
- The whole process is very random
- I did learn some things while practicing. Not the best use of my time, but not totally lost either
- Algorithmic questions were harder at Google compared to Facebook
- The whole process was more fluid at FB (team-matching at google took forever, I was even ghosted by a recruiter after she told me I passed).
> - it's not enough to be able to solve the problems, you need to be able to solve them on the spot, without much thinking, in an interview context
Sounds like they're looking for assembly line programmers - crank out the code, pass it off, then on to the next piece of code without pause. This would be a nightmare for me. The high salaries and prestige of these companies definitely would not be worth it. I'm not neurotypical. I met an older man when younger who recognized this when he hired me so he left me alone. I worked at home and provided him programming solutions on my time schedule, which turned into millions of dollars for me and much more for him. I'm happy to let the fast programmers do the speed programming.
It's because when companies get that big and famous they no longer need that many creative individual thinkers, they need obedient drones. With disproportionately large numbers of applicants they get, they are able to make you jump through all the hoops they put in front of you, because if you won't there are thousands of others who will.
Plus the prestige of being able to walk into your next job and captain the ship. I've been at a few places that hired former Googlers, and they were all treated like gods.
It used to mean something more than it does now. I noticed ex-Googlers were well above average in 2012, now they can be below avg. I have a colleague of mine at my current job that makes a point of being an ex-Googler but they only worked there for 6 months, so it is kind of meaningless.
It's always been a distribution. Some are amazing, some are normal, others are less than normal. They're all really good at the handful of things Google screens for, but otherwise it's just like any other distribution of developers.
As a hiring manager I view Google on someone's resume as a non-signal. If however they are the sort of person who draws attention to having worked at Google I view that as a negative signal.
Global average or people-who-work-at-FAANG average?
The frame of reference here is important, otherwise average is pretty meaningless since we have no objective list of what an average developer consists of.
Is that really true? I've interviewed ex-FAANG employees at some jobs and there was never any pressure to hire them, and I didn't feel like any one of them would be treated as a god if hired. They were pretty universally above average though.
They were also not "walking in to captain" anything. They were applying for standard engineering jobs. Think of an average individual-contributor software engineer from, say, Facebook. Is a smaller company really going to hire them as Director Of Engineering (a totally different job than software engineering), just because of the company name on the resume? That sounds absurd.
The amount of osmosis learning of how things should be that comes from working somewhere that things were that way is hard to explain. The density of good ideas you get exposed to has a huge effect, even if you aren't in leadership. It also doesn't necessarily come across in interviews, it's reflexes you might not realize you have.
I was very skeptical about this, then I worked for one. Now I get it.
I'm not in a leading role but I did "impactful" things like introduce CI to a company. I'm not sure that it matters what position you have, because if you are the first one doing something you actually get to do a lot of decision making.
And really only an expert in the things that FAANG companies do. Granted for a place like Amazon that's potentially a very broad space, but it's still a small slice of skills compared to the world where software is ubiquitous. Among other things, zero preparation for safety-critical software. An attitude like "move fast and break things" would end up being "move fast and kill people", and that's kind of a drag on your career. (Insert long discussion about trolly problem and how self-driving car researchers are justifying their crappy algorithms)
Not my thing personally (at least not today). I could buy a lot more toys and BS and retire earlier if I took one of those jobs, but my already generous (not by FAANG standards) programmer salary is enough and it comes along with a sane schedule and reasonable work expectations. The value in this is I get more time outside of work to enjoy my life, which is worth more than an extra pile of lucre when I already get by pretty comfortably.
I don't know where this misguided implication comes from that FAANG doesn't have a sane schedule or reasonable work expectations. The people that work a lot do so because they're some of the most passionate in the industry and enjoy working a lot as a result. On average, I would speculate FAANG is less stressful and more reasonable than other companies. The reason you may think that is not the case is that negative stories stick to the same "brand" (i.e. "FAANG") that employees hundreds of thousands of people whereas a story about a random mom'n'pop shop doesn't register on your radar because there are many of them.
I would describe FAANG (in my and many friends' experiences) as "adult daycare." Not in a bad way, mind you, but very much "get your homework done and go have your free time after." (This excludes higher management and architects, etc., of course. I mean this as a middle-of-the-road SWE on a decent team.)
I'm not quite sure where the GP got stressful, but it is soul-sucking if you expect your work to be interesting, impactful, and creative, which doesn't really happen apart from a few core or research teams. There is a ton of piping and rewriting of frameworks going on all the time, even when it need not be extremely useful. This is the main reason I found it thoroughly drab—even though it is likely that the lines of code I wrote there are likely to touch many orders of magnitude more people than anything else I ever work on for the rest of my life.
I fully agree. It is soul-sucking at times, but nowhere near as soul-sucking as the life I came from and I will never stop being grateful for that. If I want more excitement from working, I can always pick up the exact work of my personal interest on the side (but I don't, because there are so many other interesting things to do outside of software). I'd rather have great security and quality of life from the work that puts a roof over my head.
Absolutely! There's a kind of beautiful freedom about it, too.
A number of people (myself included) seek to align work and passion all in one, which is fine, except it's certainly not the only (or, indeed, even close to "best") way to live and work. I've been lucky because my passion is in a field that now actually has applications in both theory and practice, after 50-or-so years of lying in relative academic obscurity.
The point is: if you care primarily about things that aren't your work (and this is true for literally 99.9% of people in the world, and is probably much healthier than the alternative) then FAANG is phenomenal in every possible way. The perks, compensation, and freedom to do pretty much anything are incredible. Quant (which nets around the same, if not slightly more profit) certainly does not fall in this category, due to its insane hours, and most other jobs with sane hours and good work-life balance don't pay nearly (read: really even close to) as much, or aren't as secure, or have anywhere close to the perks. It really is about the best gig you can get, if you can swing it.
On the other hand, for the weird, obsessive .1% of people (e.g., me) who would be happy to work all day in their mother's basement so long as it's interesting work, then FAANG (or, at least, many teams within it) can feel almost beside the point. Which is also fine!
I guess the point is that it all depends on what you want out of work and out of, well, not-work!
This comment chain is well said. There are more likely to be various random events that screw you over or suddenly put extra pressure on you at smaller companies, not to mention the lack of perks and compensation. Recently an analogy that I've come up with is index fund investing: Sure one can attempt all sorts of creative investment combinations/maneuvers, and sometimes they do make it big, but in the end, the most reliable and care-free way to grow your wealth is simply to follow the mainstream advice and go for the index funds, even though they "sound" boring af. They are recommended by the mainstream for a reason just like how people flock to big tech companies for a reason (at least this still applies in our current day and age). I've had some alternative ideas about my career with various excuses (e.g. I'd only work with a functional language), but increasingly I realize that I should probably just quit all the tossing around and go for such a path instead. It's similar with my investments: Had I not performed various stupid active trades here and there and just put my money into the index funds, or even just parked my money in cryptocurrency and held on to them, I would have got amazing, carefree returns.
Feels to me there are a lot of stereotypes and misconceptions about FAANG floating around in this thread, which I guess is not exactly surprising given the type of post this is (criticism of the "broken" interview process). It almost feels like some people find excuses to not even try, or have some sort of sour grape mentality/avert their eyes from the issue, if they feel themselves unlikely to pass the interview, even though they haven't spent the time required to master the algorithms questions at all. (Of course, there might also be people who simply find it quite hard to find such time, as mentioned in the article, which is understandable.)
My understanding is that those companies themselves also freely acknowledge that interviewing is hard. Due to the sheer volume of applicants, fast algorithms questions is the most reasonable compromise they can find at the moment. If you were in the position of the interviewer, it would also be hard for you to come up with an alternative that works for all sides involved. So instead of complaining about this reality, one needs to face up to the challenge.
It is actually a paradox: You seem to be unfree and doing something pointless when you were grinding interview questions. But after you've made it, it would suddenly be very easy for you to have a lot of freedom and security in your life with all the capital you have accumulated. In a sense it's like how college entrance exams work. It's unfortunate but again, if no better practical solution could be found at the moment, one just has to face the reality and do it. It could even be fun. Talking about "ideals" wouldn't get you anywhere in the real world.
Regarding work-life balance, perks and life quality, just as the comments who replied to you pointed out, working for big tech is most likely one of the best options you can have out there, compared to many smaller-scale companies.
The one valid thing I think you may get by not working for FAANG is complete freedom in shaping what you're working on. However this is hard anywhere unless you're the founder/executive of the company yourself. If that's what you're after and you have the safety to pursue it, sure. However, in terms of working as a common employee, there are very few possible reasons why a place could be better than big tech.
Well, there are also counter-examples to your thinking. Brian Acton was rejected by Facebook, then went on founding WhatsApp and eventually selling it to the same Facebook for $19B. "Life altering amount of money", wouldn't you agree? Probably one of the most expensive rejections in history.
That's an extremely, extremely, extremely, unlikely edge case though. You're more likely to get simultaneous offers from all the letters in FAANG while also simultaneously becoming a 1MM+ subscriber Youtube star than you are of repeating Brian's story (or even a fraction of it).
well there is the story of when Google acquired youtube at the all-hands meeting the CTO addressed the engineering department and asked them how many of them had been rejected by google, and half of the people there shot their hands up. Probably they had a better windfall, and "Google could have saved more than a few billion"
On a similar vein, I recall a story that said most Googlers thought they probably wouldn't pass the technical interview if they had to go through it again. Does match with what my friends who made it into FAANG say as well - none of them are confident they'd be able to do it again with any certainty.
There's a story, mentioned many times here on HN, where Google (I think) hiring team were given their own anonymized CVs and they rejected all of them. It's a perfect example to describe the staggering level of hypocrisy at those companies.
I think a major take away here is the interviewers weed out ppl who don't know complex algorithms off the top of their head but you don't really need that to make a successful app anyhow.
Or, with the crazy amount of applicants they get, it’s very hard to come up with an alternative process e.g. pair programming for a day like what some small companies can afford to. They have to be able to do interviews efficiently.
Interview is hard. A while ago there was a post by Jane Street that explicitly emphasized this point. They also require algorithms questions even though programmers there write a lot of OCaml. I guess if you were in the position of the interviewer it would also be hard for you to come up with alternatives that are much better for all sides involved.
I think what is required for the interviews is very different than the actual work you do once you are hired. It 's also very team dependent.
The reason why you're expected to be fast during the interviews is that you're competing with people who are fast (either because they are smart, or because they've practiced a lot).
That being said, this type of interviews is clearly not for everyone. There are tons of skilled people who (for good reasons) don't want to play that game, and there'll always be a market for them.
> I think what is required for the interviews is very different than the actual work you do once you are hired
I'm sure that's true once you achieve seniority. I'd wager that the first couple of years, at least, you're not solving problems, but implementing solutions designed by higher ups. You need to do this fast to be useful.
I'm in the interviewer pool at Google. Other FAANGs might be different.
I've had candidates ask me why we do this, and my answer is that once you're in the company, transferring to another job on the same ladder is fairly trivial and requires no technical re-interviews.
I go on to describe how I've been around for 10 years and am on my 5th team. None of those transfers required any sort of technical re-check. Teams trust me when I say what my abilities are.
Sometimes they'll look at past CLs, and we certainly have a couple interviews to make sure that the fit is good, but nothing technical.
In none of my positions has it been "crank out the code, pass it off, then on to the next piece". There has always been a clear sense of ownership of my code, where I've been responsible for both the code and a steward of where and how it's used and modified.
I’m not sure how unique that is, though. Most companies once you’re in doing technical, your peers will trust you to switch teams or broaden out a little. Re-testing a coworker would come off anywhere between amusing and insulting.
At larger companies I've worked at without central hiring committees it was common to get re-interviewed unless you were vouched for by someone pretty senior.
I don't doubt that you're required to maintain your own code after you've checked it in for others to use ("pass it off") but have you always designed your own solution or have you had to implement designs by higher ups for some not insignificant percentage of the time?
I've never been given a design doc to implement (though I prefer to code, so sometimes I wish I had). I've always been expected to do the research and figure out the design for myself. Sometimes I ask people to fill in parts of a design doc that I know they'll be implementing. This ensures they are aware of the design, it's correct, I haven't missed some critical details, and they have essentially written the design for their own work.
Occasionally I've had a design review where a higher-up has said "this is why we aren't going to do it that way". I've always been given a reasonable reason (not always one I agree with, but reasonable). I've always been the one to re-write the design in these cases.
not OP, but currently a manager at Google (full disclosure, opinions are my own, company is not involved, etc)
I fully expect that everybody at Google will create the designs for the problems they own, get the designs through peer review, work on implementing these designs, and verify that the solution is solved in process.
What changes with the seniority level is the scope of the designs - a junior may be expected to design their piece of code, only their module, a mid level is expected to design an entire subsystem while delegating individual modules, a senior is expected to design an entire system delegating the subsystems, etc. Of course, it's not so clear cut all the time, but the critical piece we have here is that - Everybody, at all levels, are expected to share expertise, knowledge and acumen in order to help others grow. When you put everything together it creates a nice cycle of constant growth pressure.
Absolutly I will not qualify anybody's work here as "droning", and if someone in my team would feel like that I would invite them to speak up and work together into making it better.
About the quality of people here, what has impressed me most is the uniform high level of competence and niceness. In other companies where I've worked the skills would more-or-less all over the place, but here it's uniform good. I'd rate Googlers consistently in top 20% of the teams where I've worked with before. Also everybody is so very nice, a real pleasure to be around and work together. I still haven't discovered how recruiting selects for this, but everybody constantly passes the airport test my in book.
That's not it - it's that interviewers set problems that they already know how to solve. They forget how hard it is to solve new problems on the spot in an interview setting.
In my experience technical interview questions are usually way harder than they need to be. I don't agree with getting rid of HackerRank style filters entirely because they save you a ton of time with candidates who just can't code at all (or candidates that think they aren't applying for a coding job). But the questions should definitely err on the easy side.
As an ex-Googler who's done a fair bit of interviewing, my bar for "will I use this coding question" is to look at the problem statement, do a from-fresh implementation in a suitable language, and if it took me more than 7 minutes, it is not suitable for a 45-minute interview slot (I would expect the candidate to have a solution in ~20 minutes, then maybe 10 minutes of follow-up questions, then flip to "do you have any questions for me").
I thus gave the candidates roughly three times longer than I needed to solve the problem myself, which should pretty much account for the interview situation.
"The key point here is our programmers are Googlers, they're not researchers. They're typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They're not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt."
Rob Pike [1]
"It must be familiar, roughly C-like. Programmers working at Google are early in their careers and are most familiar with procedural languages, particularly from the C family. The need to get programmers productive quickly in a new language means that the language cannot be too radical."
This sort of "programming language designed for people we apparently have a very low opinion of" approach also greatly informed the design of Java, though Java has spent the last 20 years slowly retreating from it. It looks like Go might be following the same path; it's apparently getting generics at some point!
Can you imagine how many times Google was burned by junior devs writing C++ no matter how smart they were? Memory bugs at Google scale must be expensive. They had to come up with Go.
At scale, it might be hard to do that, however this doesn't address the key problem. One of the hallmarks of good engineering is to add technical safeguards, rather than relying solely on Smart People.
It would be comical to hear, "Hire better pilots" as an alternative to building parachutes, or fly-by-wire systems.
Every one makes mistakes. This is why we have tests, linting, code review. Our choice of tools that we use (or, in this case, create) reflect our engineering needs as well. The goal is not just to hire Smart People, but to make it _hard for people to make critical errors_. At Google's scale, I can completely understand why they might feel that developing a new tool was the best way to prevent a core set of problems.
> This is why we have tests, linting, code review.
None of which is related to using a dumbed-down language.
> At Google's scale, I can completely understand why they might feel that developing a new tool was the best way to prevent a core set of problems.
There's plenty of research around software reliability and on the sources of bugs across different languages.
Research shows that verbose languages e.g. Java don't have lower bug rates or better maintainability than expressive languages like Python.
Dumbing down a language, reducing expressiveness and introducing boilerplate does not help. If anything, it removes the attention of the developers from the core aspects of an application.
Tests, linting, and code review are all tools that we use to find mistakes before they get into production code.
A "dumbed-down" language is a tool that prevents one from being able to write certain classes of errors (e.g. some of the footguns from C).
Changing the language doesn't mean you make less mistakes, but it means that you make different kind of mistakes. I'm rather unlikely to make an error related to memory allocation in Python or Java, for example.
I know C++ and I know Rust is growing because of memory problems in C++ code. I would agree with this statement "It requires years of experience and great discipline to avoid errors in C++" from this article https://www.toptal.com/c-plus-plus/top-10-common-c-plus-plus...
Eh, I've always seen this as the counterpart of the old meme that there are no bad languages, only bad programmers.
He's not going to get many C programmers to adopt his language if he gets on stage and announces C is a crap language and anyone who thinks their code doesn't have memory bugs just hasn't found them yet. Is this asshole saying I'm bad at my job?
On the other hand, if he says that of course you, dear reader, have never coded a bug in your life - it's other programmers who do that, and this new language will help you collaborate with those poor unfortunates? That's an easier pill to swallow.
But an 'assembly line', line-of-business programmer has almost no need to solve algorithmic problems. Why would they test that if that's what they needed?
>The tests are therefore all about excluding candidates rather than identifying brilliant young mavericks with potential.
The author assumes that companies want mavericks. Maybe the FAANGs and other high tech firms still search for a few innovators, but wouldn’t they look at other networks besides the typical interview process to identify these candidates?
We are living in an age of developer commoditization, and for many large tech companies the army of assembly line programmers can churn through enough peripheral work at the right price.
> Sounds like they're looking for assembly line programmers
Feels to me there are a lot of stereotypes and misconceptions about FAANG floating around in this thread, which I guess is not exactly surprising given the type of post this is (criticism of the "broken" interview process).
In your case it's more understandable if you wouldn't like working a conventional job, since you mentioned you're not neurotypical (though I guess you would most likely find work at most smaller software shops even more suffocating).
However, for the majority of commentators, it almost feels like some people find excuses to not even try, or have some sort of sour grape mentality/avert their eyes from the issue, if they feel themselves unlikely to pass the interview, even though they haven't spent the time required to master the algorithms questions at all. (Of course, there might also be people who simply find it quite hard to find such time, as mentioned in the article, which is understandable.)
My understanding is that those companies themselves also freely acknowledge that interviewing is hard. Due to the sheer volume of applicants, fast algorithms questions is the most reasonable compromise they can find at the moment. If you were in the position of the interviewer, it would also be hard for you to come up with an alternative that works for all sides involved. So instead of complaining about this reality, one needs to face up to the challenge.
I would conjecture that most lower-paying "programming" jobs, e.g. writing enterprise Java, are much much more "assembly line" and "soul-sucking" than jobs at top-notch tech companies, which should offer a decent amount of creativity and freedom for one as an ordinary employee.
It is actually a paradox: You seem to be unfree and doing something pointless when you were grinding interview questions. But after you've made it, it would suddenly be very easy for you to have a lot of freedom and security in your life with all the capital you have accumulated. In a sense it's like how college entrance exams work. It's unfortunate but again, if no better practical solution could be found at the moment, one just has to face the reality and do it. It could even be fun. Talking about "ideals" wouldn't get you anywhere in the real world.
The one valid thing I think you may get by not working for FAANG is complete freedom in shaping what you're working on. However this is hard anywhere unless you're the founder/executive of the company yourself. If that's what you're after and you have the safety to pursue it, sure. However, in terms of working as an ordinary employee, there are very few possible reasons why a place could be better than big tech.
One big problem is that companies (especially FAANG) are wasting time having very senior devs do Leetcode-style shit, which is a false negative for people that don't balance binary trees and manually regex strings all day. This especially penalizes more experienced / older devs who don't have time to LC grind (of which I'm also one), and introduces unconscious selection bias.
Certainly there are other ways to verify someone can code: code samples, talking through high level language concepts, reviewing existing code, etc.
What people should be focusing on is this - 1) Do you understand enough systems architecture / code techniques to succeed at this particular company? This can be done via mostly talking. 2) Do you have experience that will help us with our company-specific problems? Give them an actual problem you regularly deal with, and get them to attack it.
it's impossible that they don't know about it. the more i think about it, it's that they're either lazy or want to select for age but obviously can't do that in an overt way, so they pick a tool that nobody with a family has time to grind (i.e. 'old' people)
Your comment inspired me to ask a question I've had for a while. My background is not CS, it's computer engineering. So I didn't have any education in the fancy algorithms that you'll find in these interviews. Is that expected or did I miss something?
Depends on how much CS you were exposed to, I guess? Leetcode problems generally involve: DFS/BFS search, memoization, dynamic programming, various types of sorting, hash tables, etc... all baked into annoying edge-case-y problems that are difficult to rapidly solve under a timer when someone's staring at you.
Vast experience in compilers, embedded systems, functional languages, graphics, dev ops, or cloud technologies will be of no use. (Perhaps it will be later, if you get to a systems arch interview step.)
I also went to school for CE and although we did have some algorithmic and data structures classes, I don't think they were as in-depth as the CS curriculum.
For example, the only time I ever encountered red-black trees was in the context of prepping for software interviews.
I have the same background and I think you either missed something, or your degree was much more EE focused. I had the required data structures + algorithms classes as part of my computer engineering curriculum
A lot of CE degrees are EE with just the barest veneer of software to meet ABET requirements.
Mine had data structures and software engineering as CE-specific requirements (along with a dash of microarchitecture and HDL/FPGA stuff), the CS algorithms course was an elective that obviously gave priority to CS majors.
Beyond that, we had a department head that really only cared about shoving as many EEs as possible into the PG&E hiring pipeline.
Compared to software creating a circuit design is a complete nightmare. With software you can get away with a lot of shady things but in EE every tiny detail can matter. You can do very simple PCBs as a hobbyist but it won't even compare to what the professionals are capable of doing. In software we have hobbyists creating extremely important libraries that are used by millions of people.
Re-posting a suggestion I made here a few weeks back:
Here's a radical idea (read to the end before you object). The inspiration is a blend of how open source projects recruit developers, and how the 20% Google side-projects used to work.
I work for company A, I'm starting to get slightly bored or interested in doing something else. Without quitting my job, I contribute a few days of code to company B, whose project I find interesting. As I contribute more to company B, I eventually quit company A and join company B full-time.
Benefits of this approach: no interviews. Know what you are getting into. Try different things and what works for you.
How can we make this work: legal framework. California, if you are listening, pass a safe-harbor law that prevents companies from exclusive work arrangements, so I can always do a side-gig with company B even if they are competitors. Have company B compensate me, so we don't end up in a situation where company B is abusing job seekers by getting free work done. Maybe a law could say that I'm safe as long as my work for company B while employed by company A doesn't exceed 5% of my salary or so (so I worked for company B for a few days or weeks, not months).
Would that work?
This is a key insight that people need to understand.
In a 20 year career I've only ever been on the market once (in 2017), and I saw it as a huge opportunity to join the best possible company. I did over a dozen on-sites, and every single one of them was 5 hours plus, sometimes multiple, w/ take homes or phone screens additionally. The results were shockingly random in terms of many different factors ranging from familiarity and fluency with the class of problem, to the style of the interviewer, to the order of the interviews and how exhausted I was by the end. The outcomes in terms of offer/no-offer also bore little relation to my perception of how the interview went.
I think this doesn't sit well with people (especially technical people) because they want things objective and fair. However standardizing process and addressing biases only gets you so far because at the end of the day interviewers and candidates are all unique. Success in a role is highly dependent on context that one operates in.
Honestly I don't think the hand-wringing helps anyone. At the end of the day you have to just play the game. Hopefully companies continue to employee a variety of different interview techniques, because they all have different biases and so the best thing is just to ensure a diversity of techniques so everyone can find their place.
This process is all theater. We really need some kind of certification process instead.
I'm a while out of school and one interview I went on had a requirement for a live coding session. The ask was to implement red/black trees from scratch despite the fact that they have an Angular app with MySQL on the backend. I took this as a blessing. I don't want to work at a place where they think this is a good way to hire people.
A certification exam wouldn’t survive a disparate impact challenge. Google stopped asking for SAT/ACT scores long before universities did. And long before that (according to my father, who actually used them), telegram companies had to stop giving spelling tests to telegraph operator applicants. Add to that difficulties with preventing cheating during a pandemic, and I see no alternative to rolling your own live examination. (Not that I’m defending the often dumb choice of trick tree recursion coding problems; I didn’t learn a lot about a candidate by watching him not get the trick.)
As an employer and not an academic institution, Google wasn't exactly visionary in ending requests for SAT/ACT scores, since virtually no other employer asks for them. Also, I interviewed w/ Google in ~2018, they still asked for my college transcripts even though I had been working in industry. So they still haven't fully shed their desire to academically successful people.
Just have the certification system be leetcoding on a whiteboard so the interviees need only pass it once rather than all the times for each FAANG, unicorn, and wannabe unicorn-FAANG startup that mandate such questions.
Because just like how interviewing is gamed now by leetcoding, certification exams will also be gamed by some other phenomenon like 'certcoding'. There are plenty of certification programs floating around already, not to mention the coding bootcamps which behave something along those lines. Ultimately, it boils down to who plays the game better, be it interviewing process or certification exams.
At the very least, it would be nice if all the companies that want to use this standard could get together and design a certification that they all accept. If we could cut the length of interviews down by removing the leetcode portion it would save countless hours of both candidate and interviewer time.
Well, now that you've started working. Have you actually applied any of it ?
To make an analogy, I'm always perplexed at how you're asked to build an EPR on the spot and then all you do is general electricity mundane work. I've seen a lot of EPR builder beeing incapable of simple wiring ...
If you don't mind sharing, where do you learn/read-up about the system design questions? I am not a software architect although I designed and built small modules/libraries of my own, but I don't think it's sufficient to learn about system design questions found in interviews (not just FAANG's).
A great starting point is "designing data-intensive applications". Then you can read about various designs here and there.
But you don't need to go that very deep. What they ask is very specific and (unfortunately) you're better off going through 10-20 typical interview questions and their solutions.
Typical questions are "how would you design Google News/Twitter/...". There are many resources available, all of this is discussed on leetcode or interview preparation sites.
It's not hard, but I'd recommend to prepare for this well-before your interviews.
Most of the interviewers were in their 20/30s and so is everybody on their "career" web pages and presentation documents. However, in the team I'll join, at least two people are about my age or older.
What I can tell is that never in the recruiting process did I feel discriminated against. Once you're in the loop, their main concern seems to be how well you perform in the interviews. I feel I was at a slight disadvantage compared to to my younger self in term of thinking speed for the algorithmic questions but this can be compensated by a better preparation.
EDIT: not sure why you're down-voted. Ageism is a thing and a legitimate source of concern.
EDIT: not sure why you're down-voted. Ageism is a thing and a legitimate source of concern.
There’s some folks here who REALLY don’t like talking about true ways our industry can fail and in some cases has failed at being decent and fair and ethical to people of protected classes, or just in general.
I think it's generally what he said. We age in one or two ways - get old and decrepit, or get overwhelming experience/skill which is tremendously useful. The first scares people and a lot do assume it's just the first part - maybe they think I am unaware of the second.
Thanks for your reply! For full context, I am older too, that's why I asked.
Oh I grokked it ;) but I felt very it needed a very fine and hyper-specific point to it because I'm older too, I also happen to be a racial minority, and it's a frustrating and sore point of mine-the way these topics sometimes (though in my honest opinion: far too often) get blunted and watered down so that whomever can avoid the uncomfortable sensation of staring a reality they don't suffer from, but might (operative word: might) be an unwitting participant of in the maw.
Let it be said now that your eyes are on this line, dear readers: that's not me suggesting or intimating that the person I replied to above is doing this. They're not. But it is a trend that some would be more than happy to pretend doesn't exist because they haven't had a reason to tune their cognitive receivers into the broadcast frequency people like me are sensitive to and have been bombarded with for far longer, with far worse outcomes.
Once they decide to go through the process, you'll be treated equally, however, the process itself is biased against folks who have other life goals, like raising families, who otherwise don't have the time to do competitive leetcode in their free time, but would make great employees.
Curious if any FAANG employees know if this kind of thing is still standard above a certain level, or does say "staff" level and above tend to be internal promotions only?
I guess the pay is phenomenal but I have a hard time imagining that this kind of algorithmic trivia approach makes any sense at all for hiring into senior roles. Especially if someone was trying to move laterally between FAANGs.
Google, at least, does the same style of interview for Senior and Staff positions as they do for entry level. It's just that the expectations are obviously different.
This is dumbfounding. Kinda tells you what kind of shit-eating devs they're looking for. What staff-level engineer possessing even a modicum of self respect would willingly subject themselves to this?
I've long been opposed to the Leetcode battery interview processes, to the point that I started asking FAANG recruiters that several years ago, and saying that was a showstopper for me, like a signal for how they treated people. Though I otherwise wanted to work at a couple of them.
After consulting levels.fyi, however, I've revised my opinion: if an employer is willing to pay a higher-level software engineer 2x the total comp they'd make most other places... whatever interview process they want suddenly becomes a rich and honored cultural tradition, to be treasured, and approached with the utmost reverence and humility. :)
That said, for people who've frittered away their discretionary time on things like open source, hobbies, family, etc., rather than drilling for FAANG interviews, the well-known "test prep" commitment for Leetcode-oriented companies is a barrier to even applying there.
"That said, for people who've frittered away their discretionary time on things like open source, hobbies, family, etc., rather than drilling for FAANG interviews, the well-known "test prep" commitment for Leetcode-oriented companies is a barrier to even applying there."
Salary aside - this is the truth right here. I interviewed at a few FAANGs and I didn't have what Id call a good experience. Neither resulted in an offer. To even prepare for them was a monumental time investment. I tried it and now I can have an informed opinion on the subject. Id rather have a life than drill for random interview questions.
Side note: I have yet to personally hear or read anything about why its so great to work at one of these places where someone DOES NOT mention the money. Frankly, were it not for the money Id have never even considered interviewing at these places at all. I have come to the opinion that if it's just money, there are other more tangible ways to invest my time that will result in money. Drilling For Interviews as a money accumulation seems to me a bit like heading to the casino on the 28th of the month because you're short a few bucks for rent.
Agreed. I kinda wish the FAANGs paid less, and had to appeal to people solely on positive impact, kinds of work people can do, work environment and how people are treated, etc. Adding "oh yeah, and you make more money here" complicates.
The big G, for example, already seemed like the place to go, as soon as they launched the early site (the company was obviously smarter than most of what was going on), and there was also the "don't be evil" that resonated with a lot of the prevailing sentiment among the pre-Web Internet-savvy techies. Though I suppose there might've already been a money factor from the start (it seemed like most people were crunching hard at work, but also prone to job-hopping for the hottest IPO lottery ticket at the moment), but it wasn't as clear as today.
I had a gig as contractor at one of FAANGs (they needed expertise that they didn't posses).
Money aside, after you remove from equation fleet of leetcoders there is a bunch of smart people over there that work on solving various interesting and challenging problems.
It's great place to learn on how problems (especially in scaling of various infrastructure systems on global level) are solved and also how things shouldn't be done :)
Thanks, I tried to give an objective assessment but I'm certainly a bit biased because it eventually worked out well for me (luck being a factor).
But I understand that people who invested a lot of time (and sometimes money) on their preparation feel extremely bitter if it didn't pay out in the end. It's also unfair that some candidates (especially some who have a family or not much time off) simply may not have the time for this.
> - it's not enough to be able to solve the problems, you need to be able to solve them on the spot, without much thinking, in an interview context
So true. It's not enough to write some approach that's better than brute force. We need to write the best possible method. And sometimes interviewers do not encourage methods that are not on their mind.
- it was hard work
- there was no way I could have passed these interviews without all the work.
- my past experience and education barely helped me for the interview
- it's not enough to be able to solve the problems, you need to be able to solve them on the spot, without much thinking, in an interview context
- I passed system design quite easily, even though I have little real-life experience with these systems. It would have been easy for interviewer to catch me off guard on real-life technical details, but they didn't care
- these companies (FB and Google) gave me a chance (even several ones), even though my resume is slightly atypical, and I'm on the older side (mid forties)
- Recruiters and interviewers were friendly and respectful. Overall they gave me a very good impression of these companies
- The whole process is very random
- I did learn some things while practicing. Not the best use of my time, but not totally lost either
- Algorithmic questions were harder at Google compared to Facebook
- The whole process was more fluid at FB (team-matching at google took forever, I was even ghosted by a recruiter after she told me I passed).