Does anyone just partner with a recruiter they like and stick with them, rather than try to play the numbers game on an open market?
In the past, as a hiring manager, my best hires by far came from a recruiter that I trusted. His hit rate was amazing. He spent hours interviewing people himself and by the time they came to me for an interview, it was because he already knew they were qualified.
In a world where people jump every few years, hooking up with someone like that seems like it could work out well, if they've built up a decent reputation. Basically like a good contracting company, but for FTE. Instead of multi-stage interviews at 10s of companies (or more), everyone on both sides of the process could save a lot of time and get down to the nitty gritty.
Just spitballing. I am only halfway through my cup of coffee, however. And clearly things like this have been tried, but always on some kind of large scale, which in turn destroys the effectiveness -- because it gets gamed, I'd guess.
But at a much smaller scale, does it work, do people do it?
I did this early in my career and ended up underpaid in an unfulfilling job. As a candidate (especially one without sufficient experience in the industry), it's difficult to tell if a recruiter is good or if they're just looking to place people as quickly as possible, fit be damned.
If you don't know what to look out for, bad recruiters can frequently come off as better from a candidate's perspective. They get you more interviews, and they won't tell you to pass on an offer because the compensation is too low. You generally don't find out that the job would be a poor fit until you interview, and you won't find out that you're being underpaid until you've already started (if ever).
It's important to understand the incentives of the recruiter in order to have a successful relationship with them, and to keep your expectations realistic.
(No, a government employee doesn't particularly care about someone they just met, either. They have their own incentives, too.)
I've done this for my current job and the job I'm about to move to. It works pretty well - my recruiter sources gigs for me, starts with a decent idea of what the TC will be from the outset, gets feedback from the companies and pokes them to keep the process moving at a decent clip. I'm looking at a 20ish% raise on this next job hop, and the process has been easy. We just email/text/call, I haven't actually "applied" anywhere, didn't do any Leetcode/Hackerrank BS, just did a few interviews. I've got four offers right now. It's not FAANG, but I have no interest in working at FAANG. The process side of things was a big sell for me - I gave him some guidelines about industries I wanted to avoid (payday loan type companies, adtech, the defense industry), he brings me potential places, I pick the ones that sound interesting, and we start running down the track. Low effort, high yield.
I've known a couple of pretty good recruiters (and a lot of lousy ones) over the years. The biggest thing not usually discussed is that the recruiting industry resembles industries like real estate agents and sales. It's an extremely high-churn, revolving door, of mostly young people with no prior experience, themselves being recruited by agencies to do recruiting. And what happens is, generally, over time the good ones will stick around and will do actual recruiting for maybe 2-5 years or so and after that, generally, will lead (and/or manage) a team of recruiters of a book of business (aka a basket of clients or a region or an industry) and will stop doing individual recruiting pure-play by themselves. Some will also leave an agency and then go to do internal recruiting/HR for a specific company, too.
This isn't true, of course, for ALL recruiters, but definitely most. So as you can see, the only downside of finding a really good recruiter is that because they are good, they won't necessarily stay an individual recruiter forever. And the bad ones? Well, they churn and burn out relatively quickly.
A good recruiter can easily be discovered: how long have they been with their current agency? The longer, the more likely they're good. Bad recruiters job hop. A year here. A year there. LinkedIn gives it all away. At 3+ years at one agency, they're performing at or above expectations. Most agencies are honest, push honesty, and rid themselves of recruiters that lie or underperform. Good recruiters build momentum through referrals and repeat business. So that's how you tell. Not foolproof, but a solid tactic.
What agencies are reputable? Most recruited I encounter work at some Tech-<buzzword> Inc. variation. For instance if you're interested in the FAANG/Unicorn space what agencies even work with them and how would you find that out in the first place?
Years ago, recruiters seems to have a line on positions I had never heard of. Nowadays when recruiters contact me, they are already about positions I know of on Linkedin etc. Maybe with more people working from home (including me) this might change.
One thing recruiters can still good for is post-interview feedback. Some companies feel more comfortable giving it to recruiters than directly to you.
> One thing recruiters can still good for is post-interview feedback. Some companies feel more comfortable giving it to recruiters than directly to you.
Echoing this. In fact, it holds true even for in-house company recruiters, as long as they feel you are a reasonable person and are comfortable disclosing it to you (without fearing that you will start causing problems due to finding out this info). Yes, even FAANG-level recruiters can be ok with that, but that's on a case by case basis.
I personally noticed that over the years (as I got better at interviewing and at communication in general), recruiters themselves would start going "technically I shouldn't be telling you this, but..." more and more frequently. And no, I never asked for "more detailed feedback", they just decided to volunteer it themselves. I can imagine that asking it directly would have been fairly awkward, ("but can you give me the real feedback instead of what you just gave me?")
And the wild thing is that they weren't bsing or just giving me generic "sorry it didn't work out, practice your algos and systems design more". They would give a pretty detailed feedback, half of which would match the stuff I already knew about my performance on those interviews (e.g., "I felt I did poorly on interview #3 due to me not being able to efficiently optimize this one approach and then maybe being a bit too vague during systems design round in the beginning"), which acted as my personal litmus test on the legitimacy of the feedback. And with the other half being brand new information that actually opened my eyes to some blindspots I've been totally missing.
It's to the point where you can usually copy paste a few lines of job description from the recruiter's email with the "brand new opening at a confidential client" into Google and find the original posting from the company.
I'm a recruiter that does precisely this. I don't collect resumes. I view myself as a talent agent for people in tech. A majority of the candidates I work with come from friends/colleagues whom I've worked with in the past. It's a win-win-win. Everyone involved in the process avoids wasting time.
I was a tech recruiter before moving into eng work. I always preferred if someone I'd placed in the past or gotten a number of good interviews for reached out to me if they were looking but I never really expected it.
Even if they did it often depended on what I was working on at that moment. The might be the best backend rails engineer I've ever worked with but if I'm only working on front end react roles I'm not going to have anything for them.
Because I had relationships I could call past clients who I know needed good rails folks and pitch this persons background but they would open up a role maybe 25% of the time?
It's just difficult because third party recruiters don't really control the roles they work on.
I've always been selective with agents and jobs to apply for then stay for a while, I think its a good approach, however my friends who apply to every single thing seem to do better, maybe they get more interview practice.
I would, but the previous recruiters I've worked with, that are good and that got me hired, often become in-house recruiters for specific companies. This makes sense because those jobs are typically better-paid and less stressful, so of course the best recruiters will gravitate to them with time.
So now I focus on filtering the 5-10 new recruiters that contact me through linkedin in or my email every day down to the positions I'm actually interested in.
Ime they are somewhere in the neighborhood of Car Salesman, trying to get their commission at all costs and bringing jobs that are only tangentially related to my experience to the table.
From my experience the better paying companies have their own internal recruiters. So unless they bounce around FANG~ish companies, your likely to leave money on the table doing this.
I've definitely passed more technical/cultural interviews on my own than I have found recruiters like that. I think you got pretty lucky in that regard.
I appreciate this guide, truly, but one of the things I was struck by was how few of these companies I'd be willing to work for. Let's go down the list...
Apple - lots of evidence it's a toxic work environment, highly secretive. Maybe not an instant veto, but skeptical.
Deliveroo - Gig economy gets a veto from me.
Uber - ditto, if anything, even worse.
Spotify - Would have once upon a time, but these days they seem pretty awful, and their front-end tech is sorely lacking, to say the least.
Amazon - intensely and notoriously abusive to employees at all levels.
Netflix - high-pressure work environment not for me, some disturbing practices.
Palantir - state-sponsored spying, no thanks. Lives up to its name.
Google - mostly an adtech business at this point. Skeptical.
Meta - I'd rather be homeless than help Meta do anything for anyone.
The places above, I'd be reluctant or outright unwilling to ever even bother applying to. That leaves Babylon, Cloudflare, Monzo (where the OP was hired), TrueLayer, Instabase, Microsoft, Shopify, Wise, Revolut and JP Morgan as orgs I didn't immediately veto or view with high suspicion, and I still view the several related to finance as inherently pretty suspicious.
I can't be the only person out there with a robust "will not work for" list. Fortunately, there's no shortage of tech companies. How do people filter out companies when considering who to apply to?
Spying, Spamming or Manipulating. That is what you will get paid to do in the vast majority of cases. If you are not first order then you are a second order spy/spammer/manipulator. It's why I did go homeless. Now thankfully I got a grant to work on the next gen internet stuff. This has gone far enough.
I think this is common, or at least not uncommon; I'm in the same situation though it's more of a "strongly prefer not to work for". If I didn't have any other options that could provide a bare minimum salary that I can live off of, I would certainly apply at the "evil(tm)" companies. It's an unfortunate symptom of capitalism that evil tends to get ahead.
I also think this is part of the reason salaries at these companies are so high (exceptions aside, they're generally higher than at less evil companies). If they didn't distinguish themselves on salary, people would always go with the underdogs which may not be as corrupt yet.
I understand the ethical concerns when choosing to join a company, but I'm not quite sure I follow your reasoning regarding some of the specific companies you listed. Skeptical about Google and Meta, but not Microsoft, which also doesn't exactly have a clean name when it comes to questionable operating practices? Suspicious about Netflix, but JP Morgan seemingly flies under the radar?
To be honest, I was giving a gut first impression. A lot of the financial companies are without a doubt questionable as well, just not in ways that came immediately to mind as soon as I heard their names. JPMorgan definitely qualifies, but for whatever reason, I don't personally think "morally bankrupt" or "abuses its employees" when I think JPMorgan, even though both of those could be true. Successful marketing on their part maybe, given their role in the '08 crisis and so on?
Microsoft, to be honest, I'd still be open to. Their anticompetitive behavior is a big issue, but I don't know that I find them to be as 100%-tainted by it. With Microsoft I'd be more concerned about lack of quality control or care for end-users.
That design interview checklist seems on-point to me.
I almost only conduct PM / technical design interviews now, so I rarely get to go into that much depth with candidates (don't expect PM candidates to get nearly as far as dev candidates), but that looks like an ideal breadth and depth.
> Reverse Questions
>
> But IMO this is only for you, not to impress the interviewer. In my experience, asking no questions didn't affect the result. For example, by the time I did the 3 coding interviews at Google I was mentally exhausted and couldn't muster the energy to ask them anything. I still got an offer. Your mileage may vary.
Correct this should absolutely be true. Unless your question is something blatantly offensive, it doesn't matter one way or the other. That time is for you, and has no affect on your feedback.
Nice piece. I write resumes and give career advice to a lot of tech professionals, and what you wrote about applying for jobs and "not being sure if a human ever read my resume" hit home for me.
I don't trust that the algorithms will identify qualified people, and I think job search is too important a thing to trust to algorithms. Getting discovered within the traditional application process (LinkedIn, Indeed, applying through company website) is difficult, because you have a large number of applications, and many of those are entirely unqualified. When I was recruiting, it wasn't unusual to get 50+% of applicants for a Senior Dev role that clearly had never written a line of code.
It's a needle in a haystack problem, and the bigger issue is that at some point is the recruiter going to keep investing time looking through the haystack to find a couple needles, or will the recruiter identify a better way to find a few needles?
Direct outreach to recruiters through LinkedIn is what I coach my clients to do, and I provide specific language for that messaging which is just as important. Recruiters like hearing from qualified candidates, and if the recruiter gets enough messages like this he/she doesn't have to wade through the resume pile. It's a clear win/win.
> I spoke with 2 engineers who asked very specific questions about Java. Like "when is a static block run?" I thought it was a bit strange to ask easily googled programming language trivia.
This isn't language trivia. It can be the difference between Util.helper() running very quickly or blocking while an unrelated cache loads. Even if you don't know, you could tell them that (why it's good to know), what your guess would be and why, and how you could find out experimentally.
> They later got back to me saying they wanted someone with experience with Java 14 and I had only worked with Java 8.
This one's weird. You can get caught up from 8 pretty quickly.
That jumped out at me, too - like, "what the hell does 'experience with Java 14' even mean?" OP did mention earlier in the post that his Java was a bit rusty, so maybe they were just being nice.
How can it simultaneously be the hottest job market in anyone's memory, and yet the process still looks like this? These don't look like companies struggling to hire; these look like companies being exceedingly picky and not suffering one bit for it.
It's where they're applying, I think: "Apple, Babylon, Cloudflare, Deliveroo, Monzo, Spotify, TrueLayer." Don't know anything about Babylon or TrueLayer but most of these are largish, established companies. I've found early-stage startups less picky recently - I got a job at a startup in November that only required 4 video interviews each between 30 minutes to an hour. No whiteboarding, mostly just discussing previous projects. Finally the last (4th) interview was with the CTO where he started by saying: "It's really hard to find people good people to hire right now" and basically said he wanted to hire me and asked if I had any questions.
Have Startup salaries gone up recently to match the market? I had thought it's pretty understood that you are taking a significant paycut relative to established players to basically play the lottery with startup equity?
Startup salaries have gone up a lot in the last few years from the boom in funding. Experienced engineers with several years of experience are clearing $200K+ in base, and getting a solid equity cut too: https://topstartups.io/startup-salary-equity-database/
Appreciate the link. Don't know if you're affiliated with the site but the ability to sort the data would be incredibly useful and the name of the Startup would be of interest as well like levels.fyi
Maybe the other way to look at it is, the "established players" can only employ so many people. Many of them are paying some pretty insane salaries now (I consider over $200K pretty insane) - but as I said, they can only employ so many people. In my case the salary is plenty good without even having to take equity into account. And the work is likely much more interesting than I'd get to do in an established company. Also, if the startup makes it I could be in a pretty good position being able to call a lot of my own shots as to what I'm going to work on and how I'm going to work on it - autonomy.
All that to say, it seems a lot more like a lottery trying to get a job with the established players (after jumping through all their interview hoops), and while the money might be better, the type of work, what you work on, the level of autonomy you're given (or not) is also very important.
I am applying to ~10 companies, mostly start-ups, and they all have the same process. They are mostly not pure algorithms but have varying degrees of difficulty and all use multiple rounds of on the spot coding. Perhaps ironically I found the one purely algorithmic question (standard graph traversal) to be the least stressful.
Because regardless of the hotness of the market 90% of candidates are still completely unqualified for the position they are applying to. Companies would rather keep the role unfilled than hire someone who can't code "hello, world!" (and no, that's not an exaggeration).
That may be a challenge, but if a candidate has years of experience in the software industry then their resume might vouch for some skills. If a developer has delivered features to common tools that many appreciate then how is it possible that they cannot accomplish basic coding tasks? The main problem here is that teams that are hiring often don't even bother to read resumes and so they end up with a process that is expensive, broken, and actually insulting to the most qualified candidates.
That's the point of the interview, to validate the resume by having in-depth conversation about the projects in it.
Note this doesn't mean trying to test for the skills that they must've applied to do those jobs. That's hopeless to achieve in an interview for all the reasons endlessly documented in these threads. Instead, assume that if they did the jobs listed in the resume, obviously they must have the skills to have done them. So now the interview is about validating they did those jobs, not the technical detail itself.
Based on more than two decades of hiring, this works very well.
I had been quite patient with our industry recruitment practices until I took a longer breake and had to deal with other problems in life. Doctors, lawyers, contractors, plumbers, electricians, accountants, agents - you pay them even if you want them only to open their mouth in your general direction. No free labour, I'm not solving any problems for free.
That's just not true at all. Doctors in particular have ridiculous hiring processes. Trades provide free quotes and to some extent diagnoses all the time. Pretty much every lawyer will have free initial consults and almost all plaintiff attorneys work on contingency.
YMMV. The only time in life I needed a lawyer, even to shop around I had to pay to each of them EUR 150-200 per hour for the initial consultation to introduce my case. Doctors?! I have yet to meet one who would feel obliged towards me in any way, when it comes to hiring at a hospital then perhaps it's a demanding process - no idea.
What about people without a relevant degree? Some of the best engineers I know don’t have one.
And people without experience - how will they get jobs? I feel our industry already does too much of this - asking for 5 years experience with a specific technology. I’d like to push back against that.
Fwiw I’m not entirely unbiased. I am a person with minimal experience and no relevant degree who got a job by preparing hard for interviews. I’m happy I wasn’t filtered out by “10 years of relevant experience and a relevant degree”.
Why not get the degree then? If you'd started four years ago, you'd be done by now. If you start now, you'll be done in four years (maybe a little longer since you're working full time).
But I already taught myself most of the CS curriculum. Why would I spend years of time plus tens of thousands getting myself a piece of paper that says I know all the things I know?
And not just the cost, the opportunity cost! I would have forgone the last 4 years of salary and work experience. I wouldn’t have been able to write the post this thread is about if I had been in school in that time.
Thankfully, our industry doesn’t worship pieces of paper.
Have you conducted interviews? In my experience, years of experience correlates poorly with technical ability.
I've seen several senior devs with 15+ years of experience who can't complete basic programming tasks (in a language of their choice) despite allegedly working at a job where they write code every day. I'm talking fizz-buzz level stuff. It's baffling.
I've had this same experience. Per the resume, 12+ years of experience coding and leading teams. In the course of the interview, I got a whiff of "I think this guy is full of it" so I asked him to write a simple algorithm on the whiteboard. "Write a function that takes a list of integers and return their sum." In many ways, simpler than fizz-buzz. Candidate couldn't even get started.
So how does this happen? If these candidates were gainfully employed, perhaps that indicates their roles, perhaps their entire careers, didn’t require programming? Or perhaps it means that it’s possible to write code without having a deep understanding?
These widespread anecdotes should inspire reflection, not just on the utility of technical interviews, but on the very nature of the work that goes on in the software industry. What exactly is going on.
I have no idea, but it’s possible the entire resume was a fabrication. (I had another colleague interview someone who claimed to have worked for a small IT consulting shop for a few years. Turns out she’d worked there in that time, so asked the guy to describe what he did there, then after a few minutes cut him off and casually mentioned that, of the two of them, she was the one who actually had worked there.)
I've never had that happen to me, and I hired a fair number of people over the years. To me it always seemed like a scare story of what might happen if you didn't do loads of algorithm questions.
Everyone I hired could do the work, regardless of whether I asked them algo stuff. The only people who didn't work out had non technical motivation issues.
I guess there's always another side to experience, because it seems like you've come across this a lot.
Ok, but how do you get a job then?
I hate those take home assignments as well. I work for over a decade in the industry, if they don't believe me that I can do basic stuff, it's just annoying.
But I am not aware if any company who does not do that.
They all just copy the hiring process of the big companies. "What works for Google must work for us too".
And that's just not true.
Google has thousands of applicants per day, the average shitty company can be happy if they get one or two qualified candidates.
For Google, I'd gladly to a several hour assignment, but not for an average company - because it is not Google.
Guess it depends in the industry, I've never had to do live coding interviews when interviewing in game-dev. It's been mostly technical discussions, maybe some take home tests, once I had a debugging session. Never a leetcode type of thing.
Not OP but have worked in law offices before. Looking back, I seen to remember that our lawyers all had assistants who would do things for them. Research ABC, collate data, file paperwork, etc. Lower attorneys would have a shared assistant, higher ups had dedicated. I know many attorneys do all their own stuff as well, but having that set up seemed to let the people focus when they needed to, knowing other BS would be taken care of competently and on time.
I see very few devs (like, none) who get that sort of support system. At best, arguably, a good PM might help, but they also bring a l other layer with often extra steps to desk with.
A lawyer might argue that the greater support system you note is actually evidence-of, and a consequence-of the greater complexity of law relative to writing software.
Possibly, but thinking some more, not all lawyers work in such a fashion. Internal corporate lawyers may not have as much support, as they're more of a cost center than the money maker. The lawyers at the firm I worked at all were billable a lot, and were profit centers.
Correct. So ultimately the conclusion to this thread that one might draw is that the professions vary in complexity and nuance, even within themselves, and that attempting to fashion a hierarchy among them with incomplete information (and a hint of arrogance from those who are so inclined) is more likely to establish a false paradigm than to produce anything reflecting the complexities of any of the professions.
In short, I think we're arguing the same thing and I agree with us.
The easiest way to see this is; count the number of moving parts, and take into account the conditions required for success. Software is the most complex artefact humans produce.
That wandering maze of errands is only if you're applying to FAANGs and top companies paying top of the market compensation, which the author is.
If you apply at average European companies for example, paying average EU wages, you don't get any of that, but you'll have to be OK with earning very avenge wages in line or sometimes below most other skilled white collar professions (in Western EU at least, in the East devs still earn higher then everyone else).
It's kind of like dating, the less attractive a company is to potential candidates, the easier it is to get in, the more attractive it is, the harder it is. Supply and demand.
Absolutely all the companies are doing it right now (in Canada/US) from small 10 person startups to FAANGs.
The frustrating thing is that some smaller companies put your through these 5 hours of leetcode/system design but they never hire anyone and stay with the same number of employees. I see them posting over and over on HackerNews hiring threads but their head count never grows(by looking at LinkedIn)
Right on. There are many companies who interview candidates, but have little to no intention to hire. They are very difficult to recognize, as their job adverts and websites look exactly like all the others.
Most of the time these companies do hire people...they just generally lose people at almost the same rate. It's usually a sign of something negative, though
(note - staying the same size is fine if that's your desire, but it's a problem when you're aiming for aggressive growth and can't)
Well, yeah that might be a case for some. But the companies I was complaining about don't have a dev churn, it's the same people based on their work history.
>Yeah no. Plenty of companies do this in the EU as well
True, but it really depends on the region and local market. If you go to an over-hyped place like Berlin for example, where there's tons of low quality start-ups claiming they're the next Google, and tons of both ambitious and low-quality candidates pouring in from abroad with inflated resumes trying to break into the market, then yeah, the hiring process will be broken from all the effort needed to filter out the posers and chancers from the candidates who can actually deliver results, especially if you don't have a strong network of contacts you can leverage.
But in my small city that nobody from abroad has heard of, hiring is much more sane, since there's much less noise you need to filter out. Granted, the number of opportunities and the pay is also much lower than in places like Berlin so that's the trade-off for sane interviews since the small market attracts less posers and chancers.
It's been a while since I've interviewed but what can they possibly be asking over 7-8 rounds?
From what I recall, most companies did 3-5 rounds with escalating time commitment from both sides as the rounds progressed. A typical process would be:
* short 15-20 minute phone call with a recruiter to discuss your experience and gauge your interest.
* take home coding test. I consider this step to be a low pass filter to weed out candidates who can't code at all.
* phone interview. This would take about 1 hour with 1-2 engineers on the other end, possibly including the hiring manager. Technical questions would get asked here.
* in person interviews. Usually a full day with the company flying you out to their location. This would be a mix of culture fit, tech questions, meeting the team, etc.
That's four rounds. What would you cover in the other 3-4?
> in person interviews. Usually a full day with the company flying you out to their location. This would be a mix of culture fit, tech questions, meeting the team, etc.
Why would you count that as 1 interview? It's always an exhausting 4 hour marathon of algorithms, data structures and systems design rounds with 4 different people, frequently split over a couple of days.
I'd count it as 1 step in a multistep process. Each step of the process gives more info, but is also more investment from each side.
I've also never seen it split over multiple days. Often, pre covid, the company is flying people out and paying for hotel rooms and food at this stage and the interviewee is taking time off from their current job. An extra day adds unnecessary costs to both sides. If I was interviewing somewhere and they tried to split up this step I'd probably get annoyed and potentially cancel the interviewing process.
Counting it as 1 step doesn't communicate what it's like.
You could theoretically have ten 1 hour interviews, back to back in 1 day, and call it 1 step in a multistep process, but most people would call it excessive.
1 online test
An interview to discuss my approach to that test
Then a full day onsite of 4 technical interviews, mix of algorithms and systems design.
Final round with CTO, culture fit etc.
That actually sounds like an improvement overall. It would be easier for me to schedule an hour a day, at the start or end of my day, every day for a week than to take a full day off to go interview somewhere.
Occasionally you’ll get a set of rounds that last 3-4 hours, but it was just as rare back then.
The main difference between big tech companies is the reliance on LC type algo/ds, and the insistence on getting to the optimal solution for anything but the hardest questions. Also 'normal' companies are more likely to ask more domain specific questions... for instance, you might get pairing sessions that stress knowledge of language/framework, SQL query building, etc, and are going to be a bit more permissible of mistakes.
Last time I looked (a couple years ago) the market was so hot that any company taking longer than a week to decide and more than maybe two interviews, counting an initial phone interview, was gonna lose the candidate.
They might not be "average" companies, but OP is based in London, and the company he went with (Monzo) is a darling of the London tech scene. We get plenty of interview errands here.
Posts like these nudge me back to keep going with my own potentially-lucrative-in-the-distant-future project. It's a lot of work, and my savings are monotonically decreasing, but I read this post and it's internally exasperating. I just think to myself, oh geez, if I have a hard time reading about it, I'll surely have trouble actually playing the stupid game. Been programming for about 30 years now, about 15 on-and-off professionally. I quit my latest job like 3 years ago, and haven't been looking for another. Probably won't pass a resume phase nowadays. I'm writing code (algorithmic, optimizations, even UI, ugh) every day.
As I was reading this it reminded me of a playthrough of Ultima IV. Grind a bit in the Swamps of Leetcode so you're high level enough to get past the Dungeon of Algorithms.
What I'm hoping folks get from the post is that not that many companies conduct algorithm interviews. If you're fine skipping FAANG, you can probably avoid them altogether.
Don't get me wrong, it was an excellent write up! Maybe my comment reads snarkier than I meant it :) My personal take away would be update my resume even if I'm not looking for a job. I've not interviewed for so long that my resume is written on papyrus and has qualifications like "knows how to tie his own shoes".
Basically no-one else hires like this, outside of tech. If you describe what our interviews—even relatively light ones, not FAANG—look like to people outside our industry, reactions tend to be of the "what the actual fuck?" variety.
Author here. I made it harder for myself by applying to several companies at the same time. I could have kept it simple by applying to a few at a time, perhaps only targeting companies with processes that suited me. For example, if I had applied only to my eventual employer, it would have required minimal preparation.
> Before writing the resume I set out to find the ideal tool to write it.
Um, any word processor? Even a text file? A good resume is only a page long. Spending time researching the ideal tool, buying it, installing it, worrying that it is malware, learning how to use it, seems like far more time than just typing it in.
Heck, my early resumes were written on a manual typewriter. Then they became text files sent to a daisy wheel printer, which made them look very nice.
Is there some legalistic reason companies don't seem to keep a funnel of quality CVs for candidates and reach out to them when a role looks like it's going to become active?
This whole "application," process seems like the artifact of a kind of historical paternalism among employers that doesn't reflect reality anymore, and it seems to be an unneceessarily synchronous bottleneck in the talent market, where both parties (employer and employee) have to time the market correctly. Objectively, that seems...limited.
They do, I got my current FAANG role from a reach out a year after I applied, and another FAANG company has been sending me emails for over 2 years now asking if I'd like to interview with them again.
I had a pretty similar experience while going through a series of interviews at the beginning of last year. The way to really get your compensation up is to do as the article suggests and interview many places in parallel. Then negotiate offers to get what you want.
I found I don't actually like take home interviews, I work as a mobile engineer so it's often the same take home, a list of stuff retrieved a back-end and then rendered in a list on screen. Selecting a list item should open up a details page. While the take home is never particularly difficult, the boundaries of the task are often not set clearly. So it's easy for that 4 hours to extend to a whole weekend to make sure all the latest patterns, and trendy libraries are used.
Annoyingly on a few occasions after sinking a weekend into a project, I have had an auto-reject with no feedback. That soured me on them. I have put a few hundred leetcode practice problems over the years and can discuss mobile system design pretty extensively, i'd rather interview that way in future.
> So it's easy for that 4 hours to extend to a whole weekend to make sure all the latest patterns, and trendy libraries are used.
And including those could potentially be a liability. I had a take-home assignment (a front-end application) where I decided to use Typescript, because I would like to use it and I figured it would reflect nicely.
One of the items of feedback given (I still passed) was that there was an implicit "any" in the code. If I hadn't included Typescript would I have gotten feedback that I wasn't using Typescript? If you're using Typescript but not going the full 10 yards and making sure it's set up in a perfect way you'd use it in production? Could including it harm your chances over not including it because you're not using it in a way the reviewer likes?
Ultimately you'd think it wouldn't matter and that just including it was good enough (and I think it was for this specific reviewer), but it's a tricky game of hoping your choices line up with the unknown opinions and biases of the person reviewing in order for it to work out.
Thanks very much for this post. I'm currently going through the process of preparing and interviewing after six years of being at the same company. A lot of what you offer for advice validates my strategy. No matter your experience and skill level there's always apprehension and a bit of imposter syndrome so it's helpful to hear about someone who's worked through that.
This is good advice and tracks pretty well to my recent experience. I applied almost exclusively to startups though. 7 YoE full stack web.
I did two take home assignments but zero white-boarding, just a few general language/framework questions. Some very casual system design questions also. This was for mid-level to senior full stack web dev roles.
I had a minimum salary but beyond that do not need more, so I didn't bother with FAANG or large enterprise stuff. Very happy where I landed.
I was actually really surprised at how smooth and relatively simple the whole search was compared to the almost horror story level experiences some people have. It is mentally exhausting but I was lucky to have polite and professional interviewers.
I rule out startups because I'm not at a point in life where high risk makes sense - I have 3 teenagers in my family, so our home and life needs stability, not risk. Startups have some merit if you are young and ambitious and looking for your work to drive your life forward. But not everyone is at that stage of life.
I did startups the entire time my three boys were growing up - 0 to out of the house. It's not really risk. The job pays; if it goes away, the next job pays. Just have something in the bank.
The total comp from a big tech company is 2-3x what any startup will provide. The risk is from missing out on a big payout if there isn't an exit (and having to wait ~5 years to see that) vs. the guaranteed extra income from vesting RSUs.
This. I put 16 years into 3 startups. All were small (< 200 people), and I was VP Eng at the last one. Two were sold and one is still chugging along with no real growth left, but a nice business. Net value of my equity in all of those was -$500. My salary as a VP was $185k, which was about what my next company paid grads fresh out of school (salary, bonus, stock). At that gig, my initial offer was 2.5x my startup comp, and with stock appreciation, I was making close to 3.5x. In the following gig, that jumped to 4.5x.
While I loved my startup time, learned so much doing it, and wouldn't change anything about it, at this point in my life with a mortgage and teenager, I'd realistically need a startup to be able to at least 10-20x for the risk to be worth the opportunity cost of missing $BIGCO$ salary.
This might be true in the US, but not true in the EU (Zurich and London are not in the EU). I'm currently in the process of switching from Google to a startup, at the moment.
You're basically saying you don't understand probability lol. The probability of Google going under is less than the probability of some random startup. If you disagree with that premise then we're at such fundamentally different points of view there's no point discussing further
While your job at Meta might go away its much less likely to go away than a job at Sliceline.
There is risk with all jobs but how many mass layoffs of eng have FAANG companies done in the last ten years? How many start ups have shut down in the last 10 years?
Because in startups, it is not just that a job goes away - the entire company is more likely to go away.
It might have found funding before fit, leading to the market never materializing. The leaders may not have enough experience to see the path before them while at the same time the VCs push for high-risk moves to drive their returns instead of making moves to ensure business stability.
Fundamentally, startups do not share the goal of a long-term sustainable growth pattern. They shoot for the stars, and either make it or crash.
....and how is that different for you? You can only lose one job at a time, regardless of how it happens.
Here's my other buffer against job loss: I consult in between jobs, sometimes for years. In fact I think of it the other way: I'm a consultant that occasionally takes a job for variety.
I’m currently on the hunt for a new grad position and this was an awesome read. The process is proving stressful so it’s nice to learn from others experiences.
I struggled so much as a new grad I wanted to give you some specific advice: There are two kinds of employee candidates, red flaggers and green flaggers. By this I mean people look at your resume and either think "wow, what's the catch?" or "hmm okay, maybe there's something good here."
A red flagger would be someone who built a supercomputer out of beach pebbles then proved P=NP on it. The interviewer already knows you're good enough for the job, they're just looking for red flags that would disqualify you. A green flagger would be someone who worked at GenericCorp for 2 years on a Java queue. The interviewer knows you're a programmer, but they need a signal that you'll actually be able to do the job.
Why does this matter? If you're a red flagger, all you need to do in the interview is not make an obvious mistake. They already want to hire you, they just have to do the HR dance first. If you're a green flagger, you have to do everything right in the interview to get the job. They need programmers ASAP, but you still need to prove yourself. Being a green flagger is much harder than a red flagger. Becoming a red flagger is simple: Your interviewer needs to think you are smarter than them. If you pull this off they will always give you the benefit of the doubt. Your job interviewing will be so much easier.
To do this you just need one thing on your resume that they don't know how to do. If your resume has an internship writing React, and a side project using NodeJS, your relative inexperience will make them think "I can code circles around this chump." Switch that side project to a niche area they've never dabbled in, and suddenly they're over their head. "What do they know that I don't? We must hire immediately!"
I accomplished this by doing side projects in machine learning and crypto. For any programmer with some tenacity these are totally doable, but most people I interviewed with hadn't done it themselves so I became a red flagger. It doesn't need to be these subjects, it should be whatever niche computer topic you're most interested in. It doesn't need to be complicated either. If you can demo it, and it works, and you can explain it in a way that teaches the interviewer something, you've made the job of interviewing much easier.
>> in a way that teaches the interviewer something, you've made the job of interviewing much easier.
A tip I have that I don't see much is related to this - good people love to learn, and also generally like to teach, and this goes both ways across the interview table. If you know something the interviewer doesn't and they want you to teach them about it, that's a good sign for your interview outcome, and also a great sign that this is probably someplace you want to work.
And vice-versa - if you don't know something in an interview but you have time to ask the interviewer to explain it, or to point you to a reference where you can learn about it, that'll help a lot with the they-don't-know-this signal, especially in more junior roles. In most technical jobs, it's impossible to already know everything, so demonstrating that you're someone who is always learning is the next best thing to already being the expert they want.
Wow there is a lot to unpack here — thank you so much for taking the time to write it out. I've sat here thinking about this and going over my past interviews and this is an extremely helpful way to approach how I build myself as a candidate.
I don't think this is necessarily good advice for a new graduates, especially because new graduates don't really have a good handle on how to judge coding smarts (see https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect). There are plenty that talk a big game, but if you listen to what they're saying you realize they are throwing out a ton of big buzz words. My first time interviewing I thought I was super smart, and looking back I realize the interviewers saw through me to the inexperienced idiot beneath.
Further, focusing too much on a niche area totally unrelated to the job you're interviewing might be evidence against you. If your interviewer is hoping that you'll spend the next decade on graphics frameworks, an intense interest in crypto might be a red flag that you won't stick around.
I think it's much more important to find the right balance of confidence without over-confidence. Do lots of practice interviews, including interviews at companies you're less interested in. Learn how to pace yourself to a speed where you don't have awkward pauses but also don't make stupid mistakes. If you practice to the point where interviews start to feel like a fun chance to meet people and solve interesting problems, you'll do great.
Do at least a little research into the companies you're interviewing for, and show an eagerness to learn about what they do. As a new grad, an eagerness to learn can make up for some other gaps. Similarly, if you happen to have a personal project related to the team, it shows you've already thought deeply about the area, even though the interviewer probably knows the area better than you.
Also, make sure you can talk with confidence about anything on your resume. You never know when the interviewer might happen to be an expert in whatever obscure skill you put on there, even if it's unrelated to the job. For example, I know a few people who lost out on entry-level jobs because they put a real-world language they learned in high school on their resume, and when the interviewer happened to speak it fluently and realized the candidate had forgotten it entirely, the interviewers disqualified them for lying on a resume.
Good critique. What I was try (and failed) to communicate is that you should have a project that your interviewer wouldn't know how to make, rather than puff yourself up with hot gas. Having a project the interviewer couldn't make means they already know you have something to contribute to the team that they cannot. Acting like you are God's gift to Earth however is only useful if you are quickly trying to end an interview you are no longer interested in.
one thing to keep in mind: one component of the outcome is in your control (your skill, how much prep you've put in -- especially for things like interview technique that you won't otherwise use on the job), and the other component is controlled by factors completely outside your control (which bunch of interviewers get pulled out of the hat on the day, which idiosyncratic aspects they focus on, which exact questions they ask you, if the interviewers got enough sleep, if the job advertisement is a sham they've put on for HR but they've already decided to promote an internal candidate to fill the role...)
so don't get too discouraged by the outcome from any particular interview, part of that is hugely variable and essentially random. focus on putting the effort into the bits in your control and maximising the number of situations you create where your prep could pay off.
I'm having a horrible time finding work. I left my previous job on bad terms after hostility from managers. Recent company wanted previous manager as reference. Previous manager gave a negative reference so the company passed on me.
I did a take home project for a startup and fulfilled all of their requirements. They said the code was sound but wanted more documentation and they passed on me.
Obviously I'm just reading between the lines here, but it sounds like:
1. You knew you left on bad terms.
2. The company you applied to asked for a reference from your previous company, which is fairly standard.
3. Previous company gave you a bad (or at least less than good reference).
Your mistake is that you should have been upfront with the new company about leaving on bad terms from your previous one. Most interviews include some form of a "why are you looking for a new job?" question, and that's your opportunity to explain at least some part of what went wrong. The fact is, as a hirer, I would treat any negative reference that a candidate gave to me as a giant red flag, because the candidate pretty much controls who they're giving me as references!
> you should have been upfront with the new company about leaving on bad terms
You're right. I should have.
> the candidate pretty much controls who they're giving me as references!
I was required to give three references, one of them must be my manager. The other two were positive but I had no choice about the manager reference. I also didn't want to assume they would use the opportunity to screw me. When I left they even offered me more money but I declined so I must not have been horrible at my job.
Have you tried posting on the monthly Who Wants To Be Hired threads? What kind of industry experience do you have?
I had a similar experience with a toxic, sociopathic CEO from a previous job leading to at least one known instance where an interview process was going along just fine and got cut short after contacting that person. At first I was very worried that, given the highly niche aspect of my work, I would have trouble remaining in that part of the industry.
So I switched tactics, and that CEO has become the first previous boss I will willingly trash talk. I get it out of the way immediately and then it's a non-issue. And then I get to use the reaction as a litmus test for whether the culture will fit. Just make sure not to come across like a jerk.
I have not posted there- perhaps I shall. I have 3 years of experience in defense software doing C/C++ and Perl. I'm not a coding superstar or genius but I am genuinely passionate and grew up with a Linux family PC in the 90s. The trouble is that the work in defense was so monotonous that I learned practically nothing. The sensitive nature of the work also means that I cannot talk about it very much in interviews. I'm going to borrow your tactic of not being shy about previous negative experiences with managers. Thanks
As a person who formerly worked in both defense and other classified environments, I definitely empathize with what you are saying regarding not being able to share much about your previous experiences. Best thing I can recommend is to spend some time building a public portfolio, even if it’s doing simple stuff.
It will benefit you in multiple ways, not the least of which includes honing/practicing your skills, learning some new technologies, and having something to show for it.
my experience w amazon about a year was a huge turn off. 45min of lighting coding via a company named carrot or some such. "dont worry about code quality just complete the exercises." ive been in enterprise scale orgs for 14yrs. i completed the exercises and then said no thanks. very demeaning experience
I’ve actually worked for them as an interviewer (no longer). They ‘try’ to make it a decent candidate exerience in my view, but are missing some obvious flaws in their approach. For example, they do “care somewhat” about code quality but you’d have to catch that from the subtle wording.
And I’ve seen entry level candidates demonstrate far above entry level skillsets and not pass the interview.
I also felt the experience was demeaning. When I asked the interviewer if I was allowed to execute the code, he wouldn't tell me yes or no. WTF? So if I don't run it, I might have a bug, but if do run it and they don't want me to, then that's a strike. I didn't run it, but went home and wrote it again, and in fact, it did have a bug. Oh, well. That experience turned me off from AWS. Their recruiters are hitting me up lately, but I'm ignoring them.
> Cloudflare asks you to take an online test with basic tech questions. I found most of them straightforward except one very specific, obscure question about SSDs. I assume if you answer it, it looks like you looked up the answers somewhere.
If that's actually the reason for the question, that's clever :P It doesn't necessarily imply that they cheated, but maybe they use that to flag candidates. I've done a lot of interviews, and there were a couple of phone interviews where I suspected the candidate was cheating.
I'd love a study on desirability of ex-FANG devs vs non-FANG. I think the best credential that OP has is having Meta on the CV. It seems the best step in career paths.
I think it helped a lot. Not so much in clearing the later rounds, but definitely in terms of getting responses to resume submissions on the careers pages.
Curious if you could compare/contrast the interview methods between the different companies.
Were any of them more challenging? Did they all expect perfect working optimal code and/or make you run test cases, or was it more like "ok you more or less have the right algorithm" or something in between?
How fast do you generally solve various LC questions on your own? Thanks in advance, appreciate sharing your experience.
I just finished a job search. Some of my own notes:
Preparing a resume: I just updated my linkedin profile and exported that into a pdf using the tool they provide. I think this is perfectly fine. I only ended up sending the actual pdf to one company (Stripe) and I get the sense it was just a formality.
Scheduling: This really tripped me up actually. I didn't plan it very well and I ended up asking a company where I had already completed the interviews to slow roll making an offer because I had other interviews scheduled and didn't want to turn down their offer just because I hadn't finished all the interviews I wanted to do yet. This kind of sucks because it's super stressful, but I think it really is best to try to schedule it so that you do all the final interviews you want to do all in the same week or maybe two. I think this is really the main reason to narrow down the search to a small number of companies (like less than 5). There are only so many interviews you can do in this time frame.
Algorithm interview: I did not get any hard questions in these this time around; they were all of the screening question variety, like Leetcode's "easy" (or perhaps easier), where if you know how to write basic code, they really don't require any preparation.
Design interview: I didn't prepare for these because I actually do architectural design at work fairly often (as opposed to the weird little bottle coding problems in interviews, which I don't ever do). I was a little disappointed at how I did in these; it turns out that talking through this under time pressure is not the same as doing it for real, and I often wasn't actually quite sure what to draw in the boxes they want you to draw, because that isn't really part of my real process at work. But I guess these went fine because I didn't get turned down for anything because of this. But I may prepare more next time.
Something not covered in the article, but which I want to mention: The styles of interviews listed here are not the only possible ones!
My new all-time favorite interview I have done was at Stripe. Using my own language of choice and my own tools (ie. my IDE), they dropped me into a fairly large codebase (which looked like it was adapted from an open source project for the purpose of this interview) with a failing test case and asked me to figure out the bug and fix it. This was really really fun and very illustrative of the kind of thing I do at work pretty much every day.
I had another interview with a similar sort of question except it was in the realm of operations. It wasn't quite as great because it was a bit more contrived, but I still really enjoyed it. The contrivance was: you are new and our sysadmin is on vacation with phone service but no internet, we start getting reports that people aren't seeing anything when they go to our website, you are on the phone with the sys admin and your job is to ask questions to get to the bottom of what's going on. This seemed like a hard kind of interview for the interviewer to do, but it was really fun for me.
Stripe also did a "system integration" interview, which was like one of the take-homes mentioned in the article, but was live-coding on screen share. I had to use an unfamiliar json library and an unfamiliar http library and interact with a couple unfamiliar API endpoints and get it all to work together. This went ok, but it was a lot of moving pieces for a one hour live interview, and I think it would have been better as a take-home with a two-hour or so time box.
I will say that I was pleasantly surprised that a lot of people seem to have started moving somewhat away from the esoteric CS-y data structure and algorithm interviews that I think most of us despise.
In the past, as a hiring manager, my best hires by far came from a recruiter that I trusted. His hit rate was amazing. He spent hours interviewing people himself and by the time they came to me for an interview, it was because he already knew they were qualified.
In a world where people jump every few years, hooking up with someone like that seems like it could work out well, if they've built up a decent reputation. Basically like a good contracting company, but for FTE. Instead of multi-stage interviews at 10s of companies (or more), everyone on both sides of the process could save a lot of time and get down to the nitty gritty.
Just spitballing. I am only halfway through my cup of coffee, however. And clearly things like this have been tried, but always on some kind of large scale, which in turn destroys the effectiveness -- because it gets gamed, I'd guess.
But at a much smaller scale, does it work, do people do it?