The tech industry is fundamentally unserious about how it recruits, hires, and retains candidates.
WTF is wrong with this industry?!? You have 4 months to train for a better job and the best advice is to spend the time studying interview techniques?? That's where we are? Teaching to the test?? I can understand an argument of "well, OP wants to get into Google, and this is the best way"...maybe it should take longer than 4 months to get a job at Google. Am I taking crazy pills?
I interviewed at Airbnb, Facebook, Lyft, Uber, and 3 other companies. I received offers from Facebook, Lyft, Uber, and 2 other companies. First year total compensation ranged from 380k~500k...I set a measurable goal for prep. 200 Leetcode questions...Edit: Sad to see that "discouraging" became the top comment.
I have fourteen years of experience. I’d be happy to talk about functional programming, distributed systems, consensus, replication, collaborative text editing, CRDTs, parallel architectures, UI frameworks, team processes, product design, user experience. Was I ever asked about any of those? No. What I get is “imagine you have a function that takes a list…” five times in a row.
Your job posting is like a candidate’s resume. They will only spend a few seconds to judge it, and if it doesn’t catch their attention, they’ll leave. Unfortunately, most job postings are awful.
Interviewers make up their own interviews. This is crazy.
The gauntlet of tricky technical questions is just the beginning. Driven in part by an oral tradition of how the last 20 years of technical job interviews has resulted in terrible hires, interviewers try to assess for “smart and gets things done”. In other words: “subjective and even more subjective.".
You need to collect data. You need every candidate to get the same interview. You can’t make that happen if your team improvises the interview.
Most companies seem to be flying blind when it comes to their interview process. I've found that it's common for recruiters and hiring managers to not know what their processes are looking for, and almost no one is attempting to iterate on their interview processes.
Random employees conducting random interviews based in part on subjective psychological assessments, each producing not data but a "hire/no-hire" recommendation, reassembled by a hiring manager into a decision that would be made only marginally less rigorous if it also involved a goat sacrifice.
Interviews are conducted under pretty artificial conditions, and as a result they wind up being most effective at hiring people who are good at interviewing. This is a special breed of parrot...interviewing isn't a particularly good predictor of performance, any more than your rank in a coding competition is a predictor of real-world performance. In fact, somewhat depressingly, there's almost no correlation whatsoever.
I’m happy to discuss algorithms there [on a whiteboard]—discussing abstract things is more efficient that way. But writing programs, actual programs, in a notepad? Without even running them? What’s the point? Getting the first draft of the code is barely one-tenth of the whole process, followed by compiling, checking, tuning, testing, reviewing etc. Who are we kidding?...It’s like asking a painter to do a painting of a horse, then stop her halfway during the very first sketch just when you can see four vertical lines for legs and judge that. How much will you learn about her?
I was hesitant about taking the job because the interview was the easiest interview I had at any company, which made me wonder if they had a low hiring bar, and therefore relatively weak engineers. It turns out that, on average, that's the best group of people I've ever worked with. I didn't realize it at the time, but this would later teach me that companies that claim to have brilliant engineers because they have super hard interviews are full of it, and that the interview difficulty one-upmanship a lot of companies promote is more of a prestige play than anything else.
Whenever possible, ask these questions exactly as they’re worded to try to get consistency between multiple candidates. When interviewing, please take notes.
After you apply, you are going to hear back from us, even if we don't seem like a good fit. In fact, throughout the process, we strive to make sure you never go more than seven days without hearing from us.
Most companies explain their hiring process multiple times per day (via a recruiter or HR person). X-Team explains it once, when you apply, via a video message from their CEO.
In your first 30 days, you will take over the operation of our existing internal and customer-facing production systems. Working with product and engineering, you will assess our production operations and build out runbooks for the operation of different systems...
After 3 months...identify new opportunities for automating processes, streamlining delivery, deploying new core functionality, and building great tools. You will help make CockroachDB more friendly by bringing your expertise to our database.
You see a lot of talk about moneyball, but for some reason people are less excited about...trainingball? Practiceball? Whatever you want to call taking people who aren't “the best” and teaching them how to be “the best”.
Programmers are woefully underutilized at most companies. What's the point of hiring "the best" and then crippling them? You can get better results by hiring undistinguished folks and setting them up for success, and it's a lot cheaper.