After a few leetcode interviews this is now my technique. I just braindump style memorise problem / solutions from neetcode.io videos without attempting to solve them outright. Sure it might be enlightening to grind through the problem solving aspect, which I've tried before, but you're probably going to miss the mark trying to find the optimal solution, and memorisation is far more effective in practice, especially when faced with a unhelpful interviewer.
I've been told that this is a mark of a "bad" software engineer (even here on HN) for taking these shortcuts. While yes being a decent software engineer matters, I just don't see how these hazing ritual style interviews have a bearing on you as a developer. Memorising leetcode to pass interviews is just an application of opportunity cost.
Smaller companies have done real time programming assessments but they are not leetcode-esque.
But I do think I'm a way better software engineer now than back then. So something is broken with that interview process.
So ultimately I think it was largely to their detriment -- they reinvented everything and by and large I'd say most of what they built in-house was inferior to the industry-norm.
Maybe selecting the people who memorized their algorithms labs also selects for people who are self-effacing and accommodating to what the seniors in the organization expect of them?
One is developing hard software, software that needs to be performant on a hardware level. Like operating systems, low level libraries, embedded software, databases. The ability to quickly identify and apply data structures and algorithms leetcode style is very important in hard software.
The second is soft-software, which needs to be performant on the organizational budget/timeline level. This type of software engineering is more about glueing together hard software in the right way to solve business problems. Leetcode style interviews make no sense here, because the glue is usually bash or Python and it isn’t really doing much besides orchestrating hard software and delegating work to it.
Just as there are people unfairly bad at coding questions in an interview situation I think there are also people unfairly bad at star questions in an interview scenario.
I also suspect their general vagueness can be exploited to weed out candidates based on “vibes” while still maintaining the impression that it’s a standardized question they ask everyone.
Just the other day, I was interviewing with a company that posted here in the “who is hiring” thread; and I was asked “Tell me about a time when you challenged a fairness or ethical issue”; I feel like regardless of how this is answered, this is just a way for them to project you as a person without backbone who seemingly goes along with anything, or as a complainer who loves impeding others with objections created out of thin air.
“Tell me about a time when you challenged a fairness or ethical issue.” How many times is something like this expected to come up in a person’s career? And how often will the “issue” - outside of management roles - be of such consequence that you’ll remember all the details? And how often will the true answer be nothing more than “someone asked me to do X. I expressed discomfort over it to my manager while we were getting lunch. X did/didn’t happen”. But that answer, I doubt, will make a very strong impression.
Basically there is misalignment between the method and the line of questioning.
I recently interviewed with the public service for a technical position and was asked four questions. But they gave me the questions 15 minutes in advance of the interview, and the interview was only 30 minutes. So I typed a few notes on each how to respond, and weaved a response. At the start of the interview they encouraged STAR style responses but I just ignored that crap and weaved a response to each.
I advanced to the next stage pretty easily.
I don't know how I'd fare if the questions were given on the spot, especially given the tight timeframe. When it comes to interviews I have a pretty shot memory trying to recall projects, even large ones that I was primary contributor, if it wasn't in the last 3 months.
Internal interviews within the department were conducted using something that mixed STAR with a set of core competencies (external candidates were given a bit more leeway).
So as the interviewee, you had to reply in the style of STAR but also ensure that your answers tied back into those competences. To have a chance of success, you'd need to demonstrate as many competences as possible.
As a methodology it makes it extremely easy for the interviewer to assess suitability (especially for candidates trying to move up the chain - there used to be a qualification assessment for that too) and to do so in a way that can easily be explained/defended if a decision is challenged.
As an interviewee, though, it really was the most awful experience. The questions themselves weren't codified, so the interviewer could ask whatever they liked and you had to find a way to tie it back to a relevant competence in order for your answer to "count" and then explain using STAR.
The problem, in my view, is that there's a huge difference between what works for interviewers and what's likely to work for an interviewee. STAR makes it easy for an interviewer, but it's not the way that engineers normally communicate - just as coding challenges are often quite unnatural (like everyone else, I've had some awful technical interviews).
That doesn't mean it's the interviewer's problem to solve, but it is a thing.
As an interviewer (multiple decades) I have an extremely low opinion of STAR style questions, to the point I have abandoned them entirely.
My first decade of interviewing and hiring was abysmal (when I look back on it), then I muddled for another decade or two with maybe 50% effectiveness. But more recently I've found a formula that seems to really works for me (success is well above 50%):
Engage in a relaxed conversation where I ask the interviewee to walk me through significant projects/tasks/home hobby stuff, anything with some meat regarding problem solving/approach/specific technical things I'm interested in.
I ask them to go start to finish, how did it start, what was problem being solved, why, what were the initial thoughts on how to solve, significant challenges, etc. It's easier for people to recall details when there is context and they are in a flow of information then just cold formula questions.
I interrupt with questions and dive deep into some areas that I want to know about (e.g. can you go into more detail on how you used technology X that you just mentioned) or just listen for a bit. You can pick up a ton of information by what is said, what isn't said, how it's said, etc.
I think you get more info with a relaxed open ended discussions sprinkled in with targeted relevant questions than with sets of formula questions that the person knows which type of answer is the "correct" answer.
The fact is that all job interviews are poor indicators. There is no "good" interview technique. Taking an arbitrary snippet of an hour or two out of someone's life/career is going to give you a misleading picture. The best indicator of future performance is past performance, i.e., experience. Granted, it can sometimes be difficult to evaluate past performance, which is why hiring is always a gamble. Hiring managers seem to believe that they can take the risk out of hiring, but that's a delusion.
The benefit of hiring based mainly on experience is this, which the author mentions:
> It’s already problematic how much company resources are consumed by these interviews. Worse, consider that for every hire, there are plenty of candidates who get filtered out, meaning organizations are taking extra time from people who likely have little to spare.
I often hear excuses for putting job candidates through the wringer, such as (1) it's difficult to fire people and/or (2) firing people is demoralizing to the team. However, (1) in the United States, with at-will employment, that's simply organizational incompetence, which is a bigger problem than bad hires, and (2) having to continue to work with an incompetent person is perhaps more demoralizing to the team than getting rid of the person.
The most perverse aspect of the software industry's devaluation of experience — besides age discrimination, of course — is that long-tenured engineers and fresh college graduates are pitted against each other for the exact same jobs. This should rarely happen and is a sign of poorly defined job roles. It reeks of the belief that engineers are simply cannon fodder, warm bodies who can type code, replaceable cogs in a machine. I suppose this same attitude is reflected in the belief that engineers can be replaced with "A.I.".
In the U.S. it's ridiculously easy to fire people (as pointed out above), once management has made the decision. What people seem to really mean is that it's sometimes difficult to get management to see the problem in the first place -- but by definition, this ultimately points to an issue with the management team, rather than the supposedly stealthily incompetent (or flaky/abusive) employee.
And also - when the right decision has been made, the team generally rejoices, and bemoans only the fact that it took so long. If the effect is seen as demoralizing -- it means the firing was likely political, or a result of team chaos / poor communication not specific to the employee. So again, the issue rests with management -- by definition.
The example given in my stats textbook was going on an expensive cruise and, as you ride to the port, you realized that you might have left an iron on (that was an old book, people used irons to make their clothes smooth). If you turn back then you miss your ship and take a loss on your whole cruise. But if you don't and the iron is actually on then you lose your house. So, do you want to take the false negative (the iron is off and you lost few grand you paid for the cruise) or the false positive (the iron is on and lost few hundred grand you paid for the house but, as a consolation, you enjoyed a cruise)?
Apparently businesses do not suffer from their preference to false negatives and there are not many (or any) companies with an easy interview process, which are also attracting many applicants, so the avoidance of false positives does not seem irrational.
This is literally the first image in the relevant Wikipedia page:
https://en.m.wikipedia.org/wiki/Receiver_operating_character...
At a given acceptable level of false positives, different predictors have different rates of false negatives.
I mean, er, while I don’t personally own an iron, myself, I’m fairly sure anyone who regularly wears shirts and things _still does_.
I do want to point out that anyone trying to line up their next job while staying employed, would probably not be able to take 2 weeks off their existing job. It would then come down to "quit your job and take a leap of faith".
Take them out to lunch, they can describe their playing style, talk about what they are able to do or not do on the instrument and you will get absolutely all the information you need.
If you pay close attention, by the time they order their meal you should be able to tell whether they are actually proficient or not. Sometimes you can even tell a musician won't be a cultural fit by paying attention to them on the way to the restaurant before you even get there.
How common in practice are these questions like “find the median of a list of sorted lists” that are both too obscure to get memorized in the course of day to day work, yet common enough that you could, if you wanted to waste time, memorize the solutions to all of them?
I've had trouble with "write a function to remove duplicates from an array without losing order". This is fairly trivial and I can write this with my eyes closed, but if you're so nervous that you can barely think straight ... yeah, then it gets tricky.
I have lots of anecdotes of stuff I failed during interviews that know I can do because I've literally done it before or since. I'm one of those senior developers who failed to write a for loop during interviews.
If you've never tried to hire technical people it can be surprising how difficult it is. I have not come across any foolproof method but the normal shape of the technical interview is the way it is because it is trying to solve a genuine and difficult problem.
Now some organisations do it in ways that are objectively wrong, but everyone knows that even when you're doing it right you'll have false negatives and that is the price for trying to squeeze the false positive rate down.
Failing an interview shouldn't make you feel bad, because there are all kinds of reasons you can not be progressed that aren't that you are objectively bad at what you do, but it can be a good moment to think about if you could communicate your skills even better next time and what that would take.
You should also always try to get feedback about what they didn't like. Nobody likes to give that feedback, but it's surprising how often a candidate will have the wrong idea about why they didn't progress, and it's bad manners for a company to use that much of your time and not give at least minimal feedback.
To be honest, most of the times when I did get feedback I found it varying levels of patronizing, bewildering, or even downright rude. Most: not all. There are exceptions. But as a general rule, I think candidates are better off without feedback because most of the time it's just going to be garbage.
Other than this fairly minor point I agree with you. Over the years I've worked with several senior developers who have needed hand-holding every step of the way, sometimes for the most basic of stuff, on everything they do. Furthermore you don't just want to filter out the incompetent but also the assholes, which is an even harder problem.
Very good point.
A lot of bullshitters out there
This is a myth. There's almost no reality to job candidates filing frivolous lawsuits. Hardly anyone looking for a job has the time or money for this, not to mention the likely prospect of getting blacklisted entirely from the industry for filing a lawsuit.
I actually haven’t seen algorithm questions a lot lately, so that’s progress, but even building something live can trip you up
Reality is that 45 minute speed trial would be given several days in sprint planning
We should simulate the sprint ceremonies and repository management more than code. Make their commits break because of a poorly documented linter they have to get around. That will fix their code along the way
They had 1 hour, utilizing any resource on the internet they wanted, to correctly configure the network printer. If they completed it, great, if not, he'd go through and see what their troubleshooting process was, what they researched, etc.
This type of interview worked really well for hiring help desk staff, but obviously hiring a software engineer and evaluating them is much more difficult.
Inspired because I had to do exactly the above a few months ago. I don't really know Fortran. I don't even know exactly why it failed to compile, but my fixes work (and verified to work correctly), so whatever. I just read the compile error, copied what other bits of the code do. Basic stuff really, but it would probably filter out the worst of it. I haven't put this theory to the test yet though.
This is basically “hire me and you’ll see”. Well, the perspective of an employer is that 80% of candidates say so and only 20% of them are worth anywhere near their desired comp. I understand the sentiment, but learn to show yourself before the marriage even if that’s no use afterwards.
It's not a marriage. Both the employer and the employee can terminate employment at the drop of a hat.