Hacker News new | ask | show | jobs
by PretzelPirate 1118 days ago
Whenever I have to solve a really hard problem, I always have at least two mediocre solutions before I come up with a really good one.

That doesn't work well in interviews, especially with how terrible most interviewers at time management. I sometimes get 10 minutes for a system design problem because the interviewer was expected to get signals on my non-technical competencies as well as system design.

This is never enough time to ask clarifying questions, diagram things, and get a good solution out unless it's similar to a problem I've already solved.

It's often OK to not solve the problem as long as you give an interviewer insight into how you think, but some interviewers expect a miracle.

15 comments

> It's often OK to not solve the problem as long as you give an interviewer insight into how you think

It's not, though. Many people have no clue how to interview well, and way too many tech interviewers are obsessed with whether or not the candidate got the "right" answer.

Anyone who dropped multiple mediocre solutions before a good one in an interview with me would likely get a strong hire — I love to see this kind of iterative thinking, and finding people who can role model a healthy exchange of rough-draft ideas is always a great boon for the team's psychological safety (and by extension, their creativity and productivity).

But I think, industry-wide, it's not great. As a SWAG, probably ~50% of interviewers are more interested in the correctness of the answer rather than the caliber of the thought process and communication.

>As a SWAG, probably ~50% of interviewers are more interested in the correctness of the answer rather than the caliber of the thought process and communication.

And this is why most the interview processes as practiced today are a joke. It's far more this weird sort of cargo-cult hazing process than any actual sort of reasonable assessment. Few people give challenging problems that they expect won't get solved to step through thought processes, they have some predisposed ideal solution or perhaps probably optimal algorithmic solution on the spot. That lends itself well to a combination of assessing rote memorization and chance, I suppose.

> It's far more this weird sort of cargo-cult hazing process than any actual sort of reasonable assessment

This is 100% what it is. A "We went through it so you do too." sort of thing, combined with the fact that management can't interview everyone and SWE's aren't good at reading people to determine if they're lying.

I have a friend who's a manager at a FAANG and while there's a lot of good, smart people there, there are many, many people who are terrible at what they do and are very difficult to deal with.

My company does not do whiteboarding and makes an effort to get to know the person. We rarely get bad hires. Maybe 1 out of 100? Give me 10 to 20 minutes just to talk to someone and I'll tell you if they'll be a good employee. One of the first things I do is assess if they're lying on their resume. If they're not, then I'm comfortable believing in their skill set.

Where do you work? Or do you know other places that do this? I’d be interested in applying.
I've said before to other technical folks that the interview process in tech is more a measure of ability to handle anxiety and stress than whether one can solve problems competently and gracefully. Granted, in my current role I make it clear to candidates that they may have to perform under pressure at 2 am when there's an outage possibly due to their code or even others' and many people are relying upon you in particular for guidance. I also make it clear that we do a LOT of things to keep such a skill from being required but no process is perfect so being able to handle such a situation without panicking is an important factor in the hiring criteria because each of those situations I can count have been very important and high impact (it's part of why they're so stressful, right?).

Every other practice we have in our interview process is justified based upon historical precedent as well as a team decision for where the team wants to go next.

To effectively fix an emergency situation like an outage, you have people extremely familiar with most/all aspects of your systems walking through a checklist of checks, verifications and tests to identify the root cause of the issue and then go to work on that. The point is that people are "under pressure," sure, but they are extremely comfortable and familiar with the domain. They already know what is supposed to work or what the expected results are to certain basic tests, and that familiarity and knowledge is what maintains a level head and prevents someone from panicking.

This is pretty much the opposite in an interview situation, even when it's a subject people know well, there's way too much "unknown" about your particular setup that the interview doesn't/can't know.

The test has a number of fairly loose factors that are explained to the candidate as more about approach and communication than a “correct” answer (although don’t keep sitting and wallowing about a particular problem like the Python GIL for what is meant to be about exploration together). 1. Many outages are due to systems not even known to us to even exist for a team, so being able to determine when one knows something v. does not is a skill in the sense of knowing when to stop wasting time and to escalate and when to keep trying to troubleshoot their responsible areas - response time isn’t the KPI in an interview and never should be. Part of why I ask this is to determine if a candidate will give up really, really easily and just escalate saying “this isn’t my problem” - this isn’t acceptable, has happened to us all at previous companies, and is basically one criteria for failure / dismissal. A more constructive attitude and approach is “I have done a lot of evaluation including A, B, C, D and do not have anything else in mind, I would appreciate another set of eyes” - that is basically all we can reasonably expect in an interview situation and of course nobody knows anything about a company’s systems as a new hire. There is usually no expected canonical answer as well which would bias interviewers for a “correct” solution or even approach.

2. I usually ask candidates questions and scenarios based upon their submitted code samples and will presume an OS or cloud provider they’ve listed as something they’re familiar with on their resume. If you have lied for any reason it will be very obvious very fast as I keep adapting the question to a narrower and narrower scope to being a purely toy problem that is now useless for measuring anything beyond whether they’ve seen the problem before. Usually we can spot some errors in code samples submitted and make it clear to candidates that we do not expect perfect or necessarily even working code! The test isn’t about necessarily being bug free but about the attitude one has about their work output and how they’ve thought about various failure modes. I’ve had candidates surprisingly often say “that can’t happen, I made sure of it in my test cases” and then I show with a quick test run I think of that their submitted code does indeed have some flaws that would have had issues in production causing, say, OOM issues, segfaults, etc. A successful candidate’s attitude is accepting / welcoming of criticism as a team effort, has strong but loosely held opinions when encountering data contradicting their position appropriately, and is able to accept a challenge from junior engineer with respect and sincerity. Red flags = arguing with the interviewer for asking an admittedly irrelevant question, getting very defensive about a technical decision, and saying adamantly “this should have been caught in a code review so it’s not relevant” and being dismissive about the question. Yes, I’ve seen all these responses before. Nowhere in this process does “is expert at X” enter the picture, and we are usually evaluating the quality of the questions asked by the candidate as well. Many of us on the team have respectfully asked the relevance and presumptions of a question and that’s a big plus IMO - they have courage, respect, and critical thinking skills under pressure. I make sure to tell them that during the interview because people are so used to taking orders and shutting up that it’s bad for the organization.

Another set of red flags I’ve seen is “I’ve never had to do X, it’s taken care of by Y” and being unable to reason or even conjecture about how Y could be designed and reassured it’s not about correctness when it’s on their resume. Like I had someone that was pretty clearly a competent, skilled programmer but was applying to be an SRE and didn’t know how to work on a system below the container level with any tools proprietary or OSS - they were recommended to a different team but not for the applied position.

I assure you that everyone I’ve interviewed for years now has said they’ve had a great experience in all the follow-ups with recruiters, felt that the interview was a technical conversation rather than a hazing / torture test, and that nobody felt the questions were not relevant to the job once hired. I’m not an asshole as an interviewer trying to push people to some limit or something that seems to be the result of most technical interviews in our industry.

Here's a data point: anxiety from the interview (you depend on unfamiliar people judging you) is different from troubleshooting a technical incident (it is more on the exciting side).
There are certainly unfamiliar people judging me and my coworkers when there’s an outage involving customers of various levels, yes. And in a previous company sadly yes we have had people let go for poorly handling incidents that resulted in lost business. It’s a lot of SRE in the ugly side
Obviously, there can be many people who are affected by a technical incident. It may be wise to delegate handling upset customers and fixing a hard technical problem to different people.

Blaming people is a sure sign of broken processes.

> they may have to perform under pressure at 2 am

When that happens, do you tell them they have 5 minutes and if they don't figure it out they're fired? Try that sometime and see how they perform.

Interviewees being able to instantly produce the right answer made me think of another problem Interviewers need to account for currently: people who are biding their time until the market heats up again.

There are definitely engineers hunting max salary/equity over everything and they are going to jump ship if they can get a FAANG role. Being able to spit out rote memorized leetcode and systems design questions is probably correlated with someone who wants to maximize their salary.

A few years back I failed an interview because I gave the impression that I didn't know much about full stack web dev. (To be entirely fair, I didn't at the time).

I was a little irritated though because, though I was early in my career, I have no doubt that I'd have been a productive member of their team within a month. I had thought the interview went well - we discussed the problem they proposed in detail, we arrived at a reasonable solution by the end, I asked lots of questions and responded well when I was prompted about edge cases.

I was just fuzzy on implementation details and aspects of database design that I hadn't had direct experience with.

Anyway, I'm not bitter, not getting that job led to a fantastic gig that I still have today. But I did feel like they were focused on the wrong things in the interview.

> A few years back I failed an interview because I gave the impression that I didn't know much about full stack web dev. (To be entirely fair, I didn't at the time).

> I have no doubt that I'd have been a productive member of their team within a month.

Did you consider that they might have skipped you not because you were "fuzzy on implementation details" but because you projected that vibe "I don't know much about what you do but I bet I can be ask good as you at it in a month"?

I don't think I projected that vibe. I knew ahead of time that the architecture interview was going to be the hardest part for me, and made an effort to show that while I had gaps in my knowledge, I wasn't going to be afraid to ask questions and have discussions to make it possible to get work done. I have a bit of an aversion to unearned overconfidence so I like to think that I did not project that in the interview, but obviously I can't experience myself from the interviewers perspective.

When I interview junior candidates, attitude, interest, and capacity for learning are more important to me than specific knowledge.

Anyway though, it was their choice, and I clearly didn't demonstrate what they wanted to see. Not getting that job left me in the right place at the right time for a job that I really love, so... ¯ \ _ ( ツ ) _ / ¯

I look back at myself and the kind of cringe responses (and questions!) I had earlier in my career and for the most part the interviewers were right to reject me but not necessarily on the basis of technical merit (or lack thereof). On a lot of teams being able to communicate effectively and develop a strong rapport quickly is a bigger factor for an individual's effectiveness than how much quality code and designs can be produced. Ironically, this is an even bigger requirement for smaller organizations. For example, see a pathological case a start-up of two people where they must both be _very_ good at working together or the entire company will fall apart quite quickly. Also in a lot of interviews I was unable to demonstrate that I'm competent partly because I had already burned way out from months of being on-call and losing a great deal of sleep, so I was walking into interviews at basically my worst possible performance. It took me quitting for a while, working on my own terms, and recovering slowly to be able to demonstrate what everyone saw when I was actually operating at my general level of competence in various dimensions. Additionally, got some professional help and with some clinical diagnoses under my belt with solid medications everything got substantially better after that. Going through basically an entire career with severe handicaps has made everything seem much, much easier to handle.

It's ironic that the dynamics of targeting higher quality candidates are not that different from personal dating. While for larger organizations they seem to stress how much more damage a bad hire can be they have the capacity to absorb losses better than substantially smaller organizations on a purely mathematical basis. Likewise, individuals that have higher resources, emotional intelligence, capacity for grace, etc. can much better tolerate "bad" relationships yet are among the most stringent at avoiding "bad" relationships in the first place.

Capacity for grace is such an interesting framing. Is it commonly used in the sort of fields which measure people on those characteristics?

I put it into DDG but didn't find much.

I came up with the term myself which is why you can't find it but I also half expected someone to have named it as well. Because "manners" or "nice" is a mostly culturally-loaded or very subjective term I wanted to say "be considerate to others above how even one would want to be treated." And it's a word not used daily except among the religious in the West, and that works well for those groups because "act how you would in church / template / mosque / synagogue" as a reminder of what civility can look like. Granted, some churches in the US are truly frightening to me and maybe I should refrain from calling on such emotions.
One of my more embarrassing interviews was early in my career, after I'd be developing HFT trading systems. I'd never worked on a web app in my life, and was asked the difference between 4xx and 5xx codes. I had no idea. Something I could have googled in about 10 seconds was the pass/fail criteria for an interview.
It is particularly galling when the interviewer either assumes it is an easy question now that they know the answer (especially if they did not figure it out themselves), or does not understand the subtleties that a more perceptive person realizes must be dealt with before reaching a justifiable answer.
Can you elaborate on "and finding people who can role model a healthy exchange of rough-draft ideas is always a great boon for the team's psychological safety"? Would the opposite of this be flushing the idea maximally (and taking longer) before presenting it to the team?
Yes, exactly. You want people to be able to say things like, "Hey, here's a crazy idea..." or "What if we..." without having to worry that they'll be torn apart instantly.

According to Jony Ive, Steve Jobs was exceptional at nurturing this kind of creative environment. He describes it perfectly in this WSJ article [1] from a couple years ago:

> As thoughts grew into ideas, however tentative, however fragile, he recognized that this was hallowed ground. He had such a deep understanding and reverence for the creative process. He understood creating should be afforded rare respect—not only when the ideas were good or the circumstances convenient.

> Ideas are fragile. If they were resolved, they would not be ideas, they would be products. It takes determined effort not to be consumed by the problems of a new idea. Problems are easy to articulate and understand, and they take the oxygen. Steve focused on the actual ideas, however partial and unlikely.

The other part of it is that ideas, as fragile as they are, can blossom and transform if you can get multiple people and multiple different perspectives involved in the early stages. That's why it's so powerful to have this kind of culture on a team; it lifts everyone up.

The problem with polishing the idea into a final draft before sharing it is that — whether or not it's good — it's almost guaranteed to not be as good as it could have been. And, by the time the "final draft" is ready, it's too late to get involved — all the interesting rabbit holes and tangents and possibilities have already been pruned away.

[1]: https://www.wsj.com/articles/jony-ive-steve-jobs-memories-10...

Not the OP but I would say: yes exactly. A culture where you only see team members presenting ideas in their done state leads to overall worse solutions because people aren't collaborating & giving each other feedback on ideas-in-progress.
“psychological safety” is a newish buzz term that is basically an excuse for people who can’t handle criticism or debate, which I am seeing as increasingly common among younger devs. It is and should always be ok to freely exchange ideas without fear of being wrong, because everyone can be wrong. Even Einstein was occasionally wrong.
Your comment is a good example of a lack of psychological safety - you shoot the concept down with an intellectually dishonest argument, effectively ridiculing the idea.

The problem you describe is the part that is directly addressed by psychological safety. If you can provide a wrong answer and have people critique it but without ridicule, then you have a “safe” environment where people are comfortable to provide solutions without certainty on their optimality.

It's the exact opposite. A team with strong psychological safety is exactly the type of group that knows how to present critique and debate, even between junior, senior, and management participants.

The point is that participants feel safe challenging an idea.

Psychological safety is what allows people to exchange ideas and be wrong without fear of it being used against them
> It's not, though. Many people have no clue how to interview well, and way too many tech interviewers are obsessed with whether or not the candidate got the "right" answer.

On the other hand, many interviewers are just normal people who have no idea how to gauge "how the candidate thinks", but like to think they are. I saw this a lot in the heyday of Google's brainteaser type questions. (And middle managers seem to revel in it.)

So the right answer is as good a proxy as they can hope for. It still sucks, but there you go.

The best interviewer I've had when applying to a company made it very conversational. It wasn't "solve this problem on a white board". It was how would you go about designing an application like Twitter that had to serve XXX millions of requests per day. I was just coming out of the (small) startup world and hadn't had to explicitly design for this sort of scale yet. But as I started talking about it, he asked questions which exposed some of the issues in my initial approach so I pivoted and addressed them. He wasn't looking for a fully formed solution directly out of my head, but was trying to figure out how I thought about and approached problems. The way he went about it was also very low pressure and felt like something you might be spitballing with a coworker over drinks. I try my best to emulate him when I'm in a hiring position.
That’s roughly how I’ve been doing it. The problems presented are always the same and there’s a set of clarifying questions written down for various options the candidate might offer. Only enough structure to keep it somewhat consistent.
I always say "Let's do the obvious thing first and we can discuss improvements?" and the interviewer always says "Sounds good" and there's never time to discuss improvements.
I often think it's a lot better to do an overall interview over a full day than to do disjointed rounds of 4-5 interviews over a few months.

Some advantages - Interviewer and the interviewee are at ease. There is no rush to solve a problem. - You can easily spend 90 minutes to 2 hours on System design, Spend 2-3 hours coding and another 2 hours in behaviour/leadership what not. - The interviews can be progressive, meaning you don't make it through the first 2 hours - good bye. - This can be done remotely as well as in person. Of course, in person would be better, hosting expenses etc.

End of the day, decision is made and you can verbally convey an offer/reject.

This calls for a lot of discipline and commitment from the companies and their interview panel, I mean so be it. Dedicate 1 month for hiring and be done, at least for senior positions. Just like you allocate time for your projects, allocate dedicated time for interviewing every 6 months, every quarter whatever.

Wait how do you think hiring is done right now? What do you mean “dedicate a month to hiring”? Once you are senior enough at a company you end up having to interview multiple people a week, plus all the other meetings, scheduling a full day interview, where someone can actually hang out with you for 2 hours is going to require advance notice. And not many candidates want to wait for a month+ for their interviews.
This is crazy for me to read. We hire senior engineers based on a single hour long group interview. I've never participated in an interview (either as an interviewer or interviewee) that has gone on for more than a single hour. We will interview about 5 candidates over a week's time and then offer the position to one of them (or keep looking if none are suitable).
Same here - You can tell immediately within 10-15 minutes if a person has "the right stuff". Anything above that is just you sucking tiny milliliters of juice out of a carrot hoping that "maybe" they'll work out and you can get "some" productivity out of them down the line or "maybe" they're secretly a really good developer.

Either that, or the amount of time you subject potential hires is just a "signal" of your power and a filter for the needy, desperate and intellectually invested. I guess some companies are looking for that.

> You can tell immediately within 10-15 minutes if a person has "the right stuff"

I do a lot of interviewing for our company, and I used to think this too. But I've been totally wrong a few times. Sometimes someone I've been 100% sure about has been let go after a few months, while some I've been very iffy about have turned out to be excellent coworkers.

I used to be in restaurant management and I recently got a job in entry level IT for the first time in 15+ years for work/life balance.

The best 2-3 hires I ever made as a restaurant manager I knew they would be great within minutes of starting the interview. Other than those outliers I would say a great hiring manager was about twice as likely to have a productive hire as a bad hiring manager. Great hiring managers were batting around 0.600, almost regardless of if it were a relatively “technical” position or not. At some level it was just a crapshoot.

Yup, the danger of the suss them out in 10 mins, is you won’t get diversity (I don’t mean race and all that bandwagon), you’ll miss some exceptional outliers imho.
Agree. It's not entirely a crapshoot but a good bit of the "hire"/"no hire" is vibes based.
Isn’t the portfolio they came with a huge indicator? Like did this person do well at X or Y.

Even when fresh out of school one should see what someone is capable of.

Not necessarily, chemistry is such a big part of the selection aswell, you might have the criteria's for working somewhere, but do you also fit with culture? Many i have worked with would much prefer a person with less criteria and better culture fit, since with good fit you can easily learn the person what they need, and regardless of codebases most people will need some sort of onboarding for a new position anyway, good culture fit makes this transition much faster.

I would filter out the ones that have the criterias, and then see how they fit with current culture rather than roasting them with tests.

Like you do in any other business setting..

Well, I participated in one interview that took longer than an hour. It was supposed to be "an initial interview". With another to follow in a week or so.

It turned into: "an initial interview; meet potential future co-workers and manager; have them see me do some actual work they do; meet the company owner(as he happened to be there);meet the accounting person and haggle over proposed pay; meet the HR person and haggle over minor changes in the employment contract;finally sign the contract" all in about ~7h. Coming in I was expecting to spend an hour there, but I was pleased with the outcome. I spent 6 years working there leaving only because of a move to another city.

It all depends on how many applicants you get. If you're as big as Google and everyone and their grandmother applies, you can afford to have longer interview rounds for positions where you need to be thorough. Otherwise you spend more effort in bringing people to the interview.
We are a Fortune 100 company that everyone on the planet has heard of. We typically get 500+ applications per position. But we still only do a single hour interview to make a decision.
Who is doing interviews across months? I haven't heard of them being more than two weeks apart at most.

Do they pay you for your time for those long multi-hour interviews?

With remote interviews it’s at least common to see a ‘round’ scattered over multiple days and time slots, rather than a single visit with multiple interviewers in a row.

Paying for someone’s time is… tricky. If a company doesn’t pay, and the candidate is willing to do the interviews, it is a signal that both are expecting positive financial outcomes overall (ie both sides foresee fit).

The moment you start paying for people to interview, that signal gets weaker. Likely compensated by stricter resume filters. Its a disadvantage for people with uncommon profiles or less experience. (And an advantage for those that have more experience and some big names on their CV)

But without paying companies will only get the candidates desperate enough to sit through all the interview rounds.
Opposite IME. Interviews go both ways. Senior people will be pickier while the more desperate and junior are the ones who will accept an offer from a company without properly assessing what they're entering.
You want to attract candidates that have a high probability of being hired.

If vJ is the perceived value of getting the job, pJ the perceived probability of getting the job, vI the value of the literal payment for going through the interview process, and vT the perceived value of one's time (and any other cost if it exists, such as travel) required to go through the process, we can represent the expected value of going through the interview process as:

  EV = pJ * vJ + vI - vT
If we assume vJ >> vI and vJ >> vT (which I think is reasonable if you want the job), we can observe that the importance of vI and vT mostly depends on pJ.

I also assume that the candidate would choose where and whether to apply based on EV for their various options.

One one end, if your pJ is close to 1 (you're highly qualified for the job and will likely get it), the result is dominated by pJ * vJ which is ~= vJ; vI and vT matter little. This means that if you will probably get the job, it doesn't really matter much whether the interview is paid (and it also doesn't matter as much how much time it takes). For top candidates, the difference in pJ * vJ for different companies should be the dominant factor, i.e. they will apply for the best jobs.

On the other end, if your pJ is close to 0 (you're applying on a long shot), then vI and vT become much more significant factors. If your chance to get the job is really low, then the interview being paid makes it significantly more attractive, and it also matters more how much time it takes. The companies that pay for interviews, and companies that are easy to apply and interview for are likely the ones with the highest EV for the poorer candidates.

Basically the worse of a candidate you are for the job, the more important it is for the interview to be paid, because with a low enough probability of getting the job, this payment becomes a big factor in the expected value of doing the interview.

Of course it's not as simple as that, because people are not machines chasing pure financial interest and have feelings about how you treat them. Also, a highly qualified candidate is more likely to have a job that is closer to the one they're applying for, while an unqualified candidate might have a much worse job, making vJ higher for the less qualified candidate. But it is likely that the relative difference in pJ is much greater between a qualified and unqualified candidate than the relative difference in vJ. The candidate's own perception of the probability of being hired (pJ) might also be unrealistic in either direction, and I'm assuming it is a good predictor of the true probability of being hired. But I think in general the rule should hold, paid interviews would decrease the quality of the candidate pool.

An employer may consider you too verbose.
Why do you expect employers would pay you? I mean, what if you don't pass it, or even worse, what if the company offers you a job that you decline near the end? Where would the money go? Receiving a salary is not the thing you can expect when you're not doing the work... I mean cmon.. Plus the real salaries upon landing the job will be the top of the crop, so, I think expecting payment for interviewing is... Quite the entitlement.

I mean, would you pay money to a handyman if he'd show up near your roof and showed you how he uses his tools and how he WILL EVENTUALLY work, but, not really fixing it?

It's not uncommon for tradespersons to charge to come out and quote.

Having said that, I think paying people to interview for 6-figure salary jobs (AUD) is a non-starter to me. If a company is stretching your interviews out to the extent it's a waste of time, that's a signal that it's not a place you want to work.

> would you pay money to a handyman if he'd show up near your roof and showed you how he uses his tools and how he WILL EVENTUALLY work, but, not really fixing it?

If that was my idea not the handyman’s? Yes. I would expect them to charge for their time.

It's the interviewee's decision to attend, or not.

I don't think many handymen offered a chance for a two year, full-time building gig would say "sure, wire me $100 for the consultation and I'll come over", and if they did they'd be smart enough to realise they were politely turning down the job.

Frankly, "too preoccupied with the idea of getting paid for a single day of producing no output to take into account the potential to earn $xx,xxx more over the course of the year", sounds like an excellent way for employers to filter out candidates who have low interest in or confidence of getting the job or poor decision-making ability...

I think this hits the nail in the head for the argument I was trying to make: if you as a candidate feel the process is too long or daunting for you, you don't have to attend. It's that simple. Why would you expect compensation if people will do it for free or because they just want to take a shot at the job? To me it truly feels like entitlement... And of course the vast majority of us, myself included, can apply to "lesser known" companies, be done with interviews in a couple of days and it'll all also be good... Obviously compensation will come according to the effort... Demanding money for providing just a signal is useless
You’ve never had to pay a small fee to get a quote on “trade work” done? It’s really common.
It sounds like we are in agreement?
No but I also certainly won't expect the handyman to spend a day unpaid at my house talking trade before I decide if I really want their services or not.
I didn't say that. I asked the question.

However, if a for-profit company wanted me to spend essentially a full day of my time off work so that I can go and interview to make them more money than they'd be paying me - yeah that doesn't sound right at all unless you're straight out of school.

I know what you're saying with your handyman argument but that is a false equivalency.

If I asked the handyman to build me a dog house to demonstrate his roofing ability, I'd expect to pay for his time.
I've had an interview in February, one in March, two in April, and will have one in June, all with the same company. Unpaid, of course. I also think it's insane, but when you're just graduated and unemployed, what else can you do?
Oh wow, that sounds pretty stressful I'm sorry to hear that - I hope you got hired in the end though?
That is absurd.
Pretty much all my interviews except in Meta. This is in India though. Meta was the most organized but even that interview went over 2 weeks. My Walmart interview lasted 2+ months. Round1 week1, round 2 week 3 etc etc.

This is for Staff+ level positions.

EDIT: Just to state, companies do give enough time to prepare for the interview. I am only talking about the interviewing duration, not the prep time.

Super interesting! Thank you for sharing.

The culture is so different here in Australia and New Zealand.

I've done a lot of interviewing of candidates over the last 12~ years or so - here are some generalisations based on my experience and that of my peers for tech roles:

- 95% of the time it's 2-3 interviews / meetings. I have seen a single interview be enough when the person is already known to the team and the interview went well confirming and clarifying existing knowledge of the person.

- The first is usually a call with people and culture / the internal recruiter - high level intro and general culture fit. These tend to be between 15-30 minutes. You should usually know if you're being offered another interview by the end of the call - or within a few days at most and have the next (main) interview setup for the next week or two at most.

- Then if the role is for a developer / programmer or design / UX the candidate is usually sent a coding (or design) test which can be done remotely and will usually take 30-120 minutes but this obviously varies depending on the test, role, and persons abilities.

- Second is often a technical and team fit interview with two people in or working closely with the team / department you're hiring for. These are usually around 45-90 minutes. You should usually hear back about this within a day or two, and if another interview is required you would hopefully have that booked in for some time in the next week or two.

- A third is often done if the team/tech lead wasn't in a previous session - or if the interviewers can't agree or get a good feel for the candidate.

> The interviews can be progressive, meaning you don't make it through the first 2 hours - good bye.

Is that knowledge available in real time? When I interviewed at Google last year, the next thing I heard back from the recruiter was that I'd passed the interviews and should expect a job offer. She wished me congratulations. A couple weeks later, she informed me that my interview scores were too low to get a job offer. It remains unclear to me why there would be separate thresholds for "passing" and "eligible for hire".

So a lot of companies have “hiring committee” (incl google) that are required to approve a person write the job offer. The interviewers rate the candidates, and offer notes/transcripts, but don’t have the final say. The HC meets periodically, so there’s a delay between interview and offer letter.

What probably happened was that the recruiter looked at your profile, read the comments, and expected you to pass the HC (and told you the next day)… but you didn’t in the end.

Now last year Google implemented a hiring freeze, so you could have fell into that. I would believe that for easier-to-fill roles, during the hiring freeze they suddenly had a glut of candidates who “passed” with no job to give them, so the suddenly “failed” and we’re sent away.

> Now last year Google implemented a hiring freeze, so you could have fell into that.

I think this was earlier than the freeze. It was certainly earlier than any awareness of a freezing job market made it onto HN; the email from the recruiter promising to give me good news on a phone call tomorrow -- a rare example of a Google recruiter putting something in writing -- arrived on January 12 of last year. There was a very long lag between that call, described in my earlier comment and presumably taking place on Jan 13, and the followup telling me I'd been rejected on March 2. I undersold that by describing it as "a couple weeks".

On the other hand, according to my memory I was informed that I should see a job offer by the end of February - I noted at the time (to myself) that the schedule was surprisingly long - and in the light of your comment, that and the timing of my eventual rejection do tend to support the idea that the hiring committee's next scheduled meeting was at the end of February.

I have this exact issue going on. I've learned to distrust my 'instant answer'. I tend to skip this fast answer and work very slowly though the problem, and generally find the quick answer to have been wrong unless I know I have collected and absorbed a great deal of information, and slept on it for at least 1-2 nights. I have found the quicker answers to usually be correct if those prerequisites have been followed.
> I've learned to distrust my 'instant answer'

In "Thinking Fast and Slow", Daniel Kahnemann describes the "instant" answer as being given by "System 1", which the far slower (and more rational) "System 2" might distrust.

On the system design question, the only correct answer should be: It can take months to come up with a good system design, and even then it can be wrong because of a minor misunderstanding, a missed requirement, availability of support teams, etc. If someone came up with a system design in 10 minutes, I wouldn’t want to hire them.
Yeah, I was tripped up in an interview at Meta on system design, we had a good discussion, but on my part I didn’t realise they expected an actual solution during interview. I mean, you’d have a gist of a solution but you wouldn’t tighten the screws until you’d gone through many rounds of stakeholder discussions and requirements refinement. I was way more experienced than the chap interviewing me, it just felt all a bit contrived, playing at architecture, memorise these patterns for these x scenarios.
If someone came up with a system design in 10 minutes, I wouldn’t want to hire them.

Deep wisdom here, indeed. Don't you dare say this during an actual interview, though -- especially when you're asked to do the system design part in 10 minutes or less. The last thing these companies could possibly want is to have reality to intrude.

I can relate to the comment on interviews. When I was in school it was easy to apply what I'd learned throughout the semester to the exam questions... but in interviews, I'll be asked to solve problems that I've never dealt with, without a reference. My first instinct with any problem that's new to me is to find the state of the art, but obviously that's not possible in that case, so I'll think of a solution, then immediately doubt its optimality and rethink it... then repeat that once or twice and sometimes I'll end up with the same answer that I came up with initially, or I'll just doubt my ability and give an ambivalent or unconfident answer, especially if I feel like I'm making the interviewer wait. I'm sure I sound like an idiot to them every time I'm asked to solve a silly problem like that.
I usually go, “I’m reality I’d spend a couple of hours researching the best solution to this before starting, but seeing as I can’t d that here…”

And then proceed with my non-optimal solution. They often don’t care about optimality at all. I’ve passed interviews by implementing a bubble sort before. And I have no shame in doing so. I’ve never needed to implement a sort in an actual job, and if I did need to I would be looking up how to do it.

Yep and they get to hire people that were hinted about the answers or just went through a list of exercises of the kind. It starts to show when they have to design from scratch.
This is something I've been unable to articulate as succinctly as you have - thanks.

In the past I put it down my experienced approach and what I need from others: make it work (mediocre solutions that deliver 80% value are fine!), then make it better (reflect and refactor until readable/approachable/idiomatic) before finally (stretch goal) make it faster (break idiomatic paradigms, vectorize etc.)

Heh this just happened to me. I have to go through some loops to get a really good solution. I call it think by doing. I suck at very high level abstract things to find problems. But once I begin working on it and fleshing out details and seeing actual code that’s when my mind kicks in and finds problems and better solutions to the overall design.
Same. I always work on any given (hard enough) problem twice or three times. The first time I come up with some kind of prototype that may work or not, but it gives me foundation to work on the second prototype. The second one tells me how a final working and performant solution could look like, so I discard it and start from scratch. At the end I come up with the best possible solution I can provide. Sometimes it takes fewer steps, sometimes more. And more often than not I let some time pass between attempts (maybe I go for a walk in between or I let a full day pass to work on something else).

At interviews they stop me at my first attempt.

This is never enough time to ask clarifying questions, diagram things, and get a good solution out unless it's similar to a problem I've already solved.

Of course not - interviews aren't about assessing actual problem-solving ability (in the face of, you know, actual real problems). But rather your ability to recite stock answers to made-up problems the interviewer found on some website somewhere. That, and your ability to politely tolerate their horrible time management skills, laugh at their jokes -- and feign belief / interest in their product.

Same way for exams, too, especially when essay writing is included. Good ideas comes in a flash, you don't know how, you don't know when. Most of the time, if you can come up with a great solution and can express it in a clear and structured way the moment you hear the problem, that just means you're familiar with the topic or it is something you've solved before.
That's why I always ask for a very simple programming task (same for each candidate), but somewhat vaguely specified, solvable in different ways. Just like on real job, lots of inputs are not needed, some are missing.

Experienced candidates give two solutions in seconds, juniors cannot figure out the task, and overqualified are visibly annoyed by being asked to come to a whiteboard.

Companies are usually looking for average candidates to do an average job.