More likely that you've drank the kool aid that you are somehow special and smarter for working at a FANG...
OP might be smarter than me, who knows. I don't really care, I feel pretty good about my intelligence level even though I know there are plenty of folks smarter than me out there.
What I am is annoyed at the elitism that OP shows. I work at a FANG, have worked at a couple SV unicorns too. There is plenty of work happening here that is not as challenging as OP makes it out to be. I've seen a lot of people with the attitude OP has and I think it makes for a toxic and unwelcoming environment.
As someone who has used complex algorithms research in my work, I agree white boarding has some carryover to some FANG work. But my experience is that there is vastly more boring CRUD work to do and you must generally fight with others to get the interesting/challenging algorithmics work. No need to filter out a ton of qualified people because they can't perform a tiny fraction of the work happening here.
> vastly more boring CRUD work
I don't do CRUD work and no one even close to my group does that. Are you a web programmer by chance? We work on systems software. If you've dealt with that I think you might agree that there isn't a lot of grunt work involved. Maybe when it comes to writing some tests but even then it can be fairly technical and require a lot of systems-level knowledge.
FWIW, I'm not saying I'm personally smarter than anyone. I got lucky and got a job working with the smartest, most dedicated and focused people I have ever met in decades of work. They're smart, and working with them requires some combination of extreme personal sacrifice, intense focus, and a deep and wide knowledge of software, hardware, CS theory and language issues.
1. Is upset
2. Interpreted the parent comment as being smarter than OP
Serious question: where did you infer these things from?
Nobody is going to write such a rant if they're not upset.
>> Typical FANG employee... Hates whiteboard interviews until they get into FANG, then thinks that anyone outside of FANG is actually delusional about their skills and must whiteboard to prove themselves worthy of handling the incredibly challenging world which is FANG- engineering.
> Interpreted the parent comment as being smarter than OP
>> More likely that you've drank the kool aid that you are somehow special and smarter for working at a FANG...
???
Because the most common say to day issue is needing to think of an algorithm on the spot...
You hate it because you know that's not true. Yet you're using it.
-Depth first search
-Binary Search
-Topological Sort
-Dynamic programming in a graph context
-Union Find
-Merkle Trees
-Fenwick (binary indexed) trees
Maybe I'm in an unusually technical area but it doesn't feel that way talking to my colleagues.
But out of all those algorithms how many could you regurgitate onto a whiteboard given 5 minutes to do so?
Knowing the use of each algorithm is good enough. You don't need to know the implementation until you want to use it. And nowhere in your day to day work is this going to be with no internet access or reference.
So why do interviewers suggest this is the case? Why aren't they just happy with you describing how a Merkle Tree can solve a particular issue. Why do you need to write that down?
Is your view of programming that good programmers spend the majority of their time writing boilerplate code or doing grunt work?
My view isn't that good programmers spend the majority of their time writing boilerplate code. But my view also isn't that the average programmer _isn't_ doing that.
I'd expect way more demonstrated knowledge for an interview in a higher level role than an mid level developer role. But the higher you go the less you actually need to demonstrate that. Why?
Are you trolling? Everything that you do as an engineer is coming up with an algorithm.
Algorithm is how you solve a problem, how you think about constraints and requirements.
There's plenty of algorithms I know and I can see relevant business contexts to use them in. Do I know all of their implementations off the top of my head to regurgitate onto a whiteboard? No, because I don't need to. When the time comes I will just look that up. The easy part is the implementation. This isn't a school exam testing your memory.
All the FAANG interviews I had were about some leetcode problem where you had to be familiar and use some algorithm, not write it from scratch.
That's a big IF.
My experience with FAANGS is that their bar is universal. Even if you're going to a team which somehow won't require solving hard problems collaboratively under pressure, ability to do so is the bar for working at the company.
As the person you're replying to says, they use the interview style that gives them signal about this. And in general, unless one work at a FAANG and understands the roles, how does one think they have the correct perspective on how FAANG ought to be hiring for their roles?
From an efficiency standpoint, it is probably a lot cheaper to hire smarter users of those libraries than to ensure all new libraries can be used by less smart engineers. Especially since many smart engineers who can write great libraries doesn't necessarily have the ability to document those libraries well, so by removing the need for great documentation they can get a ton of such engineers that other companies with lots of mediocre engineers cannot find a good use for.
That said, I understand that in the interest of fairness and allowing equitable access to the highly lucrative RSUs, it's important to give interviews equally rigorous to candidates for the AdWords team as those who end up pushing protobufs all day.
We don't have a lot of glue code because we don't glue things together. We write the things other people glue together. That's why this is fundamentally different than 90% of anything I've ever done.
I also don't mean to say that all FANG work is like this. I could see some roles at, say, Google working on Android where it very much would be the kind of gluey work I've done before.
Previous to this job I laughed at the goofy CS questions asked in interviews. "I've been doing this 30 years and never needed A* or a graph algorithm." I have to retract that statement now. Not that the modern coding interview isn't a little overdone, but there is a point to it.
There's also the question of dedication. When you work on a very driven team you have to show a similar level of drive or you're just going to get burnt. I'm not saying the level of work/life balance is fair or the way it should be, but it's the way it is and it has taken me quite a bit to get used to. It's a toxic environment on many levels. That said, it's by far the most impactful job I've ever had. I'm immensely grateful for the opportunity to contribute 0.0000000001 pct to some amazing work.
I'm very close to 30 now, and have been burnt out enough times that it's a struggle to imagine how I could care about tech enough to attempt to re-transition into almost only caring about sort of climbing that ladder.
I don't come from a CS background. I'm a EE. I just happened to get an embedded job right out of college and kept getting more and more software work. The only algorithms I'd dealt with were linked lists, circular buffers, and synchronization.
Burn out is a constant worry. I still question if my chosen path is even worth it. If I didn't still have hope of having a child someday... I don't know. I don't think I could find the motivation to keep going.
I don't try to climb the ladder. I hit a level I'm more than happy with and now I just need to try to stay on. I find I'm much more compatible with my team because I'm not trying to make the next level. I can share advice freely with the younger folks because I'm not trying to block them. On the contrary, I want my teammates to go far and kick ass.
I am curious though, what were the more mechanical aspects of how you made that transition? Did you have a plan to practice algorithms in a certain way and then wait till you were contacted by the right recruiter? How did you go about it? Did you more simply just try and do 1 problem a day and then build that up, or did you find useful projects to apply more obscure algorithms to, that might be more interesting and motivating?
As far as interviews go, I think I tend to interview pretty well when it comes to social skills. Problem solving is tough. I had to do a lot of whiteboard practicing. I probably over practiced this part because, in my experience, you're not really writing tons of code on the whiteboard. Yes, you need to write some, but it's typically short snippets or pseudocode.
I remember telling my interviewers that I didn't think I was a good fit for the job. It seemed more 'CS' than I could handle. I don't know why they went with me. I know the company was rapidly growing at the time so I probably just got lucky. Not what you want to hear, I know.
But, just focusing on the algorithms part of it, I never could answer how exactly a specific algorithm worked, but I've had to use many algorithms in my "normal" job. I just know "oh this needs a modified DFS, or A*, with custom heuristics, or a priority based permutations generator". I cannot answer how any of this works in detail on the fly, but I know where to look. Isn't that sufficient? I certainly would fail a FANG interview, but have gone toe to toe or even better when pow-wowing on some real problems with googlers. Wouldn't consider myself any inferior because I don't know how a specific algorithm works in the interview. Just my two cents
When I started interviewing, I couldn't even do tree traversal. It just wasn't something I was familiar with, and never directly used in decades of coding. I don't blame Amazon for passing on me then.
> gone toe to toe or even better when pow-wowing on some real problems with googlers
I don't think making blanket statements like this is a good idea. Sure, you might be able to code better then them, but can you think of a new solution which is better than the current best practice based on some practical consideration(behavior of your HW, caching behavior, some niche use case, etc)? I think a lot of people are great coders in many ways but that's not always the skill folks are looking for. We don't necessarily crank out a lot of code, but it has to be really good code. You also are expected to come up with self-driven innovations and ways to push the industry forward. It would be nice if there was just a set of problems someone handed me and had me solve, but that's really not what they're paying me for.
Also, my statement was not blanket statement, nor that I wrote more code than others. I was referring to a very specific set of problems that I was working on and not generalizing that I'm better than all googlers. There are many people who are way smarter/better than I am. I'm just saying not being in FAANG does not mean one is not good enough.
I think the interview processes put a bar on if one willing to put in the amount of specific kind of work needed to get in or not. In its own way, it is a good filter (for them)
If I'm hiring for a high-output FANG job, you bet your ass we're going to the whiteboard. Sure, I hate it too(on either side of the table), but it's not too much to ask to prove that you can think on your feet and solve hard problems if that's what the job is.
I generally tend to have discussions because I'm not very confrontational and also because I hate the modern coding interview. After moving to a FANG though, I now understand why the process is so hard. I also get that a lot of folks are frustrated because they've been told their whole career that they're smart, and they probably are, but for some roles the bar is just set higher. My 30 year old self, who thought he was hot shit because of all the praise I got for doing basic work(shake and bake linux embedded work, deep dive bugfixing, mostly writing glue code), was in no way qualified to exist in the world I (barely manage to) work in now.