I wonder, if somebody has not a happy story, but an ongoing story of failures in job search - would he write such a story? Or we hear only from those who succeeds? Or, assuming that everybody eventually succeeds, those who take years to find a position won't write about it, as they are too exhausted or embarrassed?
I've heard / read stories from people who tried really hard and failed to find jobs (both within tech, but unfortunately more common outside of tech). Unfortunately they don't get as much traction as people prefer to hear stories with a happy ending
7 months deep, hundreds of applications, blah blah, so to answer your question, for the most part people in this particular situation don't write public stories about it.
1) It can feel like it will sabotage your chances even if it raises awareness of your situation. Firstly because you cannot help but "call out" some of the hiring practices/people, and secondly because, well, must be something wrong with you if no one is snapping you up, right? Which leads into...
2) A lot of really obnoxious folks like to pounce on this and "blame the victim", and then reference stuff like this post to show how "it must be your fault", etc, and "ain't nobody got time for that". It's hard enough to deal with impostor syndrome kicking the brains in without inviting the mob to kick as well.
3) It's depressing to think about it, much less to write all that down where it becomes an objective thing that cannot be ignored. Especially if you've tracked everything in detail (I have). Much more pleasant to sell off your belongings and pretend you're just embracing minimalism and forget about it.
4) Feels a lot like begging, and there are many complicated reasons why people mostly don't like to do that.
People write them - they just don't gain traction. You also don't tend to write them with your name attached because that literally throws your own name down the drain.
People are also not interested in hearing troubling stories because everyone has a troubling story. They want to hear how you succeeded because they want to emulate that success. They want to learn the "one small trick" that will lead them to finally getting the job of their dreams.
If you ask for it... I've been hunting for a job for more than a year now. Well, perhaps not hunting as I haven't sent out nearly as much resumes during that time as the author of this story. Though when I do apply, I usually also get to an interview.
The interviewing causes a lot of stress to me. Even though I have never failed a coding interview, I utterly hate doing these. (Thankfully I've never had any hard leetcode problems thrown at me - I would have failed miserably.) I have also been a lot on the other side of the table, though I found even that to be a big source of stress to me. I personally believe these coding tasks are only good for filtering out the bad candidates - you can't use them to find great candidates. The last big company I worked at gradually steered towards harder and harder coding problems, until one day I just pulled out of the interviewing process as I felt that I personally would no more get hired.
I wish more companies would be more flexible in their interviewing process. Like, I have several open source projects which mostly revolve around various forms of static code analysis - why do I need to prove that I can write fizzbuzz?
Recently I had a pretty nice coding interview where the main task was not about me writing code, but instead reading the code that a junior developer had written and helping him sort out why the code doesn't work and how to improve it. This was the most real-work-like task I've experienced, I even found myself enjoying it.
Most of the rejections I've had have been along the lines of: "While we find your technical skills excellent, you don't really look that motivated / we think we might not have the right kind of challenge for you."
So, I'm in a bit of a dilemma. If I would strive to send out more resumes, most of these jobs are likely something that I'm not overly excited about, and so I will get rejected because I don't look committed enough. But if I try to look for a dream job, then that will likely never happen. I feel like I'm doomed either way.
During this whole job search I did get one offer, but I rejected it, as I heard rumors about the owners of the company being complete assholes. (Like monitoring workers through security cameras to make sure they're working at their desks.)
Thankfully I've had enough savings from my previous employments and I tend to live a fairly cheap life. Nevertheless, my savings are starting to run low now, which adds pressure to finally find a job. Well, I still have the option of selling my second house (so I'm still far from being financially ruined).
Thanks to the author for taking the time to write this up. I think it is a fairly realistic description of what the process is like for an engineer who has spent several years working in Silicon Valley at a well-known company.
The key takeaways, coming from someone with a similar background:
* Rely heavily on your personal network to both identify worthwhile opportunities and for referrals which, in the Before Times, pretty much guaranteed an interview
* It's worth thinking through what type of job would make you happy _before_ you get an exploding offer
* They had a _full_ pipeline, interviewing every day for three weeks straight. It's a grind, but you definitely get "in the zone". Additionally, setting this goal ensures that you are being properly proactive/aggressive in pursuing opportunities.
* You will probably see a design interview at any FAANG or hot startup. The classic one I've seen like 5 times is "how would you design a social media feed?" I still do not know the "correct" answer to this question.
I don't have hard evidence for this but it seems that the demand is still very strong for experienced engineering managers. I am curious to hear if the author interviewed for SWE positions or engineering manager positions have they have filled both roles in the past.
author here - glad to see this post on HN, and glad you liked it!
re: your last question - I interviewed for both SWE and EM positions, depending on what was available at any given company. At companies that had both roles open, I talked to folks to understand what they expected out of EMs vs engineers, as it varied a lot - and then I picked whatever was more appealing to me. In aggregate I went for 70% SWE / 30% EM roles (roughly)
Some models I've seen (I'm sure there are some other ones):
Pure people manager - HR admin (compensation evaluation etc), professional development, project management, team resourcing, etc. Tend to see this less in very small companies.
TLM (Tech Lead / Manager) - Does all of the above, plus also acts as a tech lead for the project - technical design, mentoring, and possibly some coding. Tend to see this less in very big companies. TLM are typically first-line managers, I've not seen a TLM that manages managers (i.e. Director level).
Rarely, hybrid engineer/manager - Does all the above, plus expected to contribute significantly to coding. Honestly it's a red flag for me to see a team hiring for this archetype, in my opinion it's a pragmatic stopgap you might find yourself with as a small company, until you can hire an engineer or manager to split the role; it's not something you should explicitly hire for.
Sometimes, product lead as "mini-CEO" - manages the team/org and owns product direction. Typically will have a tech lead on the team to own that side of things. This can grow into a Director position, managing the team managers and still owning the product function.
thanks for hitting the nail on the head - this is what I saw. I was comfortable with TLM/pure people manager, but not the hybrid (been there, done that - it was rough).
> The classic one I've seen like 5 times is "how would you design a social media feed?" I still do not know the "correct" answer to this question.
There is no "correct" answer to it. It is an investigation into how you break the problem down and approach it. When presented with a challenge to it, how do you then look at it and consider how to solve it.
There sort of is though, right? At a meta level, making sure you touch on the points they want you to touch on ("is this workload read heavy or write heavy?", "fan out vs fan in", "eventual consistency") is a right answer that you phrase in the form of a series of questions designed to look as if you've never been asked the question before, yeah?
> They had a _full_ pipeline, interviewing every day for three weeks straight.
I honestly think I'd be physically incapable of doing this. I'm on the HSP side and even a single set of interviews is enough to drive me into an insomnia/anxiety cycle for weeks. I can't even imagine what this would be like for me. Albeit I admit it's the best way to get the job you want. Maybe I'm in the wrong industry...
This is incredibly common. I hate running interviews - we do the leetcode whiteboard pressure cooker crap - it's a policy I have no say in unfortunately. I've had candidates with strong backgrounds go to pieces right in front of me - it's awful to watch and I hate that I had anything to do with making someone experience that.
More people than you might imagine take Xanax to get through interviews.
Or if there is some freedom around questions pick something that can be worked through. The worst are questions where if you don't know the algorithm or data structure there is no way to work it out from first principles.
> More people than you might imagine take Xanax to get through interviews.
You know, that's actually a great idea I never thought about. I'll see if I can get a script next time I go through interview loops. Might make the process less hellish for me, I hope.
I don’t know whether it’s more disturbing that our interview process is structured so that Xanax is necessary in the first place, or that so many people in the comments jump in to say what a great idea it is…
I had the same thoughts. Some people need various kinds of medication, and that's fine.
But if a normally functioning person needs to start Xanax for the purpose of getting through (let's admit it) a power-play hazing ritual that has little to do with the job, then maybe that person and the rest of us should go tell those companies to take a hike. The EEOC should, as well.
Someone posted on HN recently that they slowly drink wine from a mug during remote interviews to calm themselves. People also recommended a light beta-blockers (which are incidentally used to cheat in some concentration sports like bow+arrow shooting). It sounds like a good strategy.
Maybe it's just me, but when I have done that, the first one or two are the hardest, then you get in a groove, and become more aware that its just a numbers game.
I think we're all affected to different degrees. I've done a few interview loops in the space of a couple weeks and it never got easier. It just got worse as my insomnia got worse. I feel it's a miracle I can pass interviews at all since I'm operating at like 10%.
I don't understand the numbers game approach. It's like a war of attrition - you're definitely going to suffer if you pick a fight with everyone you see.
I prefer the 'choose your battles' approach. Interviewing at 3-5 places (not 35), and being prepared to 'win' before I start, as well as possible.
I do find the marathon interviews are difficult, but the difficult parts for me are front-loaded - the initial anxiety, gradually building to being desperate for a break (or to escape) around halfway through. But then like a runner in the zone or coasting through the second half of a double shift on sleep deprivation, the latter part is relatively smooth.
The “just done” thing can be kinda dangerous too - I did the same thing, and at the end of my hell week, I was getting close to accepting an offer I knew was subpar, just to be done interviewing.
Shit I'm brain-dead by about 3 hours into an interview or set of interviews, even if it's not the leetcode type. It's draining in a way that no actual work, even hair-on-fire emergency work, is (except maybe sitting in very-tense meetings—that's got a similar effect on me). Doing that more than once or twice in a single week might make me consider applying to clerk at a gas station instead.
Haha, I feel the same. Luckily it’s not everywhere like that and you could do much better than a gas station clerk, the biggest hurdle is to find the best place where you’d be the best fit at, the interview would likely run well and everything fall into place after that
Yeah, I've had the bad kind that's long enough in a day to totally wreck me, like... twice. Failed one of those two hard, too, LOL. Rest of my experiences have been way more chill in my ~23 years in the industry. I can't imagine targeting a segment where such processes are the norm—which is why, even if I have the talent to work there (and, who knows, maybe I don't) I'd never even try to apply to FAANG and friends, since there's a 0% chance I'd make it through one of their about-a-whole-day processes without bombing the entire back half, no matter how much I prepped.
It could take a lot of harrowing interviews before you find the peaceful place that doesn't basically haze interviewees. I think probably you've gotta be willing to just walk out of a bad interview situation. Maybe even having that mindset (that there's a way out) would help with the nerves?
Or maybe the hiring process is broken beyond repair when engineers who are perfectly qualified need to inhibit parts of their brain just to 'perform' at an artificially inflated level.
This right here. If there are more and more of us who do just fine in an actual engineering job but need beta-blockers or other anxiolytics just to make it through an intense set of interviews maybe something's broken with the hiring process?
Same here. I've been known to have panic attacks during interviews where I have to excuse myself and get out of the room ASAP.
> Maybe I'm in the wrong industry...
I wonder this as well for myself. I really like software development, but the interviewing is just getting to be too much. It would suck to have to change careers away from something you're pretty good at and really like just because of what basically amounts to hazing.
It's more than lame, its an awful bastardization of how our trade should be evolving. The only real accountability that can be made is to become financially independent and just start building your own things. Ship to market and not fret about revenue growth.
That's actually exactly why I do such a grind when I'm interviewing. The first set of interviews affects me like you said, but if I keep at it, I get used to it. Which means the only way for me to do well is to keep at it until it's routine.
> * They had a _full_ pipeline, interviewing every day for three weeks straight. It's a grind, but you definitely get "in the zone". Additionally, setting this goal ensures that you are being properly proactive/aggressive in pursuing opportunities.
As a married man nearing his 40s I can't imagine doing this. I need to keep my full time job to support my family, so just quit and focus 100% on prepping is not an option. Assuming a 5 1-hour round interview, I would need to take PTO or somehow juggle my calendar to take interviews. I'm horrified at the thought of taking one week off and doing interviews for 5 days straight. I guess I'll cross that bridge when I get there.
I've done a 5 1-hour round interview once, and have refused to do them since- including actively turning down a second interview when the process wasn't clear prior to the initial screener call. I've the good fortune of pretty much being able to pick and choose between jobs, but I also essentially have written off working at a FAANG and at companies run by former or wannabe FAANG engineers.
Fortunately, there are still lots of good startups, small and medium sized companies that pay well and actually respect your time.
Personally, 30–60 min HR screen/people stuff and 1h tech interview, with maybe an other hour or two of paid take home assignment.
Along with past experience on CV this should be enough to assess whether a candidate is suitable for the 3 or 6 months probation employment.
If after all this you still can’t decide whether the candidate is a match and worth keeping permanently post probation, your hiring and working processes are seriously broken. I don’t understand then need for multiple, hours long, dozen interviewers processes.
To respond to both you and the sibling comment, a short take home assignment which is used to guide a final interview is fine for junior positions.
For senior positions, I would rather spend an hour or two talking through hypothetical scenarios, including design decisions and teamwork. I want to hear deeper knowledge from a candidate, not "do they know valid syntax and are they able to solve trivial problems".
As in all things, it depends on the company that is doing the hiring and the role they are being hired for. In some cases, "senior" roles are basically individual contributors with a few years of experience. In others, a senior should be able to translate business requirements into a big picture technical solution, break down the portions of the stack they are familiar with, and explain what assumptions are made and what unknown factors need to be sussed out in order to plan a proper implementation.
The latter portion is difficult to do with a take home assignment without careful planning for the follow-up interviews. 5 hour round-robin interviews typically (in my experience) end up being "live leet code" sessions that don't represent day-to-day work at all.
“Thanks for accepting our offer. When would you like to start?”
“Well my notice expires at my current job in two weeks but I’d like to take a short break in between to decompress / spend time with my family.”
“Obviously we’d like to have you as soon as possible but we don’t want to keep you from your family. How about six weeks from now?”
“Works for me.”
Obviously different companies/roles will be differently flexible and bigger companies will be more tolerant of delaying start by longer. And you can only do that if you get a job offer somewhere. But the parent comment wasn’t even suggesting taking holiday to interview for a week straight right?
Given the choice of being able to take little Timmy to Disney world and providing him food and shelter and being able to cash flow him through college, he will get over it.
Before you respond that I don’t know what it’s like juggling a family and I must be a fresh college grad, the 74 in my username has significance
As someone that comes from humble backgrounds from a third world country, i went on 0 vacations. All the money was put in for education, food , clothing and shelter.
Quitting your job to focus full time on prepping for the tech interview had a good ROI during the fever dream market of 2021 and 2022. I'm not so sure that's true anymore. At the very least it has an inherent risk (dwindling savings and not getting a good offer). Right now I'm more risk averse so I'd follow the tortoise approach by interviewing little by little overtime.
A pity since the TC game is played by pitting companies against each other in a bidding war. I guess I'll have to figure out my strategy when the time comes.
Note that the person in this article (a) wasn’t working at the time and (b) deliberately wanted a lot of interviews to explore their options. I think it pretty obviously isn’t the only way to do things.
One needn’t interview at so many companies. If one is in no rush to quit then just spread interviews out over a much longer time.
I think the problem these days is that it’s so hard to fire someone. I’m not sure if it’s legal, cultural or otherwise, but I constantly see coworkers who are at best useless and often detrimental being kept on and on and on.
So the game becomes to avoid hiring someone like that at all costs, because once they are hired they are impossible to get rid of.
I wish employment was more like contracting - you give someone a trial for a few weeks and then end it it’s not a mutual fit. No long interview necessary - the job is the interview.
Unless the person is truly a net negative producing programmer - firing, hiring (1-2 month process), onboarding, and then hoping they don't job hop tends to be even more expensive for an organization than having them plod away slowly.
If they are a NNPP, gathering the necessary documentation and putting them on a PIP or shuffling them to another team is likely an easier path.
First, many more applicants than positions. If you've got 100 for a single position, then selecting the best 10 out of that set will look like a high hiring bar when it is 'just' a "we don't have time to interview everyone." And many positions get many more than 100 applicants per position.
Next, the aspect of job hoping that has become fairly common in the past decade. If the average tenure of the person hired in the last 10 years is decreasing because the person can get paid more by switching companies then the other side of the push will be to raise the bar so that the new hire will require less onboarding and be able to be productive faster. If the company is using Kafka in house, and it takes two months to really get to the point of understanding it and the person leaves after a year, that's two months lost. So, instead hire someone who understands it and only requires a week to pick up the peculiarities here so that when they leave in a year you haven't lost a portion of the time getting them familiar with the tech stack.
Lastly, it is a pain to fire someone. You need documentation about their issues and that it is performance related and that its not done during a 30 day window where they've fired 49 other people and that HR is ensuring that they've got the CYA on a wrongful dismissal documented. And then, even when you do fire someone, you've got to go back and reopen the position and hire again and that takes two months from the time you submit the job description to HR to starting a new person along with at least a week of manager and interviewer time in the process.
The safest thing for a company to do is move them over to a team that does low priority, low impact things and never promote them in an engineering capacity. Note that sometimes when you move a person from a dev job to a QA or operations job you'll get the person coming back with constructive dismissal which takes time to handle.
Maybe a little more tricky in Europe, but in US and Canada, all you have to do is pretty much “this isn’t working, you failed your (unachievable as needed) PIP, you’re out in two weeks”. In some states you apparently don’t even have to pay accrued but unused vacation..!
As an engineering manager on multiple projects, my calendar is jam packed. My developers who are on one, or at most two projects have their calendars fairly empty (which is a good thing). I had folks who took many interviews within a short time span and I had no clue at all. I barely have time to take a lunch break.
Yes - I can manage my calendar better, but then people would get suspicious, or I'd be worried some emergency comes up.
When I used to interview, I'd just start having more "doctor appointments" or what not and block off a few hours. Also, these were back in the days of going on-site for interviews. My engineers who quit did it all remotely, even the final round (covid times...) so it's more manageable.
You need to actively prune your calendar. Regardless of whether or not you want to interview for a job. If you entire working day is filled with meetings, you will not have the time to actually do good work as manager that only you can do. It's probably worth your while to block off 2-3 hours of your work day for individual contributor work (say thinking/working about strategy or product or engineering roadmap.) Just go out to the local coffeeshop. Invite other mangers occasionally to join you. You just use that time to become strategic about your work. When the the time comes to interview, nobody will notice that you've not been around for a few hours. CEOs routinely do this when they have to take sensitive meetings. They are not usually in their offices most of the day.
"doctor appointments" are also great for refusing full day of interviews. I have used that technique before. Or "I need to visit a friend/relative in hospital". They back-off immediately.
> As a married man nearing his 40s I can't imagine doing this. I need to keep my full time job to support my family, so just quit and focus 100% on prepping is not an option.
That’s by design. Most places don’t want people like you. They want pliable, naive employees who will kill themselves for the company and not count their hours.
Yeah if you're good and have the resume/experience to back it up, you won't have any issues getting great offers even in this market. Great candidates are not easy to find in any market.
This must be extremely subjective. Many times over I see very well qualified candidates spending months in this market looking for a position - when it took them weeks before.
Anecdotally, this. I'd never spent more than 3 weeks looking for a job prior to my October/November job hunt post-layoff. This one took about 6-7 weeks, all told (and likely would have come out closer to 8 had one branch path played out). I was intentionally looking for remote-first companies that seemed halfway stable, and was prioritizing those open to sub-40h workweeks (30h, 4DWW, 9-80, etc.), which admittedly, all three shrunk the pool tremendously (each), but particularly on workweek length, I was negotiable. I still had an overall horrible experience with the dozen or two companies I chatted with, and notably got some absolutely wild rejections (however, quite thankfully, also landed somewhere great after sifting through all of these):
- absolute crickets, which made up about 33% of the "rejections" after a phone screen. This was unheard of pre-layoff rounds, but I understand that recruiters themselves suffered a lot of losses in this wave so I somewhat get it.
- "We only hire SREs, and any role leveled Senior+, in San Francisco, there's too much context to offload remotely for leader roles" (this is, itself, such a glaring red flag that I was considering walking from this process anyway)
- "You mentioned your preference to not do Coderpad-style interviews, and sadly, we only hire based on timed+video call Coderpad interviews, good luck!" (I basically never ran into this pre-2022 despite my stance on this issue almost never changing in my career, this was the cause of several rejections this time)
- A subtype of the above, bombing a surprise (or once, "forgot to ask ahead of time and got scheduled for one that I decided to go to anyway") Coderpad/l33tcode/etc. style interview. Rejections on all but one of these, where I advanced and backed out for other reasons.
- Being an SRE not married to Kubernetes I've learned is now often akin to no longer being an SRE. In fact I now question whether I truly consider myself "an SRE" in the current startup climate's sense of the word anymore. As an egregious example, one interview asked me to rate my skills and opinions on Kubernetes specifically. I answered honestly that I thought it was the right tool for many jobs, but not all jobs, and that I wouldn't claim to be a guru at it as I often use other tools that fit the tasks at hand better. Rejected.
Cargo culting the wrong tool is a pretty good sign of a company that will eventually not make it from a tech point of view so better to let such go. If you're Calimero and you want to pretend to be Godzilla that's fine by me but not need to tie yourself to that particular mast.
They would much rather miss out on potentially talented individuals than hire one sub-par person. They care much more about avoiding false positives than false negatives.
I also had someone candidly tell me that they deliberately select for candidates who have put extensive time into preparation because that correlates with effort and the willingness to work under crunch conditions in the job. Gross, but effective.
By this logic, maybe leetcode is a sign of somewhere that indulges in death marches and should be best avoided working for?... except when everyone does it, and/or applicant is out of work
Exactly. I was fired from a tech job a decade ago and I found plenty of food to eat in the dumpsters and it wasn't hard to get enough day labor cleaning up puke that I was able to buy a tarp to sleep under.
Anecdotally, a large number of experienced engineers I know at big tech companies have been secretly hoping to be included in an upcoming layoff round.
So many people have mentally checked out of their current jobs but are too lazy to grind leetcode and go through interview loops. Unless you are in a financial crunch or have other issues like visa sponsorship, getting paid for 6+ months to fully focus on the next step of your career sounds like a dream.
Microsoft/Google/Meta/Amazon/Salesforce and the like are spending many billions of dollars and unknowingly setting up the largest startup incubators in the world right now (and getting nothing out of it in return).
Wondering why they are giving such big serverences. Surely its not out of goodness of their hearts. 7 month severance at google seems a bit over the top to me.
“Lazy” is the wrong word. People work for 8 hours a day and then are expected to cook, clean, exercise, and maintain some sort of social life. Adding in Leetcode on top of that is going to cause something to give. There’s only so many hours in the day.
As evident by my current habits - I'm far more willing to walk in the cold wind and workout at the gym for two hours than I am willing to do even one leetcode problem.
I've been going to the gym 4-6x/week for the last couple months. I cannot get myself to do almost any leetcode even though I should be doing it. I've just accepted I'll not work for a while longer and keep going to the gym anyway.
Regardless of the exact word choice, if you have a life goal that requires some extra effort and sacrifices, and you cannot get yourself to do it, you can't really blame your busy life or anything else. There are others who do all of the above and still make the time, and they are going to be more successful than you while you continue to complain about the industry/interview process/leetcode/whatever else.
That grind set mindset, “you can do anything you set your mind to, so you can only blame yourself for not having {life goal}” is a recipe for depression and burnout
Now if only 6mo (or even 3mo) severances were the norm outside of FAANG on this wave, it wouldn't have been quite as painful of a lurch for some of us.
Thanks for sharing. Congrats to the author. 11 offers is amazing
I doubt one can get so many in today's market but the good thing is you dont really need so many, 1 good one is enough. Ideally you have 2 so that you can nagotiate more easily.
thanks! I agree that you don't need this many offers - I took the time to interview at more places since I wanted to explore what was out there. Wouldn't recommend interviewing this heavily.
That first impression (and how you tackled it) of system design interviews makes me question their usefulness. Like, how good of a signal can companies really be getting if it's too different from real world systems?
Feels like an artificial wall too - many companies don't approach the scale where this stuff matters, so getting that experience is hard.
To be fair, these interviews provide a lot of valuable signal in terms of how you approach tradeoffs and explore a problem space. In that sense they're quite similar to the work I did at $dayjob, just in a compressed timeframe (which makes it challenging). As you said, the questions are similar to real world systems at these companies -- it's just that you won't have experience with these systems unless you've worked at these companies before. It's a catch-22.
> Like, how good of a signal can companies really be getting if it's too different from real world systems?
There are "layers" to the signal you can get from system design interviews:
1. Are they aware of "big concepts", indexing, sharding, queues, scheduling, etc.
2. Are they comfortable actually using and manipulating these abstractions in an academic sense? e.g. new college grads may have never used an index, but can walk me through how we might use one to solve a given problem.
3. Do they have experience operationalizing these concepts? e.g. in DB design questions I love it when candidates are able to walk through a zero downtime migration plan from before and after we add a feature.
4. Related to 3, How do they weight tradeoffs in the system? Do they drill down into product requirements to help inform these tradeoffs?
A system design interview often lets me say: "They're not experienced enough at our scale for me to want to hire them at level X, but I'd hire them at level X-1"
All this said, I do think more companies should try to draw design interview questions directly from their own company experience e.g. imagine we didn't have feature X, how would you add it to the product?
> imagine we didn't have feature X, how would you add it to the product?
I think pulling specific ideas from your actual system is full of traps. These are probably problems you've thought of - both actively and passively - for days, months, or even years.
The person you're interviewing has had no such benefit, and it might be very hard for the interviewer to be able to separate what they think is reasonable and what is actually reasonable.
> I think pulling specific ideas from your actual system is full of traps. These are probably problems you've thought of - both actively and passively - for days, months, or even years.
The first time you give the interview certainly, but you have time to formalize and tune the interview. Write down what you're going to ask, what signals you're looking for, the quality of a solution you expect. Socialize this with engineers who weren't directly involved in the design of the system, ask for their feedback.
You can usually iron out a question in 10-20 interviews and make it really stellar within a 100. I know that's a lot of potentially wasted hours, but the ROI in terms of candidate quality is worth way more.
That part about "write down the question" and the "what are you looking for" is a rather important part that most people ignore and just wing it.
By having that rubric down it becomes easier to make the objective choices (that can be backed up with HR). Additionally, that same question (with the same rubric) can be used by other interviewers for other candidates and overall, you would hope that the same candidates would get the same thumbs up / thumbs down evaluation no matter who asked the question or considered them.
Granted I've only attempted the Amazon interview of the FAANGs, but good job to the OP for cracking the FAANG interviews with only 60ish leetcode questions. I'm at 150 and have yet to crack any.
To be clear, I explicitly chose to not interview at FAANGs since I was previously at a FAANG and wanted to try my hand at a different type of company. I'd probably practice a bit more for FAANGs
Is the comp comparable to FAANG or is it a big step down? (At least in terms of liquid compensation)
This is partially why I haven't been interviewing. All the big p(l)ayers have slowed down their hiring so much - why bother taking a role that pays less than half.
It varied, but I would say most places I looked at were comparable (or higher). there were a few places with lower comp that I was OK with (startups, or nonprofits).
What kind of places? Startups just don't pay the same amount. I'm not getting offers for $400k+ liquid from startups and most old corps, ever. Maybe you find one that pays half and that's about it.
Not OP. But I would say that from my experience (I've avoided FAANG for culture reasons, not interviewing reasons) and I can get comparable offers to my FAANG friends at least in terms of Salary & Benefits. The big difference is bonuses, specifically stock bonuses.
So a lot of the crazy salaries you see people brag about are often taking stock programs into account. And because tech stock has been generally hockey stick growth, then the TC (total compensation) is too.
But aside from the stock, you can get good salaries and benefits at lots of non-FAANG companies. I actually have better insurance than my brother-in-law does at his FAANG job, which is already considered very good. In fact its the best insurance i've ever had in my life.
Wow. I thought 60 was a lot. I don't think I did any. Honestly, if you spend that much effort practicing something, and it's not paying off, you might have the wrong strategy. E.g. maybe you are failing something besides coding, or maybe you are missing some other fundamental background that you need to go back and study.
60 is quite low for leetcode. There are a few dozen patterns to learn. Most people will probably do on the order of 200-300 before they are truly comfortable. I've heard some people do it in as little as a month or two with 8 hour days. But most people can't do that because you will go insane and suffer extreme burnout.
> if you spend that much effort
yeah that doesn't start until like 400+ LC problems. If you're still struggling with mediums at that level then sure. But at <200? That's entirely normal.
Sure you may get lucky and get in Google with 10 LC problems under your belt. But those are not good odds. Places are asking LC hard nowadays. And you really don't want to see what people in India are putting up with.
> Focus on your physical self: make sure you've gotten enough sleep, have food ready to go for lunch, and have breaks between the interviews if possible. If the interviewer asks if you need a minute at the start, and you do - please take it.
This is great advice! I interviewed in 2022 and found that I performed significantly better when well rested. I also found that eating healthy helped during the post-lunch interviews.
If you would be very successful in that role... but the company says no... that is a poor fit and is a reflection of their ability to hire qualified candidates to meet their real needs.
I'm confused why this is funny ha ha to you...Care to expound?
I was genuinely glad I didn't get those offers as it would be awkward turning them down. As an example, in one of the cases they were looking for someone who could do a lot more frontend/product work (something I don't have much experience in) so even if I did join, I wouldn't do well. That would suck both for me and the company.
(yes, it is a bit of cope - but hey, it's only through interviewing/learning more that you find bad fits)
On my last job search I found that overloading myself with interviews was very stressful. It's one of the reason I will no longer continue with any process that has take home assignments - at one point I had 4 different assignments with overlapping due dates. Far too much stress (and I was ghosted on all of them).
It's also not fun to be waiting to hear from the places you're really interested in while you've multiple exploding offers. One of the offers exploded before the date I was told it would. On the plus side I was able to use the offers as leverage to speed up the process at the job I finally did take.
If I have to do it again I will set some sensible limits on myself.
I don't blame you. Take home assignments are ridiculous, anyway. My personal time is valuable to me and it's unrealistic to expect me to do homework just for the privilege of an interview.
In my last job hunt, I flat out declined further interview if I was requested to do a take home assignment.
Would you prefer a take home or a live coding challenge?
I have the total opposite experience. I have rarely done well on a live code problem, I clam up. Tbh it’s humiliating, not representative of my actual skill set, and a waste of everyone’s time.
The amount of time I’d need to study to be good at live coding is less than doing a couple take homes for companies I’m actually interested in.
The advantage of live coding challenges is that they require the employer to put skin in the game by allocating 1 hour of their own engineers' time. This encourages them to filter candidates beforehand and discarding bad-fits early rather than wasting every applicant's time even if they have no chance to begin with.
The idea of a take home originally appealed to me, but my actual track record with them is very poor. They are usually too open ended - sometimes they'll say to write some service, that it shouldn't take more than an evening, and then you're left questioning how much they're expecting. Do they want a quick proof of concept? Do they want unit tests? Acceptance tests?
Then there's the follow up - often a rejection with no comments on the code whatsoever. Or you get completely ghosted. Or, and this is the real kicker - they finally ask you to come in, where they have you do leetcode on a whiteboard anyway.
If the process was "Here's what we're expecting, turn it in by X date, we'll have you do a review with the team, and assuming all goes well, we'll talk about an offer at that point" I would be a lot more open to them. But that's never the process.
I strongly agree that rejection w/o any comment on the project you just spent 4-10 hours on, is very frustrating. Of course, it's just a subset of the whole interview process, not just programming, you never know what the actual reason you got rejected was.
You are more likely to be ghosted at this point in the interview process. I'm leaning towards skipping them. The online ones are not bad unless I have to entertain the interview while trying to work.
Ugh yeah, one place I worked at handed out these tasks and specifically didn't mention to write unit tests despite it being a hard requirement because "We don't want people who don't do this without being prompted".
I personally prefer take home problems (I also have a bad track record on "speedrun this Leetcode problem" interviews). However I think it'd be great if applicants could choose one or the other, without any bias in either direction.
Personally, I'd prefer an actual small contract gig. Most companies have something tangential that they'd like to have but may not be worth dedicating their full-timers to, or isn't directly in line with their main focus. Some small tool, bit of automation that would help, or minor project.
It gives us an actual chance to work together professionally on a real thing. I get actual pay. The company gets something actually useful (not just a puzzle solution). The team can keep their focus on the bigger stuff. It's kind of a win-win.
It does need to be something rather small and non-critical, yet relevant enough, which might be a little more difficult than just picking a generic puzzle. And requires a little extra setup for the contracting and pay. So I can see why many don't bother.
It could be worse; imagine you go through multiple algorithmic rounds and a take-home task to get into TopTal, then when finally there you still need to bid for jobs against 1000s other developers with a TopTal matcher picking the cheapest ones (imagine $30/h for ML gigs), and even if you are picked by the matcher, you still need to pass client interviews.
Having so many interviews makes you feel more relaxed for every interview because you become numb to it. You don’t care if you flunk your FAANG interview because you already have a good chance with a mid-sized smaller company, which makes you even better for the FAANG interview.
I did over a dozen interview loops when I was looking last year and I felt great and at the top of my game.
I always thought the idea of a take-home sounded appealing, especially when I first heard of them ~15 years ago.
The first time I found a bug in a company's take home project spec rather spoiled them for me. And sadly, that's not the only time that happened! A candidate who puts more effort into it than the person who created it gets rewarded by feeling confused or like they're missing something because it doesn't add up? Nope, not great.
And now, 15 years further along, the idea of investing 4+ hours of my own time without even a human to ask questions of or discuss things with just has no real appeal (I've seen some that expect 8+, even).
If some companies do take-home assignments and others don’t, I think that’s maybe good in general as it means there’s still a good chance for people who don’t like the assignments and for people for whole the assignments are a great way to show their skills (and who eg perform poorly in a more traditional interview).
How is the technical interview process valuable _for companies_ at this point when it seems to be evaluating how well you can prepare for their specific leetcode interview, and how well you practice the incantation of the system design problem (make sure you follow the template and the pattern!) - do they really think they're selecting the best candidates, and not the most practiced interviewers?
Beyond the barest basics, 99% of the time the only thing that's genuinely relevant is whether or not the team wants to work with the candidate. Almost nothing else that is relevant is even knowable until after they're actually working. Exceptions only prove the rule.
It's a sham but I guess it makes someone feel like they've contributed value somehow.
It's a selection for socio-economic status. Hiring people who have enough excess time to do this grinding excludes people like parents of young toddlers. So.. you'll probably get a bunch of young single people w/ enough income to not need to have multiple gigs.
Since when was ‘parent of toddlers’ a kind of socioeconomic status? (Not that I disagree with you that it disadvantages such people).
Also note that the OP said they found the coding questions were mostly easy/easier than they expected so maybe the amount of work required (for older/more experienced candidates) on preparation is not so high? I dunno.
I think the best way to interview is to just have an experienced, respected worker or two ask some questions, which hopefully leads into a normal conversation about work. Talk about specific problems, nerd out about tech.
I asked ChatGPT one of my company's interview questions (which involves designing a bloom filter). It got it very subtly wrong; when asked to fix things, it made it worse. I would definitely not use it to interview for jobs yet, but I do think it would be good for training interviewers to detect BS and suggest "hints" that lead things in the right direction. Practice interview without wasting any human's time!
Meanwhile, humans have not really struggled with this problem. We tell you what a bloom filter is, you just have to write the code to spec. (This is different than some interviews where you need to know the answer to the trivia question; know what a bloom filter is and how to implement one, or you fail. ChatGPT was not capable of either.)
Overall my take on the current state of AI-produced computer programs is that the programmer is forced to take on the role of code reviewer and detail checker, which I think is a more difficult problem than just typing in code in a green-field environment. The thing that's difficult about reviewing code is that things can diverge away from your mental model so quickly, that you don't know which details you should be checking up on. When you're writing it from scratch, you don't lead yourself astray in the same way.
In a few years this could be completely different, of course.
It's been working well for me all things considered. The harder the leetcode problem, the more I have to ask it to fit the answer it gives me, but I have always gotten it to arrive at the correct (and most efficient) answer. I'm impressed. You'll have a better time with it if you can tell it what's wrong with the code, even if it's just "given this test case, I expected X but this code gives me Y".
You don't need OpenGPT (or whatever else) to "cheat" at interviews. Simply copy pasting the prompt in Google is going to get you much better results, most often the exact leetcode page that the question was lifted from (with very useful discussion and solutions).
Of course most competent companies will ask a minor follow-up which will stump candidates who are relying on such tools.
If you're good enough at prompting ChatGPT to get a working leetcode hard solution in the time allowed, you're good enough at writing complete and correct code for the job.
I've applied to interview a few places I never plan to work at, just so I could do their leetcode interviews. It's like a brain teaser book but you also get a live human evaluating.
I sometimes interview just to stay somewhat sharp. I interview with Amazon every time they ask, which is every 6-12 months, and they actually gave me Leetcode Hard last go around in October. Usually they give me Leetcode Medium. It's always for a SWE II role so that doesn't explain the increase in difficulty. Makes sense they are being more selective ahead of layoffs though. I'm sure someone high up knew the layoffs were coming about a year in advance.
I get that it's still a candidates market (especially for strong candidates like OP who can get 11 offers from 13 full attempts), but the spreadsheet of questions you should be asking a company linked in TFA has some eyebrow raising notes and unreasonable expectations imho.
For example - there's a big pushback that any hiring manager worried about a candidate who don't have required skills they could learn in 6-12 months is "quibbling". Is this a generally held belief? In the startup space in particular, most folks I interview frequently have consistent < 2 year stints at most if not all of their prior companies. Expecting a 12 month ramp-up time on a particular piece of technology needed to do the job would be an immediate no-hire from me. If I personally joined a company and couldn't meaningfully contribute for the first year, I would consider that a complete failure and expect to be let go. Do other people feel differently? Perhaps this expectation is more applicable to larger companies than startups?
This is why we can’t have nice things. Every company wants to make minimum investment in hires and hires want to jump to get paid as much as possible. Game theory playing out.
If you are doing Front-End dev pushing React Components, I think you should ramp-up from Week 1. Some other comment here mentioned this though: some fields it's not possible. If you are doing drivers, kernel, ebpf, or say you are programming Bitcoin main node; you probably need to read a lot before you are able to make any contribution.
Hiring people all too often focus on required skills like 'X years of experience with generic tech Y' and look for those buzzwords on the resume.
But the real thing is, every company has its own processes and procedures, its own legacy and proprietary code, its own business and product goals in its industry, etc. That's where the real ramp-up comes in. 6-12 months is not a bad ramp-up target.
Would you really rather have someone who knows new tech XYZ very well and can hit the ground running with no ramp-up, but breaks process, refuses to touch the legacy code, knows nothing about the industry, and builds things counterproductive to your business goals?
Or would you rather have someone who doesn't know new tech XYZ at all and needs to ramp up, but will gladly pick it up while also learning and adopting your processes, legacy code, industry, and business goals, in order to contribute to the best of their ability?
For that, you not only need to learn the new tech, but a whole lot more. Learning the new tech is the least of it. And industry/domain experience isn't perfect but is worth a lot.
Yes, they should be able to meaningfully contribute fairly quickly, even with things that are new to them. It'll take a while to get really good though. But while they're ramping up on everything else anyway, why not let 'em ramp up on the tech? It's a relatively small thing in the big picture.
> Would you really rather have someone who knows new tech XYZ very well and can hit the ground running with no ramp-up, but breaks process, refuses to touch the legacy code, knows nothing about the industry, and builds things counterproductive to your business goals?
It’s not an either/or someone with experience should be able to do both, at my current job and my prior two jobs, I was specifically hired because the manager was looking to bring on someone who could lead initiatives and was a subject matter expert.
Well my last two jobs prior to my current one - the current company I work for has quite a few people who know my specialty well…
Those are some impressive numbers. While it seems clear that you can get interviews applying through websites and recruiters, I'm amazed by how effective networking is. Any suggestions on how I should manage that? I add people on LinkedIn, but that's about it. Don't really socialize or make friends with people at work.
The answer is to socialize and make friends at work.
People who try to “Network” artificially won’t see great success.
People who are genuinely take an interest in what others are doing, and are intentional about meeting once or twice a year for coffee to catch up, are the ones who can call in a favor in the way described in the blog post.
And attend events, make an effort to work with people at partner companies/clients/customers/etc. That's how I've always landed new positions. I've never actually applied for a position since grad school years ago.
I'd rather be tortured by al qaeda than go through all that. I wish someone would write an article on how to hack this process. There's always a back door. Then again if there were I wouldn't be sharing it here.
I know it's a very touchy subject, but it would be immensely helpful if OP posted numbers about the offers he got.
Personally, my compensation is underwater due to the recent stock crash, and leadership has insinuated to expect zilch for 2023. I'm not in the job market due to visa, but I feel the insane comp bubble has burst, and I missed the train. I'm anxious to see how the job market evolves over the next year, but I'm afraid we won't see compensation packages nearly close to how they were the last couple of years.
I agree it's touchy unfortunately. I'm not comfortable sharing in public due to $REASONS, but I have been sharing with friends/family/folks who've been looking.
I will say I got offers comparable to my pre-stock crash comp, but I hit a comp cliff either way in 2022 (even without the crash).
You absolutely can prepare for system interviews it’s just some of the best content for doing so is behind paywalls. I opted to buy a course on leetcode covering this topic and my performance before was like night and day. Going through about 20 worked examples each of which has a 45 minute explanation means learning about 60 patterns you can slot into various problems. Once you’ve seen the patterns it’s a lot easier to apply them in different contexts to piece together the system you want.
Thats a good endorsement. I've seen those and wondered if they were a waste of time. I think I might consider one now if it was that beneficial. I have no problem paying for educational content. But I was afraid that stuff was just institutional fluff and internal-marketing.
Yeah, you can also pay to do system design interviewing practice. I did a few paid system design interviews last year (interviewing.io) and found it helpful before a few FAANG interviews.
What a luxury! I only had 3 weeks of vacation and burned through almost all of it because every company expects you to do multiple rounds of interviews during business hours.
Eventually I just quit because it was literally impossible to search for a job while working full time.
Even if you have the free time, I'm surprised that they managed to batch the different stages and have all interviews in the same time period. If I'm interviewing, at any given time I'll be sending out resumes, and talking to recruiters, and doing technical interviews, and waiting for feedback asynchronously for different companies.
> I completed full interview loops at 13 companies and received 11 offers. I'm glad I got the rejections I did - it was clear there wasn't a mutual match.
11 out of 13 seems like a really extremely good hit rate. Even a 50% offer rate would be really good so I'm guessing this person is way better at interviewing than most of us.
As most of these interviews were in in October/November I wonder if it would go as well now? Or in 2 or 3 months?
I filtered companies down to places where I felt I had a good chance of success, and applied to jobs within my comfort zone - this was a very biased sample. I don't think this generalizes unfortunately
13 companies where he completed the entire interview circuit. The further you get in an interview circuit, the more likely you are to continue, and thus to eventually get an offer. Only getting offers from 50% of those might indicate you're doing something surprising towards the end, like coming across as a jerk to the skip-level+ the last interview is usually with.
I suspect you'd be able to land fewer interviews if you repeated this experience now.
However the most interesting stat is missing: compensation offers. I bet offers being handed today are across the board lower than even just 1 quarter ago.
269 comments
[ 6.1 ms ] story [ 267 ms ] threadhttps://www.observationalhazard.com/2022/05/my-experience-wi...
1) It can feel like it will sabotage your chances even if it raises awareness of your situation. Firstly because you cannot help but "call out" some of the hiring practices/people, and secondly because, well, must be something wrong with you if no one is snapping you up, right? Which leads into...
2) A lot of really obnoxious folks like to pounce on this and "blame the victim", and then reference stuff like this post to show how "it must be your fault", etc, and "ain't nobody got time for that". It's hard enough to deal with impostor syndrome kicking the brains in without inviting the mob to kick as well.
3) It's depressing to think about it, much less to write all that down where it becomes an objective thing that cannot be ignored. Especially if you've tracked everything in detail (I have). Much more pleasant to sell off your belongings and pretend you're just embracing minimalism and forget about it.
4) Feels a lot like begging, and there are many complicated reasons why people mostly don't like to do that.
People are also not interested in hearing troubling stories because everyone has a troubling story. They want to hear how you succeeded because they want to emulate that success. They want to learn the "one small trick" that will lead them to finally getting the job of their dreams.
The interviewing causes a lot of stress to me. Even though I have never failed a coding interview, I utterly hate doing these. (Thankfully I've never had any hard leetcode problems thrown at me - I would have failed miserably.) I have also been a lot on the other side of the table, though I found even that to be a big source of stress to me. I personally believe these coding tasks are only good for filtering out the bad candidates - you can't use them to find great candidates. The last big company I worked at gradually steered towards harder and harder coding problems, until one day I just pulled out of the interviewing process as I felt that I personally would no more get hired.
I wish more companies would be more flexible in their interviewing process. Like, I have several open source projects which mostly revolve around various forms of static code analysis - why do I need to prove that I can write fizzbuzz?
Recently I had a pretty nice coding interview where the main task was not about me writing code, but instead reading the code that a junior developer had written and helping him sort out why the code doesn't work and how to improve it. This was the most real-work-like task I've experienced, I even found myself enjoying it.
Most of the rejections I've had have been along the lines of: "While we find your technical skills excellent, you don't really look that motivated / we think we might not have the right kind of challenge for you."
So, I'm in a bit of a dilemma. If I would strive to send out more resumes, most of these jobs are likely something that I'm not overly excited about, and so I will get rejected because I don't look committed enough. But if I try to look for a dream job, then that will likely never happen. I feel like I'm doomed either way.
During this whole job search I did get one offer, but I rejected it, as I heard rumors about the owners of the company being complete assholes. (Like monitoring workers through security cameras to make sure they're working at their desks.)
Thankfully I've had enough savings from my previous employments and I tend to live a fairly cheap life. Nevertheless, my savings are starting to run low now, which adds pressure to finally find a job. Well, I still have the option of selling my second house (so I'm still far from being financially ruined).
The key takeaways, coming from someone with a similar background:
* Rely heavily on your personal network to both identify worthwhile opportunities and for referrals which, in the Before Times, pretty much guaranteed an interview
* It's worth thinking through what type of job would make you happy _before_ you get an exploding offer
* They had a _full_ pipeline, interviewing every day for three weeks straight. It's a grind, but you definitely get "in the zone". Additionally, setting this goal ensures that you are being properly proactive/aggressive in pursuing opportunities.
* You will probably see a design interview at any FAANG or hot startup. The classic one I've seen like 5 times is "how would you design a social media feed?" I still do not know the "correct" answer to this question.
I don't have hard evidence for this but it seems that the demand is still very strong for experienced engineering managers. I am curious to hear if the author interviewed for SWE positions or engineering manager positions have they have filled both roles in the past.
re: your last question - I interviewed for both SWE and EM positions, depending on what was available at any given company. At companies that had both roles open, I talked to folks to understand what they expected out of EMs vs engineers, as it varied a lot - and then I picked whatever was more appealing to me. In aggregate I went for 70% SWE / 30% EM roles (roughly)
I'm curious about the rough models which exist.
My first company out of college actually banned it as a practice - EMs were not allowed to be active contributors.
I know at some companies, it’s actually a requirement, or at least heavily encouraged, for a manager to spend at least 20% time writing code.
And then some places are a mixed bag.
I can see both arguments! Just good to know that a company has a coherent philosophy on the issue.
Pure people manager - HR admin (compensation evaluation etc), professional development, project management, team resourcing, etc. Tend to see this less in very small companies.
TLM (Tech Lead / Manager) - Does all of the above, plus also acts as a tech lead for the project - technical design, mentoring, and possibly some coding. Tend to see this less in very big companies. TLM are typically first-line managers, I've not seen a TLM that manages managers (i.e. Director level).
Rarely, hybrid engineer/manager - Does all the above, plus expected to contribute significantly to coding. Honestly it's a red flag for me to see a team hiring for this archetype, in my opinion it's a pragmatic stopgap you might find yourself with as a small company, until you can hire an engineer or manager to split the role; it's not something you should explicitly hire for.
Sometimes, product lead as "mini-CEO" - manages the team/org and owns product direction. Typically will have a tech lead on the team to own that side of things. This can grow into a Director position, managing the team managers and still owning the product function.
Some archetyes for dedicated Staff engineers (typically the equivalent IC-track level to a team manager): https://staffeng.com/guides/staff-archetypes
There is no "correct" answer to it. It is an investigation into how you break the problem down and approach it. When presented with a challenge to it, how do you then look at it and consider how to solve it.
The Codeless Code - Case 83 Consequences http://thecodelesscode.com/case/83?topic=interviews
I honestly think I'd be physically incapable of doing this. I'm on the HSP side and even a single set of interviews is enough to drive me into an insomnia/anxiety cycle for weeks. I can't even imagine what this would be like for me. Albeit I admit it's the best way to get the job you want. Maybe I'm in the wrong industry...
More people than you might imagine take Xanax to get through interviews.
You know, that's actually a great idea I never thought about. I'll see if I can get a script next time I go through interview loops. Might make the process less hellish for me, I hope.
But if a normally functioning person needs to start Xanax for the purpose of getting through (let's admit it) a power-play hazing ritual that has little to do with the job, then maybe that person and the rest of us should go tell those companies to take a hike. The EEOC should, as well.
I prefer the 'choose your battles' approach. Interviewing at 3-5 places (not 35), and being prepared to 'win' before I start, as well as possible.
I do find the marathon interviews are difficult, but the difficult parts for me are front-loaded - the initial anxiety, gradually building to being desperate for a break (or to escape) around halfway through. But then like a runner in the zone or coasting through the second half of a double shift on sleep deprivation, the latter part is relatively smooth.
Interviews are conversations, not fights.
Hard to find the right balance.
https://www.goodrx.com/conditions/generalized-anxiety-disord...
Kind of says something about the amount of cultural sway technologists actually have.
> Maybe I'm in the wrong industry...
I wonder this as well for myself. I really like software development, but the interviewing is just getting to be too much. It would suck to have to change careers away from something you're pretty good at and really like just because of what basically amounts to hazing.
As a married man nearing his 40s I can't imagine doing this. I need to keep my full time job to support my family, so just quit and focus 100% on prepping is not an option. Assuming a 5 1-hour round interview, I would need to take PTO or somehow juggle my calendar to take interviews. I'm horrified at the thought of taking one week off and doing interviews for 5 days straight. I guess I'll cross that bridge when I get there.
Fortunately, there are still lots of good startups, small and medium sized companies that pay well and actually respect your time.
Along with past experience on CV this should be enough to assess whether a candidate is suitable for the 3 or 6 months probation employment.
If after all this you still can’t decide whether the candidate is a match and worth keeping permanently post probation, your hiring and working processes are seriously broken. I don’t understand then need for multiple, hours long, dozen interviewers processes.
For senior positions, I would rather spend an hour or two talking through hypothetical scenarios, including design decisions and teamwork. I want to hear deeper knowledge from a candidate, not "do they know valid syntax and are they able to solve trivial problems".
As in all things, it depends on the company that is doing the hiring and the role they are being hired for. In some cases, "senior" roles are basically individual contributors with a few years of experience. In others, a senior should be able to translate business requirements into a big picture technical solution, break down the portions of the stack they are familiar with, and explain what assumptions are made and what unknown factors need to be sussed out in order to plan a proper implementation.
The latter portion is difficult to do with a take home assignment without careful planning for the follow-up interviews. 5 hour round-robin interviews typically (in my experience) end up being "live leet code" sessions that don't represent day-to-day work at all.
Or just do a few interviews per week while working like most people.
“Well my notice expires at my current job in two weeks but I’d like to take a short break in between to decompress / spend time with my family.”
“Obviously we’d like to have you as soon as possible but we don’t want to keep you from your family. How about six weeks from now?”
“Works for me.”
Obviously different companies/roles will be differently flexible and bigger companies will be more tolerant of delaying start by longer. And you can only do that if you get a job offer somewhere. But the parent comment wasn’t even suggesting taking holiday to interview for a week straight right?
As a kid, I went to Disneyland exactly zero times. There are hasher realities for many.
Before you respond that I don’t know what it’s like juggling a family and I must be a fresh college grad, the 74 in my username has significance
A pity since the TC game is played by pitting companies against each other in a bidding war. I guess I'll have to figure out my strategy when the time comes.
One needn’t interview at so many companies. If one is in no rush to quit then just spread interviews out over a much longer time.
So the game becomes to avoid hiring someone like that at all costs, because once they are hired they are impossible to get rid of.
I wish employment was more like contracting - you give someone a trial for a few weeks and then end it it’s not a mutual fit. No long interview necessary - the job is the interview.
If they are a NNPP, gathering the necessary documentation and putting them on a PIP or shuffling them to another team is likely an easier path.
I think what might be happening is a vicious feedback loop of
* companies hiring too many smart engineers
* those engineers are in turn very bored and don’t have much to do so they check out
* not much gets done so more people get hired to do more stuff.
First, many more applicants than positions. If you've got 100 for a single position, then selecting the best 10 out of that set will look like a high hiring bar when it is 'just' a "we don't have time to interview everyone." And many positions get many more than 100 applicants per position.
Next, the aspect of job hoping that has become fairly common in the past decade. If the average tenure of the person hired in the last 10 years is decreasing because the person can get paid more by switching companies then the other side of the push will be to raise the bar so that the new hire will require less onboarding and be able to be productive faster. If the company is using Kafka in house, and it takes two months to really get to the point of understanding it and the person leaves after a year, that's two months lost. So, instead hire someone who understands it and only requires a week to pick up the peculiarities here so that when they leave in a year you haven't lost a portion of the time getting them familiar with the tech stack.
Lastly, it is a pain to fire someone. You need documentation about their issues and that it is performance related and that its not done during a 30 day window where they've fired 49 other people and that HR is ensuring that they've got the CYA on a wrongful dismissal documented. And then, even when you do fire someone, you've got to go back and reopen the position and hire again and that takes two months from the time you submit the job description to HR to starting a new person along with at least a week of manager and interviewer time in the process.
The safest thing for a company to do is move them over to a team that does low priority, low impact things and never promote them in an engineering capacity. Note that sometimes when you move a person from a dev job to a QA or operations job you'll get the person coming back with constructive dismissal which takes time to handle.
Yes - I can manage my calendar better, but then people would get suspicious, or I'd be worried some emergency comes up.
When I used to interview, I'd just start having more "doctor appointments" or what not and block off a few hours. Also, these were back in the days of going on-site for interviews. My engineers who quit did it all remotely, even the final round (covid times...) so it's more manageable.
That’s by design. Most places don’t want people like you. They want pliable, naive employees who will kill themselves for the company and not count their hours.
If you are fairly skilled programmer, somewhat senior. These layoffs don’t matter.
I assure you that you won’t die of hunger if you quit/are laid off. Plenty of demand for non-coasters.
- absolute crickets, which made up about 33% of the "rejections" after a phone screen. This was unheard of pre-layoff rounds, but I understand that recruiters themselves suffered a lot of losses in this wave so I somewhat get it.
- "We only hire SREs, and any role leveled Senior+, in San Francisco, there's too much context to offload remotely for leader roles" (this is, itself, such a glaring red flag that I was considering walking from this process anyway)
- "You mentioned your preference to not do Coderpad-style interviews, and sadly, we only hire based on timed+video call Coderpad interviews, good luck!" (I basically never ran into this pre-2022 despite my stance on this issue almost never changing in my career, this was the cause of several rejections this time)
- A subtype of the above, bombing a surprise (or once, "forgot to ask ahead of time and got scheduled for one that I decided to go to anyway") Coderpad/l33tcode/etc. style interview. Rejections on all but one of these, where I advanced and backed out for other reasons.
- Being an SRE not married to Kubernetes I've learned is now often akin to no longer being an SRE. In fact I now question whether I truly consider myself "an SRE" in the current startup climate's sense of the word anymore. As an egregious example, one interview asked me to rate my skills and opinions on Kubernetes specifically. I answered honestly that I thought it was the right tool for many jobs, but not all jobs, and that I wouldn't claim to be a guru at it as I often use other tools that fit the tasks at hand better. Rejected.
I also had someone candidly tell me that they deliberately select for candidates who have put extensive time into preparation because that correlates with effort and the willingness to work under crunch conditions in the job. Gross, but effective.
Joking, but this also a true story.
So many people have mentally checked out of their current jobs but are too lazy to grind leetcode and go through interview loops. Unless you are in a financial crunch or have other issues like visa sponsorship, getting paid for 6+ months to fully focus on the next step of your career sounds like a dream.
Microsoft/Google/Meta/Amazon/Salesforce and the like are spending many billions of dollars and unknowingly setting up the largest startup incubators in the world right now (and getting nothing out of it in return).
Wondering why they are giving such big serverences. Surely its not out of goodness of their hearts. 7 month severance at google seems a bit over the top to me.
I've been going to the gym 4-6x/week for the last couple months. I cannot get myself to do almost any leetcode even though I should be doing it. I've just accepted I'll not work for a while longer and keep going to the gym anyway.
It's a fucking investment dude.
You invest those hours to have higher salary / cooler job / be better, etc.
You don't want to put X hours of effort into something that may make your 8h/day work better?
Your social life probably ain't gonna disappear if you'll spend a few hours a week for a month or two on learning
I've been working + getting degree on weekends for 6 years, so I kinda know something about lack of time.
Don't get me wrong, I'm not saying everyone should be doing LC. Just don't act as if there was some tremendous trade off required to learn it
That grind set mindset, “you can do anything you set your mind to, so you can only blame yourself for not having {life goal}” is a recipe for depression and burnout
They may make more money anyway. Whether or not that means they’re more successful is a different question.
Feels like an artificial wall too - many companies don't approach the scale where this stuff matters, so getting that experience is hard.
There are "layers" to the signal you can get from system design interviews:
1. Are they aware of "big concepts", indexing, sharding, queues, scheduling, etc.
2. Are they comfortable actually using and manipulating these abstractions in an academic sense? e.g. new college grads may have never used an index, but can walk me through how we might use one to solve a given problem.
3. Do they have experience operationalizing these concepts? e.g. in DB design questions I love it when candidates are able to walk through a zero downtime migration plan from before and after we add a feature.
4. Related to 3, How do they weight tradeoffs in the system? Do they drill down into product requirements to help inform these tradeoffs?
A system design interview often lets me say: "They're not experienced enough at our scale for me to want to hire them at level X, but I'd hire them at level X-1"
All this said, I do think more companies should try to draw design interview questions directly from their own company experience e.g. imagine we didn't have feature X, how would you add it to the product?
I think pulling specific ideas from your actual system is full of traps. These are probably problems you've thought of - both actively and passively - for days, months, or even years.
The person you're interviewing has had no such benefit, and it might be very hard for the interviewer to be able to separate what they think is reasonable and what is actually reasonable.
The first time you give the interview certainly, but you have time to formalize and tune the interview. Write down what you're going to ask, what signals you're looking for, the quality of a solution you expect. Socialize this with engineers who weren't directly involved in the design of the system, ask for their feedback.
You can usually iron out a question in 10-20 interviews and make it really stellar within a 100. I know that's a lot of potentially wasted hours, but the ROI in terms of candidate quality is worth way more.
By having that rubric down it becomes easier to make the objective choices (that can be backed up with HR). Additionally, that same question (with the same rubric) can be used by other interviewers for other candidates and overall, you would hope that the same candidates would get the same thumbs up / thumbs down evaluation no matter who asked the question or considered them.
How does one approach this?
https://martinfowler.com/books/refactoringDatabases.html https://databaserefactoring.com/
They're in it because it was a bunch of high growth stock that also coincidentally paid very well so the name transfered from finance to programming.
This is partially why I haven't been interviewing. All the big p(l)ayers have slowed down their hiring so much - why bother taking a role that pays less than half.
So a lot of the crazy salaries you see people brag about are often taking stock programs into account. And because tech stock has been generally hockey stick growth, then the TC (total compensation) is too.
But aside from the stock, you can get good salaries and benefits at lots of non-FAANG companies. I actually have better insurance than my brother-in-law does at his FAANG job, which is already considered very good. In fact its the best insurance i've ever had in my life.
Since stock makes up a large portion of $BigTech compensation, ignoring RSUs is not logical.
> if you spend that much effort
yeah that doesn't start until like 400+ LC problems. If you're still struggling with mediums at that level then sure. But at <200? That's entirely normal.
Sure you may get lucky and get in Google with 10 LC problems under your belt. But those are not good odds. Places are asking LC hard nowadays. And you really don't want to see what people in India are putting up with.
This is great advice! I interviewed in 2022 and found that I performed significantly better when well rested. I also found that eating healthy helped during the post-lunch interviews.
Thanks for sharing your experience.
I'm confused why this is funny ha ha to you...Care to expound?
(yes, it is a bit of cope - but hey, it's only through interviewing/learning more that you find bad fits)
It's also not fun to be waiting to hear from the places you're really interested in while you've multiple exploding offers. One of the offers exploded before the date I was told it would. On the plus side I was able to use the offers as leverage to speed up the process at the job I finally did take.
If I have to do it again I will set some sensible limits on myself.
In my last job hunt, I flat out declined further interview if I was requested to do a take home assignment.
I have the total opposite experience. I have rarely done well on a live code problem, I clam up. Tbh it’s humiliating, not representative of my actual skill set, and a waste of everyone’s time.
The amount of time I’d need to study to be good at live coding is less than doing a couple take homes for companies I’m actually interested in.
Then there's the follow up - often a rejection with no comments on the code whatsoever. Or you get completely ghosted. Or, and this is the real kicker - they finally ask you to come in, where they have you do leetcode on a whiteboard anyway.
If the process was "Here's what we're expecting, turn it in by X date, we'll have you do a review with the team, and assuming all goes well, we'll talk about an offer at that point" I would be a lot more open to them. But that's never the process.
Honestly, after getting a rejection with motivation 2 times now, I’m leaning towards rejections without motivation being better.
I just do not care to see how utterly arbitrary a lot of the reasons are. The basically come down to ‘you did some things I personally didn’t like’.
It gives us an actual chance to work together professionally on a real thing. I get actual pay. The company gets something actually useful (not just a puzzle solution). The team can keep their focus on the bigger stuff. It's kind of a win-win.
It does need to be something rather small and non-critical, yet relevant enough, which might be a little more difficult than just picking a generic puzzle. And requires a little extra setup for the contracting and pay. So I can see why many don't bother.
Having so many interviews makes you feel more relaxed for every interview because you become numb to it. You don’t care if you flunk your FAANG interview because you already have a good chance with a mid-sized smaller company, which makes you even better for the FAANG interview.
I did over a dozen interview loops when I was looking last year and I felt great and at the top of my game.
The first time I found a bug in a company's take home project spec rather spoiled them for me. And sadly, that's not the only time that happened! A candidate who puts more effort into it than the person who created it gets rewarded by feeling confused or like they're missing something because it doesn't add up? Nope, not great.
And now, 15 years further along, the idea of investing 4+ hours of my own time without even a human to ask questions of or discuss things with just has no real appeal (I've seen some that expect 8+, even).
IF I ever needed a linked list, I’d use collections.deque like a professional.
Oh, and they took issue with the fact that my files were named in CamelCase instead of smake case.
Overall I think any form of take-home/leetcode is just depressing.
How is the technical interview process valuable _for companies_ at this point when it seems to be evaluating how well you can prepare for their specific leetcode interview, and how well you practice the incantation of the system design problem (make sure you follow the template and the pattern!) - do they really think they're selecting the best candidates, and not the most practiced interviewers?
Beyond the barest basics, 99% of the time the only thing that's genuinely relevant is whether or not the team wants to work with the candidate. Almost nothing else that is relevant is even knowable until after they're actually working. Exceptions only prove the rule.
It's a sham but I guess it makes someone feel like they've contributed value somehow.
Also note that the OP said they found the coding questions were mostly easy/easier than they expected so maybe the amount of work required (for older/more experienced candidates) on preparation is not so high? I dunno.
Cheat where possible using OpenGPT.
Cheat where possible using OpenGPT.
We must prove to companies that leetcode is not the way.
Meanwhile, humans have not really struggled with this problem. We tell you what a bloom filter is, you just have to write the code to spec. (This is different than some interviews where you need to know the answer to the trivia question; know what a bloom filter is and how to implement one, or you fail. ChatGPT was not capable of either.)
Overall my take on the current state of AI-produced computer programs is that the programmer is forced to take on the role of code reviewer and detail checker, which I think is a more difficult problem than just typing in code in a green-field environment. The thing that's difficult about reviewing code is that things can diverge away from your mental model so quickly, that you don't know which details you should be checking up on. When you're writing it from scratch, you don't lead yourself astray in the same way.
In a few years this could be completely different, of course.
Of course most competent companies will ask a minor follow-up which will stump candidates who are relying on such tools.
I've applied to interview a few places I never plan to work at, just so I could do their leetcode interviews. It's like a brain teaser book but you also get a live human evaluating.
Nah the interviewer has full discretion at Amazon to pick the questions. You just found someone who thought Hard was the correct bar to set.
For example - there's a big pushback that any hiring manager worried about a candidate who don't have required skills they could learn in 6-12 months is "quibbling". Is this a generally held belief? In the startup space in particular, most folks I interview frequently have consistent < 2 year stints at most if not all of their prior companies. Expecting a 12 month ramp-up time on a particular piece of technology needed to do the job would be an immediate no-hire from me. If I personally joined a company and couldn't meaningfully contribute for the first year, I would consider that a complete failure and expect to be let go. Do other people feel differently? Perhaps this expectation is more applicable to larger companies than startups?
When I asked the Mesa devs how long ramp-up was I was told around 12-18 months.
When I was working on ChromeOS we expected about 6 months of ramp.
I guess it’s just different projects and jobs at companies. I would never hold my breath to find a candidate that had experience in any of the above.
A candidate can get started on our stack fairly quickly, but it’d take months for them to understand the greater context.
But the real thing is, every company has its own processes and procedures, its own legacy and proprietary code, its own business and product goals in its industry, etc. That's where the real ramp-up comes in. 6-12 months is not a bad ramp-up target.
Would you really rather have someone who knows new tech XYZ very well and can hit the ground running with no ramp-up, but breaks process, refuses to touch the legacy code, knows nothing about the industry, and builds things counterproductive to your business goals?
Or would you rather have someone who doesn't know new tech XYZ at all and needs to ramp up, but will gladly pick it up while also learning and adopting your processes, legacy code, industry, and business goals, in order to contribute to the best of their ability?
For that, you not only need to learn the new tech, but a whole lot more. Learning the new tech is the least of it. And industry/domain experience isn't perfect but is worth a lot.
Yes, they should be able to meaningfully contribute fairly quickly, even with things that are new to them. It'll take a while to get really good though. But while they're ramping up on everything else anyway, why not let 'em ramp up on the tech? It's a relatively small thing in the big picture.
It’s not an either/or someone with experience should be able to do both, at my current job and my prior two jobs, I was specifically hired because the manager was looking to bring on someone who could lead initiatives and was a subject matter expert.
Well my last two jobs prior to my current one - the current company I work for has quite a few people who know my specialty well…
People who try to “Network” artificially won’t see great success.
People who are genuinely take an interest in what others are doing, and are intentional about meeting once or twice a year for coffee to catch up, are the ones who can call in a favor in the way described in the blog post.
Well there you have it. No need to be besties, just spend time with people you like. Be it at work or elsewhere. The rest follows.
Personally, my compensation is underwater due to the recent stock crash, and leadership has insinuated to expect zilch for 2023. I'm not in the job market due to visa, but I feel the insane comp bubble has burst, and I missed the train. I'm anxious to see how the job market evolves over the next year, but I'm afraid we won't see compensation packages nearly close to how they were the last couple of years.
I will say I got offers comparable to my pre-stock crash comp, but I hit a comp cliff either way in 2022 (even without the crash).
But what about non-corporate software engineers? What about web developers? The interview process is very different depending on the company.
It depends on the company, not on the domain. OP might as well be a web developer, most developers are.
What a luxury! I only had 3 weeks of vacation and burned through almost all of it because every company expects you to do multiple rounds of interviews during business hours.
Eventually I just quit because it was literally impossible to search for a job while working full time.
11 out of 13 seems like a really extremely good hit rate. Even a 50% offer rate would be really good so I'm guessing this person is way better at interviewing than most of us.
As most of these interviews were in in October/November I wonder if it would go as well now? Or in 2 or 3 months?
However the most interesting stat is missing: compensation offers. I bet offers being handed today are across the board lower than even just 1 quarter ago.
Being more selective (3 to 5 places instead of 35) could've maybe gotten a 75%+ hit rate (but also might've missed the best one).