The study participants were split into two groups. One group solved the problem alone, in silence. The other group was instructed to narrate their thought process out loud to an interviewer who stood over their shoulder (literally, see the photo on page 3) while they solved it.
The flaw in this study is that the two groups weren't really assigned the same task. Solving a problem isn't the same as verbally narrating your solution to a problem. The authors attributed the differences not to the extra work narration work assigned to the second group, but to anxiety levels.
The participants even explained that their difficulty came from having to talk while solving:
> Participants also had difficulty with performing tasks that involved multiple simultaneous actions. Participants felt stressed by having to “talk while trying to write” (P44), “talking while writing” (P25), and “think and talk and do code at the same time” (P39). P41 found it difficult to “constantly speak during solving” and “lost breath at a few places during the task”.
There are other concerns with the study format such as many of a significant number of participants simply giving up well before the clock ran out, in both the private and public interview groups. They were given 30 minutes to solve 3 problems, but some of the participants (including in the private group) were giving up around the 10 minute mark without solving anything at all. This suggests a very high variance of the underlying abilities of their candidates, which necessitates a much larger sample size to draw conclusions.
It sounds like the study points to the idea that "talk through your reasoning" is a bad interview approach.
The last interview sequence I needed to do they put me in front of an online IDE and said "go code." They also said I could use my OWN IDE if I had it set up. One even said "you can finish it later (post-interview) if you want."
The candidates giving up: Some nontrivial percentage of CS students are just ... not capable developers. That's why we use programming tests to begin with.
Programming tests may be the worst possible way to assess candidates, but they also seem to be the only way to assess candidates that doesn't involve paying them for a trial period, which really only works for companies large enough to be able to waste a lot of money. "Democracy is the worst form of government, except for all the others."
Having candidates talk through the solution to a non-trivial programming problem is a critical tool for me. I need to find developers that can not only code, but work as a part of a team - something that requires significant communications abilities.
I can't afford to hire developers that can't effectively communicate complex ideas to other developers - something they're often required to do on-the-fly.
These are two different modes of operation. I can code when in abstract problem-solving mode, and then later communicate that complex idea using my verbal skills. I can't do both at the same time.
It's like asking someone to give an extemporaneous talk on some subject, while translating each sentence into another language as they go. Even native bilingual speakers would have quite some trouble with this. They can generate content, they can speak fluently, and they can translate on the fly, but having to do all three "live" involves too much context switching. Maybe doable for simple or rehearsed topics, but most coding interview questions are non-trivial.
I don't think this is universally true, and to some extent I think it's a practiced skill.
I used to really struggle to problem-solve and communicate at the same time, but then did two years of improv comedy outside of work and suddenly don't have that issue anymore. I think part of it for me was shortening the gap between my thoughts and my communication (to zero) which stops the need to context switch, but introduces a need to think in a way which is clear and structured (because you are going to be verbalising the voice in your brain, rather than thinking and then translating those thoughts to words as a secondary step).
> I don't think this is universally true, and to some extent I think it's a practiced skill.
But is it a skill that's even necessary and therefore developed while working as a software engineer?
In almost all cases that i can think of:
- real time communication might be important for discussing things before and after development, things such as architecture, concerns to pay attention to, or even choices made during development
- real time communication almost never plays a part during the actual development, unless doing pair programming live from 0 or even mob programming (absolutely unheard of in my current company)
- most of the time, what happens instead is dropping a detailed question in Slack and the other person responding to it when they have a minute, only escalating to calls if that's not helpful, which almost always only gives rough outlines of things to try next, not changesets to the code
- actually, most of the communication regarding code happens in merge requests asynchronously, which is better than synchronous communication which wouldn't be explicitly recorded and all of the arguments/outcomes of which would disappear
Thus, narrating the problem solving process live when you don't even have any idea how to solve the problem, haven't done research about that particular problem, have no idea what others in the industry have tried and how that worked out, is almost completely useless in my eyes. During this process, when you haven't done this discovery, about 80% of what you'd think of would be useless and would be tossed aside when you'd figure out what you actually need.
You can only feel confident in your ability to narrate these solutions when you know what they are or where to start, e.g. after a few hundreds of hours of grinding LeetCode, but at that point it's essentially following a flowchart of algorithms and in my eyes is basically "pretending" to be clever, even if there is something to be said about the ability to memorize solutions to problems (or even groups of solutions) and apply the correct one.
Perhaps it's a bit better in my eyes when you'll be applying these algorithms daily in your work, but so far it's about 90% CRUD development, struggling with the specifics of technologies and doing requirements engineering with clients who don't always know what they want or whether that what they want is technically feasible.
Disclaimer: there are probably cultural aspects to it as well, like how here in North/East Europe we don't really do much small talk with strangers. Or maybe it's just corporate culture, or the people working within the company happening to be more introverted and thus the idea of narrating things real time simply being uncomfortable to them.
I think it's probably not a skill required for most software engineering, but it's probably useful if you have a more senior engineering position where part of your role is helping and coaching less experienced people.
It's also useful to 'work a problem' with people sometimes which requires this sort of live communication, however the extent to which teams do this will vary by team. In my experience this is more common in teams that are physically located together in the same room.
Also it's not inherently clear to me that "not used in the job" means it's also bad from an assessment perspective - take defensive driving certifications for example, which require drivers to 'verbalise' what they are noticing, doing, and their decisions while they drive. Do you verbalise when you are driving in reality? No - but it is an established technique for assessment and for learning.
But each to their own. Different strokes for different folks, clearly this works for some people and not others.
If you can code, then explain, but not in reverse - that indicates you don't have a path to solution in your mind without some trial and error. Some levels of engineering require you to have one, at least for certain tasks.
Right, so the first step in this process is to think through the problem until you have a path to a solution in your mind, before you start coding and explaining. But the job interview process we're talking about explicitly asks you to start talking aloud about your thought process (and be judged on it!) with essentially zero time to think it through first.
I code as part of the process of thinking things through. Seeing how bits will fit together. It's like how an author writes to organize their thoughts, instead of the other way around. How ridiculous would it be to interview an author based on their ability to write a short article on a whiteboard in real-time, while talking through their writing process!
For me it has been the other way around: When I give a programming problem for a candidate to solve, I ask them to focus for the 30 minutes in the problem and solve it.
I myself found it asinine when I was asked to talk while writing code... I just cannot focus in the problem at hand while coding. Maybe I am stupid or low IQ, but I need to concentrate in the problem and put 100% of my attention on it.
From interviewing several hundred people so far, I've seen that most of them breathe a sigh of relief once I told them that rule (along with the rule of being able to search for whatever they want as part of the challenge).
The image of a developer constantly speaking while coding on their day to day brings me a chcukle.
If you want a comparable experience, assign a difficult task to one of your developers, then tell them: "I am going to watch you solve this problem. Talk me through it as you do so. I'll judge the result, if its not good enough I will have to fire you on the spot. Also this is timed. Proceed."
>>Having candidates talk through the solution to a non-trivial programming problem is a critical tool for me. I need to find developers that can not only code, but work as a part of a team
So at work, every time your programmers are assigned a JIRA ticket they speak in loud voices every line of code they are writing/deleting/editing???
Sounds like a horrible way of managing a team.
>>I can't afford to hire developers that can't effectively communicate complex ideas to other developers - something they're often required to do on-the-fly.
This goes beyond I imagined. Once the JIRA is assigned they literally scream at each other what they are thinking?
I have had situations where people complain about noisy clicky keyboards, let alone people loudly repeating their ideas on other peoples faces.
This is an obviously ridiculous take on a relatively clear idea: building complex systems using multiple development teams requires effective coordination, which implies not only development skill, but communication of technical plans.
If you're on the team assigned to develop the UI for the turbine monitoring of a hydroelectric power generating station, at some point you're going to need to be in a room with a bunch of other developers and engineers, and start working through some technical issues or begin planning how you're going to approach the problem. That will involve working through code while getting input, which will obviously involve speaking to the other humans in the room.
I know there's a tendency on HN to think that all developers are just like you, but a lot of developers aren't working on simple nonsense like the next to-do app or note-taking tool. Many developers are working on complex, real-time systems that require the coordination of dozens of teams of specialists over years. If you can't manage to communicate your approach to solving a particular problem to a room full of engineers and other developers, you're just not going to do well in that kind of environment.
>>building complex systems using multiple development teams requires effective coordination, which implies not only development skill, but communication of technical plans.
That's not what is being discussed here. As a matter of fact anything as complicated as what you describe here, can't be explained in one cycle. It will require several takes to arrive at something good. And it definitely doesn't involve repeating their deepest thoughts at their colleagues faces.
If anything your interview method feels more like an audition for an acting role than problem solving.
Funny you should describe it like that, but ... what you've just described is almost indistinguishable from pair or mob programming.
Where one person needs to describe clearly what code needs to be written so the other can type it. Actually pair programming requires more effort in that regard, since describing what you're doing is easier than describing exactly how to write it.
I don't do 100% pair programming gigs, but I know they exist, and I've used pair programming in short bursts as a tool for knowledge transfer.
I worked in teams whole my life. Having to explain while I am solving something non-trivial is rare to non existent situation. If just don't happen.
Having to explain something non-trivial happens. But literally always there are hours between solution and explaining it. In pretty much any real situation, I have quite a lot of time to think about how to explain.
Probationary hiring also doesn't work that well for many candidates. Despite at-will employment, there's an understanding about W2 white collar employment that gives new hires the confidence to buy and sell houses, move across the country or around the world, terminate talks with other prospective employers and pause interviewing, etc. This is a cultural thing that could change over time, but it would be a significant change.
I actually did end up hiring a W2 employee who didn't work out. He moved cross country for the job too.
Let him go after only a couple of months--but that was several months of pay that produced literally no positive results. And I was running a small development house at that point; dumping two months of salary down the drain was not a good thing for the bottom line.
So yeah, totally agree. Paying everyone who "seems good on paper but who just can't pass the programming test" really doesn't work, despite wishful thinking to the contrary.
This is a great point about CS grads. Maybe in the past, you could just take a degree at face value: "oh you graduated from Stanford with an A average, you must know how to code, here's a job". But nobody trusts any university to produce capable developers, so you have to test everyone with crazy interviews. So then what's the point of going to a top CS school and why can they keep charging so much tuition?
Some schools have great signal to noise ratio, and you can be pretty confident when hiring. It's not just reputation. Some school (Poly in Montreal is a good example - but other do it as well) requires all student to complete a paid internship in their field of study to graduate. So you know if you hire someone from there that they are able to code professionally.
I doubt there exists a 4.0 gpa standford cs grad that is incapable of coding. It is more than just branding. Standford is harder and you learn more skills that a run of the mill state school.
MIT moreso, no one is skating under the radar at MIT
A past CEO I worked with was a CS grad from MIT. He would laugh about the fact that "he could code, but no one would want to use the code he wrote."
I've also heard another anecdote about an MIT grad who had excellent grades but who somehow couldn't get any work done on a relatively straightforward project.
So yeah, even MIT graduates CS students who aren't the best at code. CS being "Computer Science" means they need to understand the theory, but even an MIT grad isn't guaranteed to be capable and talented in writing code in practice.
If there were a "software engineering" major (or certification?) which, among other things, required the student to write nontrivial code, and it was judged by experts, including using subjective design criteria, then maybe we could start using that degree or certification to prove that, at least at the time of the tests, that person could code. But the devil is in the details even then...
So would you be comfortable hiring a 4.0 grad from Stanford/MIT without doing a coding interview? Just based on their transcript. Does anyone do this anymore?
> It sounds like the study points to the idea that "talk through your reasoning" is a bad interview approach.
That idea definitely makes sense to me. And I think some devs do definitely underperform in interviews.
Though I'm not sure if there's great alternatives. As an interviewer I feel that seeing someone work through a problem and debug issues gives useful information. I don't know if there's a better, less anxiety-producing way of testing those things.
I do think take homes can be really useful, but those have their own problems. Maybe leaving someone alone onsite to complete the problem would be an option. But I think leaving the discussion to the end would give less info about the candidate's communication skills.
Just give them an initial five minutes or so to digest the problem themselves before asking them to communicate. Or even a few couple-minute long breaks throughout the interview where they're not under the microscope. Or some other way to lower artificial pressures.
This unwillingness to experiment with the existing interview format, the intransigence to consider any alternatives, is simply maddening.
It strikes me as odd that interviews aren't collaborative. I mean, the really valuable information that interviewers want is whether or not the candidate is going to work well with other people there, right? So interviewers could work with candidates to solve some problem (maybe problems structured so that it's naturally convenient to divide them into two parts where each contributes). An external service could provide problems and software for shared solving to prevent interviewers from knowing the problems in advance (which would revert to them "testing"). And the shared problem-solving could be recorded so that interviewers could review it afterwards to decide more clearly how it went (maybe they felt like the other person did a lot during the shared problem-solving, but when watching it afterwards, they realize that the interviewer carried the weight of solving things).
I think this kind of context change would be tremendously empowering for candidates such as myself who get very anxious about situations in which they feel people are "testing" them but who actually love working with people. It would also be nice as a way to see what people are like to work with, from both the perspectives of the candidates and the interviewers.
Very excellent point and good ideas for a solution. Funnily enough, I've recently had the same thoughts, been wondering what it would be like if interviewers were asked to work with interviewees on problems they were equally as unfamiliar with, so they are on equal footing.
That would be a flaw in the sense that anxiety may not be the right word, but it does capture the parallel with white board interviews and underscore the problem that you may be turning away people who can perform the job well but not code while explaining.
Also the effect basically disappears if you take only male candidates, so the study is a bit suspect. Men and women typically aren't that different in studies.
I have read a lot of psychological studies, the effect size difference between men and women in the same study is typically pretty small. But in this one the effect is close to 0 for men and 100% for women, that is really suspicious. I wouldn't trust results like these unless they were replicated with more robust methods.
> Participants also had difficulty with performing tasks that involved multiple simultaneous actions. Participants felt stressed by having to “talk while trying to write” (P44), “talking while writing” (P25), and “think and talk and do code at the same time” (P39). P41 found it difficult to “constantly speak during solving” and “lost breath at a few places during the task”.
This is why I built myself a tool to practice talking and narrating my thoughts! https://enumerable.co
> The flaw in this study is that the two groups weren't really assigned the same task.
The real flaw is that the title doesn't follow from the research. "Tech sector job interviews assess anxiety, not software skills." That's saying that you're really measuring level of anxiety, not skill. So skill is irrelevant and you're just measuring how anxious people are.
But the study didn't show that at all. It just showed that on average, people perform better when they're not anxious. Not exactly a surprising result!
Of course people are going to be more anxious in an interview. But if it affects everyone equally who cares? Just make your questions easier.
maybe you should get in touch with the professor and tell him? curious what the answer will be.
i think it’s reasonable to think that this study is relevant and that there is truth in it.
there is also the issue that every interviewer i encountered assumes lying and incompetence and will conduct the interview in such a way that the result is what they want to see - the candidate failing to write the code within a few minutes. they are not capable of letting a candidate do the interview without biasing the interview and results.
this also comes from the automatic assumption that because they work in a FAANG they are a fucking genius and are the only ones who can write software. i can see this happening as they are so brainwashed and lost all touch with reality and how the rest of the industry works.
meanwhile there are some marketing execs at that FAANG with a compensation package far above what they will ever get paid.
As someone who didn't go to school, I struggle with doing algorithms and implementing data structures in front of someone. Outside of timeboxed interviews I negotiate them fairly well, but I'm almost always seeing something for the first time. Then again, for as long as I've been in software it's always been tailored for academics. This seems to be just fine and even championed as a good thing.
My reaction is to plan my exit from the industry whenever this job comes to an end. I'll end up going back to school in my thirties, despite being qualified, because of self-imposed constraints by this industry that have little if anything to do with the tasks I'll be given or planning day to day.
I think this can’t really be the reason for your going back to school. A few weeks of drilling of common data structures and algorithms would put you at parity with college grads. Could it be you just don’t like the industry and project that onto some kind of academic bias or something? Nothing wrong with not liking software development it is often awful.
It is, I plan on going back to school to be an EE when that times comes.
> A few weeks of drilling of common data structures and algorithms would put you at parity with college grads.
I don't know where one gets this kind of idea. I also stated fairly clearly that I have no trouble negotiating algorithms and data structures, the problem is when they're timeboxed and involve an interviewers participation.
I think my main objection is to even doing these kinds of interviews. When, in the world, would one need to write out binary search and would have only 30 minutes to do so? Knowing the properties of different algorithms and data structures is important, imo, but implementing them in a timeboxed manner with abstract problems seems like an odd activity to demonstrate qualification.
> Could it be you just don’t like the industry and project that onto some kind of academic bias or something?
Academic Bias may play less of a role than my perception makes it out to be, but I'd at least say it's significant in this industry. The way I think it gets in is subtle, catering questions and problems that one might find in an academic setting is one. My company also heavily hires interns, which again facilitates an academic bias in hiring, but there is no program for people who don't come from a prestigious university. The lingo used usually points to an academic background as well; I've learned "top talent" usually refers to prestigious companies (that primarily hire from academia) or prestigious universities.
So maybe you'll read this and appreciate it I hope.
I started getting back into electronics in the last 5 years, and have been really enjoying it. I think EE is maybe one of the hardest engineering fields, but can also be the most rewarding I think when you do something cool.
It's also wide ranging from RF to Electrical Grid to VLSI.
an important thing to note, everything in the typical interview programming assessment is covered in one DS/algo class students usually take their sophomore year.
If interviewing is your only worry, just get a single undergrad textbook on DS/algo. Interviews do not by any stretch cover the full academic breadth of a cs degree.
As someone who's also self taught and currently going through the drilling process... its pretty tough to actually pull in and retain on an encyclopedic level all the information one needs, especially on concepts used less frequently in any sort of day to day - especially when in a timeboxed environment with an interviewer watching and evaluating my every move. Think also on the amount of people who are years out of college who struggle with these problems, given that they haven't actually used them in many years.
An example of an extremely common question: “Write a function to check if a binary tree is a binary search tree.”
Yes you can memorize an answer here, and the implementation of a binary tree - I think most people just do that. Knowing the inns and outs of a binary tree is probably useful if you're writing a database, or a compression format. If they're hiring someone with the capability to write a database, or compression format, this question makes plenty of sense. It also makes sense if your criteria for hiring is "did they study and understand an algorithms course?". It doesn't make much sense if they're looking for someone who can do the actual job, in my opinion.
> It doesn't make much sense if they're looking for someone who can do the actual job, in my opinion.
FAANG (& similar) have more applicants who can do the job than they have positions, so instead of checking for that and calling it a day, they filter for some combination of IQ and how bad you want it—willing to do a ton of otherwise-low-value prep work & practice, and to go through the painful interview process itself, likely several times at different companies, even for successful candidates.
The reputation of their interviews also means they likely don't get a ton of candidates who can't do the job. So they could likely just start randomly selecting from their candidate pool and do damn near as well as they do with all the interview effort—except as soon as that become known, they wouldn't be able to do that anymore. Plus they'd lose the hazing factor, which likely helps build company in-group identity. Having a lot of your employees feel like they only have their job because the finally got "lucky" in an interview may also help with retention, especially when everyone else who pays as much interviews in similar ways.
In a sense, being a huge, unpleasant waste of time is the whole point of their interview processes.
> Yes you can memorize an answer here, and the implementation of a binary tree - I think most people just do that.
If you are talking about a self-balancing binary search tree, then, yeah, most people will have to memorize the implementation, as it would take much more than an hour to implement correctly. But if you are talking about plan binary trees, most good engineers will be able to write a simple enough implementation for the interview in a couple of minutes. And it won't be from memory, it will come from _understanding_ of how the binary tree is structured. The beauty here is that there is no need to memorize the implementation, as it is much easier to remember the definition of a tree and then write an implementation based on that.
Sure, and yes I can do that, but you are also judged in comparison to people who just graduated and used them in theory classes all the time, or who are demons on hackerrank etc.
As a fellow college dropout who had the same insecurities and actually went back to college in his thirties (part-time) to study exactly this... all that knowledge still doesn't prepare you for time-boxed stressful leet code interviews.
The people you are competing with study leet code for 3 months and get really good at solving coding puzzles within 45 minutes. Study the basic data structures (nothing fancy needed beyond binary trees) and solve leet code an hour a day for 3 months. That's all you need to do.
A players have a deep understanding of the topics so that very little or no memorization of solutions and techniques is necessary. (Practice, in this case, is a form of memorization.)
That's a shame. Most software development jobs don't actually require a degree and getting a degree is no guarantee that you'll be able to solve the whiteboard questions.
There are many employers (such as mine,) which do not use these theoretical questions, and instead focus questions on prior project work. That said, many of the high-prestige employers (and their former employees) do use the tests you're talking about, largely because they see themselves as exclusive. If you're aiming for one of those prestige employers, you should be aware that they're also exclusive about which schools they recruit from.
Or you can ignore employers who interview like that and keep searching until you find one that doesn’t. A lot of people do this for the same reason you outlined.
I gave up on software interviews. Everyone wants to follow what FB and Google do to 'find the best people'. In my experience, 'keep searching until you find one' is bad advice.
Can't tell you how many companies I interviewed with that simply take their entire process from others. We interview like X, we group teams/squads like Y, we do our agile process like Z. I don't want to work for your wannabe something else organization, get a clue.
> In my experience, 'keep searching until you find one' is bad advice.
This advice worked for me and several of my long term colleagues across decades of career experience. We’re all introverts so this is a big deal for us.
Modern whiteboard interviews are not decades old. I never had any issue until the last 5 years or so. Tech interviews are testing for presentation skills and brainstorming skills, and placing a lot of weight on those alone. If that is what the job is like then I don't want it.
If your idea of best practices is copying (as best you can) someone else then I'm not a good fit for your company. In my view, its your loss and not mine - you missed an opportunity because you are not creative enough to see any other workable process.
I passed the last crap whiteboard interview I went to, even the question that no one else had gotten right previously (so they say). Didn't get the job, over-qualified - they wanted someone cheaper really. It is not about giving up too soon, its about doing something I dislike, and that has nothing to do with the day-to-day work, over-and-over.
But didn't you have classes where some subset popped up again and again?
That's why I still encourage people to pursue a Bachelors degree over bootcamp if they have minimal programming experience prior to going to school. If I'd taken only the "intro to ds" and only "intro to algos" courses to get my degree I would've been poorly equipped to start my first job, since that was the first time I'd seen those concepts.
I think the idea of the algorithm interview is to see if you were awake in class while getting the degree and whether you can think on your feet. For other classes it's more difficult to come up with questions that aim for the same.
What algorithms courses are we even talking about? I dropped out after sophomore year but I still took data structures and algorithms, and a lot of the stuff I see people mention getting quizzed on at Google (I saw convex hulls in another thread on here) is 400-level, elective courses in these topics. The last object we studied in DS&A was graphs and graph algorithms, which I can handle just fine.
Can’t tell if you’re being facetious or not but my point was that not even every CS major would have taken this course (and learned about these structures) by the time they had finished, so it doesn’t quite seem reasonable to expect it as core knowledge for CS graduates, unless you want to select for graduating from a particular school.
Art school graduate here, and my only advice is to broaden your sights and keep trying (if you want to). I've interviewed with FAANG too many times to count and every time it's crashed and burned on the comp-sci quizzes. Fuck em, keep looking. You'll eventually find a team that doesn't demand solving riddles that aren't applicable to your day-to-day CRUD. Take these jobs and you'll quite possibly learn the skillsets, or meet enough people, to get into the Big Co's without the riddles. It worked for me.
I feel like I have PTSD from Google and Amazon interviews early in my career.
Disclaimer: I haven't read TFA yet (will look at it later). But I've interviewed software people, detected anxiety sometimes, and made a mental note to not hold it against them. They're not interviewing for sales jobs, they are nerds, and it's fine for nerds to be shy introverts, especially around strangers.
If you're interviewing someone like that, try to give them a little breathing space, and maybe even tell them that you are noticing the nervousness and that it is ok. If you're being interviewed, I think it is ok to say you are a little bit nervous, take a few deep breaths to calm yourself down, etc.
I never had test anxiety growing up and didn't really empathize with why someone would (sympathized obviously). But solving a problem in FRONT of someone as they are evaluating me (rather than a normal collaboration) triggers a panic. The only thing that helped reduce the panic is repeated drills, which take a lot of time.
1) you don't have to know everything, only the topics they happen to ask. You are rolling the dice, but part of the time you'll be lucky. Besides, after reviewing for a few months (also did 4 yr degree in CS) I felt really strong in the algo topics. That said, I started half of my recent Google interviews thinking "how the fuck do I solve this? is this where I fail?"
2) Aside from the topics, you can absolutely drill the process. Drill a basic flow like understand/clarify the question, do examples, mention a brute-force, etc. when you do LC problems.
And for 1)--a good interviewer won't actually mark you down for not knowing some fact, or not being able to think of some trick. I've passed interviews where I've just said, "Hey, I don't know [that particular thing]. How should it work?" or "I'd Google the exact algorithm for X; I'll pretend I wrote that and call it here..." or similar.
Good interviewers want you to pass, and aren't just giving you a test of arbitrary programming trivia.
Technical interviews are about culling the incoming applicants on the assumption that passing many good hires is preferable to letting one bad hire through. So, IME, no matter how well intentioned an interviewer may be, they aren't ultimately looking for a reason to pass you - they are looking for any way to differentiate between candidates.
Lip service is certainly paid to 'everyone has to look things up', and doing a quick search won't necessarily count against you, but, IME, the hesitation and doubt that caused you to look things up will. With so little material with which to evaluate a candidate, absolutely everything that doesn't impress them is going to count against you.
> passing many good hires is preferable to letting one bad hire through.
This is certainly Google’s philosophy, but our industry doesn’t think with one mind on this.
And as for having so little material - to me this is a sign of a badly designed interview. Almost everyone is weak in one area or another. If your interview only assesses candidates in one way (eg via a coding challenge, or based on a single whiteboard problem) then you are making a decision with insufficient signal. Multifaceted interviews are good interviews.
Plenty of otherwise strong candidates are weak in at least one section of any assessment. And plenty of bad hires will still, for example, know trivia about data structures even though they don’t actually know how to program. Making a hiring decision based on a single metric leaves way too much to chance.
This is a lie at least as it corresponds to bigtech hiring today.
> "I'd Google the exact algorithm for X"
This is a fail in the interviewer's book. Read: "Could not produce an algorithm with less than O(n)" or "lacks familiarity with fundamental data structures"
1. HackerRank (or similar) challenges are pretty close to what you'd find in a lot of technical interviews.
2. Searching online for "<technology> interview questions" for a few of the technologies that you're likely going to be asked about. Make sure you have good answers for the questions that pop up a lot. This helps a lot with remembering Stuff You Should Know that kind of slipped your mind (ie., angular digest cycle) because you maybe haven't seen it in a bit.
3. Write up a summary of your previous accomplishments and be sure you can call them out on the spot.
A lot of what the interviewer is looking for is confidence. And preparation begets confidence.
If you drill enough of the Coding questions, they all start to run into similar buckets, and the way you approach them improves too.
Buy a whiteboard off amazon, solve them legit out loud explaining what you're doing to yourself. You will get better.
The other stuff is great advice too, always try to have a summary (in your mind or on paper) of recent projects etc.
This is the conventional wisdom, and IME, it's minimally effective. I've followed this practice for years. I've completed almost 10% of leetcode's problem set.
Interviewers should be looking for competence, not confidence.
Something to keep in mind is interviewers basically never receive any kind of training, and even experienced technical interviewers do it maybe once a week or so. These people are doing their best to gauge technical aptitude and culture fit from a one hour conversation.
It's not easy either. If I mess up once while giving advice on a place where the candidate is stuck, I can really confuse the candidate. Plus the time cost of reviewing a person's resume to determine what questions are appropriate for them. Lastly, I can't be expected to know all the tech on someone's resume at a level that I can gauge their capabilities, I use other means to determine if what a COBOL person is telling me is accurate.
So you have to kind of plan that interviewers take shortcuts (like judging confidence) and take advantage of that fact. If someone asks what are some benefits or drawbacks to a tech stack you use, have at the ready a good story about a shitty/hilarious/intersting experience you had while developing it. The experience doesn't need to be a 1-to-1 mapping either, it's a-okay to kind of nudge a question towards an answer you prepared.
This is better advice than you're really appreciating. If you feel like you are doing this, but still am having trouble, it's likely that you need work in some other non-obvious aspect of interviewing. I highly suggest finding a coach or someone who can take you through mock interviews and help you find out exactly what you can do to improve your chances!
In my prep I didn't reproduce that, but I had success with focusing more on solving the problem and less on the person. Every once in a while I made the note of saying something like, "Does that make sense/seem reasonable?" to check in with the interviewer.
learning some tips and tricks has made it all a lot less spooky. I hate that it's like this but it is kind of about that nowadays, for certain companies anyway. I guess they assume you have unlimited time to study, so if know enough it shouldn't be too hard. But if you are just walking in there cold as an experienced applicant, you can end up having a really bad time.
I have over a decade of programming experience. I've completed almost 10% of Leetcode's problem set. I've done dozens of technical interviews. I prep for days, specifically for every interview, and they invariably go about as bad as the first one.
I feel you man. I'd suggest Elements of Programming Interviews in your preferred language. It does a really good job in my opinion of walking you through a lot of common tricks. I'm not really grinding through a lot of problems but doing a problem wrong, and then reading a well written explanation of the solution is a lot better for me in terms of learning. The study guide picks a good selection of problems for you to optimize for time. Some of the mathy/low level problems are bullshit that nobody would ever actually ask though. I felt like I got a good run through of some of the data structures that I just don't typically use in Java, and how they can be extremely useful in a coding interview.
LC problems are not always well written and a lot of times you just have to hope someone took the time to write out a good solution. A lot of times they just paste their code and expect you to get it.
I can empathize. The only interviews where I think "huh, this went reasonably well" are basically online tests. Almost never when I interview in front of a person / live screen and do white boarding.
The bad news is my chances of getting into FAANG are very slim.
The good news there are tons of companies who aren't FAANG.
Take homes are probably the best way to test actual coding abilities. I had a pretty good online coding test done by Microsoft actually, it was 2 hours of building an API; no trick questions, no big-o, just write a bunch of code. It wasn't easy but it felt as if they're actually testing what I do for a living. I passed it and it didn't go to the follow up - which would have probably been a shitty whiteboard interview but I'm not sure.
Now that I think about it maybe I should have gone to that interview ...
Maybe I missed it, but what do you think is/are the reason(s) they go so bad? Time pressure? Having an interviewer watching and judging? Etc.
For me personally, my brain goes completely blank at the problem statement, pretty much in the dark without a flashlight, and I have to work everything out by hand and hope that my code actually ends up being correct and reasonable. It's scary but I've ended up doing well.
You can. I've worked at a few startups and participated in interviews, witnessing the variety of questions asked. For most companies its a limited pool of questions and well trodden ground.
Personal anecdote - several months ago I got an interview at a prestigious big tech company. I couldn't sleep properly for at least a week before the interview and I failed. I also track my bodyweight and I can see a spike up just after the interview and then another one after I got rejected - I gained over 10kg (22lbs) in the following weeks while before that I was successfully losing weight for a while.
It's hard to not be nervous for these interviews especially when coming from a non-FANG / huge tech company. The salary difference and opportunity can very much change your life. I don't have advice for this, but what you said resonates with me.
Personally, I did the phone screen for FB when it would've been a lifechanging 6x compensation boost. And after a couple years trying out at lower-tier-but-still-Bay-Area companies I landed a job that was "only" 4x.
I made it to the onsite the second time and failed that, but it mattered less since the money, while still significant, was no longer life-changing.
You've probably heard it before, but.... yeah. Practice. All the failures you accumulate do eventually add up to knowledge and some successes.
Unfortunately, the failures seem to come at great cost to my physical and mental health. But the money is good.
Are you anxious in general? Or do you have some issue with tests? I hate algorithm interviews like the next guy but it sounds like you have it worse than most.
In general I'm not anxious person at all, quite the opposite. I found it very surprising myself. I actually prefer algorithm interviews, and I had never really been anxious for an interview before. This was also remote - I suspect that it would have been easier in person (I know for a lot of people it would be the opposite though).
I don't have it this bad, but I certainly have major anxiety during interviews. I was interviewing for a position at my current company and I blanked on what wget did. Literally a utility I used frequently and I completely blanked on it. So I bombed that interview, but I got a job with another group at the same company. I still get secondhand embarrassment whenever I think about it.
Our process is very evidence based. We use skills tests that are as close to real world as possible, given time limitations. We can't remove all anxiety, but we make an effort to mitigate it and limit its impact.
> We exist to serve our customers, our employees, our partners, and our community in a way that brings them genuine benefit, honors Jesus Christ, and advances the Kingdom of God.
Well, that's not what I expected from a software development website. And I can't speak for others, but this alone would be a reason I wouldn't even apply.
You see these sorts of companies sometimes, especially outside the coasts. It's kinda like plumbers (or whatever) with the ichthus symbol prominent in their logo. Sometimes they even find a way to work it into the name.
I absolutely found a way to work it into our name. :)
I don't hide my faith or the biblical foundations for my worldview, as my posts here on HN will show.
But, I can say I've received way more discriminatory remarks and hassle because I don't hide those views than I've ever given out. I've also had people express a lot of surprise at the fact that I'm in software and have such a worldview. I don't want anyone to be surprised by it so I let it be known. If people think it's inappropriate or decide they don't want to work with us because of it, I can't help their attitude. But I'm not the one being biased.
I guess it depends if they are doing consultancy for churches.
Church IT is supprisingly complex these days. Apparently churches use all kinds of demographic and social media data to identify and contact people who are crisis and recruit them into their flock.
Expand "Next Step - Ready to apply". And it's at the very bottom. Yes, the UX is not ideal. The alternative is that the entire post is really long and yet, people really want this information.
Pasted verbatim without taking time to format:
The Rest of the Process
Our application process is outlined roughly below.
But, before you get there, we want to apologize in advance if this process seems...imposing. We have put considerable thought and refinement into each one of these steps in an effort to make sure our hiring process is as well crafted as our software. And just like software, hiring is a lot more complex than it might seem on the surface. Our hiring process is far from perfect (like our software), we are still learning and tweaking, but we want to assure you that each of these steps gives us crucial information regarding you and your development abilities that is essential for helping us to determine if this is a good match.
Consider this: our entire process is less than a week's worth of effort to make sure that where you spend the next 1-5 years of your life is a good fit. Isn't that worth it? Keep in mind that we have deliberately structured our process so that the earlier stages require less effort. Our hope is that if you make it to the later stages of our process, where the time commitment increases, you will have had a chance to get to know us a bit better so you can decide if the time investment on your part is worth it. We care about your time (and ours) and do our best not to waste it!
Application Steps
Evaluate resume and initial email correspondence
Technical skills questionnaire
Skills evaluation: 60-90 minute work simulation exercise
Zoom interview(s): 45-90 minutes in one or two interviews to get to know you & your technical abilities
Skills tests - phase I: three real-world programming challenges, no trick questions here (paid)
Skills tests - phase II: project-based skills test: we give you a small project description and you build the best app you can (paid)
Skills tests review interview: 2-3 hours on a Zoom meeting with our dev leadership team to get to know you and review your skills test results
Collaborative work day:
As close to a typical work day as we can get. We just want to see what it's like to work with each other.
We'll assign you work based on a previous real-world project we performed This is a sample project, we're not using candidates for free or cheap labor.
We will be available via Slack or Zoom throughout the day to talk through the work and assist you as needed.
If at any step we don't feel like it's a good match, we'll let you know promptly. We ask that you do the same for us.
> We use skills tests that are as close to real world as possible, given time limitations.
If you are timing limiting candidates, your process is not evidence based and I question how serious you are about making efforts to mitigate or limit the effects of anxiety on applicants.
Why do you believe time constraints and evidence based processes are antithetical?
You can't give someone an unlimited amount of time to take an assessment and still expect to meaningfully be able to compare results. One person does a good job in 1 hour another person does a good job but it takes them 10 hours. Time limitations are a fact of life. Interviewees are only willing to give so much time to the application/hiring process and we have similar constraints. The time constraints are reasonable for the tasks given.
We are working to mitigate anxiety in our process, I don't think we can ever completely eliminate it.
This confirms that you are part of the problem, and not serious about mitigating anxiety.
Software development cycles are generally weeks in length for a reason: real software does not involve problems that can be done quickly in an hour.
You are using time limits to minimize your own work, not improve your hiring process. A short, time-limited technical problem is easy to evaluate. The candidate will have correctly solved the problem in the time allowed, and their code will be short and easy to examine for code style and pattern. However, while the signals that this process provides you will be clear and easy to compare between candidates, ultimately you are searching under the street lamp: the signals you receive are poorly correlated with candidates' actual acumen and value.
IME, this is generally done in order to push as many candidates through the pipeline as possible, in the intention of failing many decent candidates in order to avoid a 'bad hire'. However we have reams of evidence that this cynical and destructive approach does not have the outcome that people expect. It selects for people who are good at technical interviews, and against people for reasons other than their technical ability. It disproportionately selects for people coming from places of adversity.
> This confirms that you are part of the problem, and not serious about mitigating anxiety.
You should really stop making personal insinuations. Have you actually done a significant amount of hiring? Can you suggest a better process that works in our current hiring context?
I don't disagree that the process we have developed is not ideal. Feel free to post a few of the best articles/resources you have from the "reams of evidence" you mention. But, just demonstrating that the process has problems isn't enough. Is anyone showing a better way that a small company with limited resources can actually execute on?
Really, can you show us how to do it differently in a way that fits the practical realities of our current context?
The truth is, I'd absolutely love to work with someone for a month or two before making a hiring decision. But most good software developers already have a job. They aren't going to spend a couple months working with you to give it a shot. They also want a level of certainty that there is a good fit in the organization before they leave their current post.
And, on top of that, I already get flack b/c of how involved our process is. Lots of candidates don't want to put in that much time/effort. And with 10-20 places willing to hire them, I would assume a lot don't even take the time to apply. But I can't afford to have people on our team who can't perform at the level we need. And I hate firing people. So some kind of evaluation that fits all these parameters is necessary. Otherwise, no one gets hired and we eventually go out of business. Who does that serve?
What's going on with "anxiety" lately? This went from something you heard about here and there 20-30 years ago, to something that everyone and their brother is feeling all the time.
Shitloads of adults were on anti-anxiety meds (and anti-depressants, for that matter) 20 years ago. Plenty more self-medicated for those symptoms with alcohol or illegal drugs. One of the big shocks of my growing up was learning that, more or less, "everyone and their brother" in fact relied on mood- & perception-altering drugs, legal or otherwise, to get through the day.
And they all still do (except that the weed and some of the psychedelics may be legal now). It may just be zeitgeisty, now.
Then again, I'm not sure coverage of it is even greater now than it was in past decades. Future Shock was published in, what, the 70s? Or Affluenza? Bowling Alone's not new, though that treats of more than just anxiety. Direct associations between first The City and anxiety were so common they got really tropey in the first part of the 20th century, and later (starting in the 1940s and '50s) the suburban middle class and their (alienating, unfulfilling, and sometimes nearly or entirely useless, as in Graeber's Bullshit Jobs, the core observations of which were made by others all the way back at the start of the modern postwar economy) office jobs got similar treatment, which has continued ever since.
If there's a difference, I expect it's because people are using anxiety to cover more states of mind than it used to. It does seem to have become a blanket term for "mentally ill-at-ease, but maybe not full-on mentally ill" in some usage.
Or maybe it's just that Future Shock was right, in which case we'd expect that kind of thing to get worse over time, until something about the pace of change itself changes.
Postwar America was huge into self-medication. You watch a film like Invasion of the Body Snatchers and characters are casually popping pills and swigging scotch every other scene. Before that, you had patent medicine shows and snake oil remedies and puritanical types inventing Graham crackers and corn flakes to promote temperance. The U.S. has always had a self-medicating, consumerist approach to health, for whatever reason.
What's changed is basically an entire pan of medicine, the one dedicated to sleep emerged. Also, we now have a much deeper understanding of stress, or anxiety, its effect on sleep, on hormones, on the reproductive system, on rational decision making. We also have a better understanding of cortisol, the role it plays in increasing inflammation and all the problems associated with it. We also better understand how low level and punctual source of stress can also be beneficial for performances and focus, and how it is dose and duration dependant. Basically, we don't simply discard emotions as unrelated to the body anymore. We have a better and more integrated view of body and the mind and all that entails.
The fact that you didn't hear about it much 20-30 years ago doesn't mean it wasn't just as common. Admitting to mental health problems is much more socially acceptable today than it was 30 years ago.
Economic uncertainty in a fundamentally unfair economic system on a planet that is literally degrading in front of our eyes, if I was to hazard a guess
The pandemic has made most people a bit more aware, at least. The distractions people enjoyed were suddenly taken away, for at least over a year. That has heightened awareness, along with the need for self care.
Even the idea of anxiety was extremely stigmatized, especially in the workplace, and still is but is now less so. What you're seeing is a growth of people talking about it as the stigma lessens.
Honestly I think we just started paying more attention to the subject. Anxiety is a completely natural survival mechanism: “was that a tiger in those bushes!?”. It keeps us alive.
Now it just adds unnecessary stress and impedes our functioning 99.8% of the time. We no longer live in a situation where a tiger lurking in the bushes is likely, but our brains haven't evolved to compensate for that.
*As long as there is a ban on discussing people , once you start discussing (and most importantly) advertising people on the internet , it's over.
Endless comparison ensues and anxiety skyrockets for everybody.
Humans were never made to be aware of being 1 unit in an 8B sample. The person sitting for an interview has high anxiety because they know they can be replaced easily
Things could be better (less concern about items lower on Maslow's hierarchy allows one to worry about self-actualization and other items at the top), and it could also be worse (concern about the basic lower needs leads to anxiety). For engineers who are missing out on the boom times caused by the bubble, it might be a mix of both.
Sooner or later someone is going to get sued. Too many of the things tech companies are testing for are proxies for attributes of protected classes. Tech companies give lots of lip service to diversity but only certain kinds of diversity and certainly not diversity that covers ALL protected classes. Some company is going to get a large judgement against them at some point but I doubt there will be any change before then. The amount of the judgement, or any consent decree, will be minor compared to the reputational hit these companies will get once it is found out that their thin veneer of inclusion was only millimeters deep. Since almost all of them are doing it, once one gets caught, they'll all be in danger.
>Sooner or later someone is going to get sued. Too many of the things tech companies are testing for are proxies for attributes of protected classes.
IANAL, but my understanding is that discriminating is allowed if it's relevant for the job. Requiring programmers to deadlift 150b (which probably discriminates against women) would run afoul of anti-discrimination laws because it's not relevant to the job, but requiring that from construction workers is probably legal.
If you fundamentally have a problem presenting your ideas to others, then maybe you aren't fit to work in a team.
The ability to code is less than half the battle. The other half is actually making sure the idea you have is even a good idea. Any moron can write garbage in a room alone.
The premise of the test is whether or not a person can write code that solves a problem. Which is literally the lowest bar possible for a coding interview.
How about the thought process it takes to derive a optimal solution? Maybe interviewers want to test someone who can actually collaborate with them, explain their reasoning, and logically come up with a solution? Maybe that's more akin to real life than being in a cubicle coding all day alone with 0 human contact? Hmmm...
> How about the thought process it takes to derive a optimal solution? Maybe interviewers want to test someone who can actually collaborate with them, explain their reasoning, and logically come up with a solution? Maybe that's more akin to real life than being in a cubicle coding all day alone with 0 human contact?
I don't think that that's a sufficiently generous consideration of how differently people think. Not everyone narrates all of the steps that are needed to solve their problems in a linear way of fully coherent arguments and needing to do so might slow them down, similarly to how some people don't have an inner monologue at all.
Instead, consider that some might have "checkpoints" in the problem solving process that they can formulate after a bit of discovery and trying some things out: "Okay, so i felt that X might work because of Y, but it didn't because of Z and now i probably should try something else..."
Having 5 to 10 minutes of silence between such sentences would be awkward in probably every single real time interview, thus people are forced into a mode of thinking that they won't do in practice, unless pair programming with someone else live.
I don't know about you, but most of the communication with my colleagues happens either before or after development, mostly asking questions about specifics in Slack when needed, or rarely escalating to calls for non-trivial situations/questions (even though i fail to recall the last time when i called someone about a particular bit of code, yet have often explained things to others).
So, as opposed to calling said people morons or claiming that every single thought needs to be representable to others, maybe it's useful to consider that the way people think might play a part in it, that there are also preferences people have for synchronous vs asynchronous communication (which doesn't imply NO communication) and that there might even be cultural differences?
Yeah, no shit. Today's "tech" firms are actually advertising/marketing firms. The ideal candidate, therefore, resembles the ideal marketroid: extraverted, outgoing, and super confident, with a "can-do" attitude toward everything.
I've actually been passed over fot jobs because I wasn't confident enough. Well, stick me in a room full of MIT Ph.D.s who ask me to solve hard AI-related problems and what do you expect? Do you want to hire a programmer or Gilderoy fucking Lockhart?
Can confirm: will easily pass over candidates that lack self-esteem and confidence, even if they possess strong technical backgrounds. Nobody cares that you can program in C, they just want to know if you're going to be a dick to work with and whether you're actually going to get shit done.
Interview anxiety does not mean lack of confidence or ability to get things done. It is an issue more related to social settings for many people who are otherwise enormously productive and smart. The point is that this interview style definitely misses lots of qualified individuals while it can also accept talkative people with outsized egos, which is also a problem down the road.
I can't believe the amount of comments here that boil down to...
"Yeah tech interviews are bad... If you don't know how to do em! Everyone's an idiot except me, because I always do them right!"
and
"Well if you can't reverse a binary tree by taking "a day" to study [by having memorized every question rather than thinking through and actually solving a problem] then I guess you're not a real engineer. If you make a syntax error, you're not a real engineer. Nobody would make that problem on a test. You're just making up excuses."
Maybe some of you do an OK job and reading between the lines and seeing if someone is a good developer (something I have literally never seen or heard of in practice), but it sounds like you're just interviewing people who are naturally good at test taking / memorizing academic questions and then auto-failing everybody else and just not talking about it here. I guess those fall into the assumed category "fake leaches who do nothing for a living" / "other" category you summarized in 1 word, even if they have a decade of experience.
"Oh, no that's not true. The interview process is bad, but _I_ know what I'M doing so I'M not the problem. It's everybody else that's wrong."
> [...] the technical interview process means that many job candidates try to spend weeks or months training specifically for the technical interview, rather than for the actual job they’d be doing.
I could've told you all of this ;)
> [...] all of the women who took the public interview failed, while all of the women who took the private interview passed
there's other underrepresented minorities that also underperform in these interviews
I was recently diagnosed with trauma disorder by my psychiatrist - due to long standing work-related issues, but specifically in regards to my current rounds of remote technical interviews.
Hey just wanted to say I'm really sorry you're having to go through that - its a cruel system. Don't be afraid to ask for affordances like take-home tests - I've found for me the biggest indicator of trouble is whether I think the interviewer is hostile or helpful. Otherwise, trauma really sucks to have to deal with, please take care of yourself first and foremost.
I'm just exceptionally sensitive to rejection and evaluation, and over the years, the interview process has become more traumatic for me, rather than less. Even decent technical interviews (ie - complete the task 100%, don't flub, don't blank out) can take me days to recover from - my physical/emotional reaction is often very far from where my rational mind perceives the situation. I was once deeply distressed by an interview where I ultimately received an job offer.
It's a common aspect of ADD (rejection sensitive dysphoria), but it only really becomes a disruptive issue for me during job searches. However, as I develop as a coder, and apply for more senior positions, the gap between my performance in interviews and my perception of my abilities and value as a coder gets wider, and so does my distress.
I've considered avoiding proctored and timed interviews entirely, but the cost of this not small: the more in demand a job opening is, the more motivated the hiring personnel are to streamline the process and to be comfortable with low-value methods to pick and choose between candidates - they have so many more candidates to eliminate. So, in the past, I feel I've taken jobs that I did not feel entirely excited about and ended in toxic work situations, that I was hesitant to leave, due to the trauma involved in hiring.
I've probably disclosed more than is wise, given that I'm actively looking for work right now, but I'm kind of exhausted of hiding myself, and any hiring manager whose snooping my HN account is sure to find even better reasons not to hire me :)
I see myself in this - I ended up getting past a lot of it. Mostly just required repeated success - which came from hundreds and hundreds of hours of studying, dozens of mock interviews, and hundreds of real interviews. I'm better now but by no means the best. After all - where I live (SFBA) - people live and breathe this stuff. A lot of the time because they enjoy it... It indexes on very certain personalities.
I did eventually find success. But that took years of not just grinding LC, but so many failed interviews. And nearly $1k on mock interviews and books.
It's clear these companies are selecting for a very particular type of person, even if other types are just as capable of actually meeting/exceeding expectations once they've secured the job.
But I can't argue with the money so I put my body through hell to get there.
> But I can't argue with the money so I put my body through hell to get there.
lol - truth. Sadly - my wife became my ex-wife over it. She wanted the $3m house but without the husband having to grind for it. :( (Of course - she didn't work)
> I've probably disclosed more than is wise, given that I'm actively looking for work right now, but I'm kind of exhausted of hiding myself, and any hiring manager whose snooping my HN account is sure to find even better reasons not to hire me :)
Naa don't worry about it, that's very unlikely. And if someone disqualifies you for what you wrote here I don't think you wanna work for them anyway.
In the same way that kids with pressure on their SATs or college admissions or just generally "must do well" develop severe anxiety and depression there's no reason a panel of people testing you to determine your future economic value couldn't be legitimately traumatic - especially if you have a lot on the line either physically or emotionally, and don't have much in the way of security.
I've nearly passed out in whiteboard interviews. I've had my BP spike to 150. I've nearly completely shut down. This doesn't happen even most of the time - I've also run multiple high profile launches for companies you know of and I react to emergencies extremely cool and collected. But I have a background that includes severe childhood trauma. Just to help your imagination!
Not OP and I haven't been formally diagnosed with anything, but I also ran into severe anxiety issues (with no history of anxiety at all) after technical interviews. It's bad enough that I can't watch TV shows with any violence from overreaction
I underperform severely from trying to keep it together during that time, and the perfect scenarios/answers always come to me minutes after the interview is over!
But if you can't communicate and think while under a bit of interview pressure, then you're not likely to be able to cope long-term in a development job. I don't think the way most companies interview is great. Particularly, I don't think whiteboarding is a decent use of anyone's time in a face to face meeting.
At the same time, if I ask you a question and your eyes roll into the back of your head because you can't handle the pressure of coming up with an answer at a time where the result of getting it wrong is literally the status quo... then you probably aren't going to be the person I want in the long-run anyway. I'm hiring you to be an employee, not a cog.
> But if you can't communicate and think while under a bit of interview pressure, then you're not likely to be able to cope long-term in a development job.
This may sound logical and like common sense, but it is flat out wrong. Pressure in interviews is not the same as pressure in a job. I've been the one to fix something in 5 minutes during a global outage with 10 people watching behind me, when the previous solution would have taken hours. I've been the lead on calls with 20 partner companies across 5 countries as the largest spike of traffic per year hits us. I can handle pressure.
I've also had panic attacks in interviews. I've shut down completely. I've had my heart rate jump to 150. Not every time, but enough for interviewing to be a really big problem for me.
Whats the difference? For me, it's the perception of conflict or adversary. Some interviewers LOVE to put it out, like they're some shining knight protecting their company from the slithering fake programmers. They're looking for reasons for you to fail. They're looking for whether you're a "cog", as you use the word, and more often than not when looking for that you find it. When I'm on a team who all has the same goal, I shine plenty bright. I would ask that you reevaluate your biases.
It's not wrong in the slightest. There are multiple parts to performing at a development job, but one of the parts that you can least afford to screw up on is communication with members of your team. If you can't communicate effectively when nothing is actually at stake, then I would never trust you to communicate effectively when everything is on fire. A job interview is not an adversarial confrontation. It is an assessment of what you've done and how you communicate your ideas.
You having an adversarial perception of a normal question and answer session says far more about you than it does the interviewer.
It sounds like you've had the good fortune of never running afoul of a harsh interviewer. I don't believe I've had either, but certainly stories abound. And I've definitely encountered interviewers who were checked out and seemed rudely unfocused on the interview.
While interviews might not be inherently adversarial, they are at least inherently confrontational, there is a power asymmetry. One is being evaluated. The fail state of rejection is present and the other party is willing to use it against you if you fail their expectations. Whereas at most companies with non-toxic cultures, your coworkers do not consider doing that to you. As such, interviews are always inherently different social environments from day to day work.
No, I've had the life experience of being a professional recruiter as well as a developer.
There's no inherent power asymmetry in interviews outside of your own employer. They have a job to offer. You want the job they're offering. They either offer you the job or don't, you either accept the offer or don't. You are determining whether the employer is a fit for YOU and what YOU want out of your career just as much as they are deciding whether you are a fit for them. It takes two to agree. At the end of the day, you owe each other nothing but the courtesy one would normally have for someone you are about to spend an hour or more with. On either side of the desk, I interview for jobs much better than most because I always keep that in mind. Most people claim to understand that on a conceptual level but they don't actually process it.
As the interviewer, I'm mostly interested in gauging the talent level of the individual and their interest in the problem domain that we are trying to solve for. As the interviewee, I understand that the worst anyone can do to me is waste my time because either our values don't align, the project isn't interesting, my skills aren't a fit, or there are simply better candidates out there. These are all okay.
When I took my first job after being the sole developer at a company for a decade, it was going to be the first time I worked with a team of devs. The first time I worked with a version control system in a professional setting. The first time when I was not going to be the main point of contact for any flaws or failure in the system. The first time that I wasn't going to be the main designer of the system's components or front end. The first time I would ever work with Angular. I told them all of this.
Know what got me the job?
I could tell you every technical detail about everything I had ever done, but also fully admit where I was lacking. I left no grey area and offered to elaborate where necessary. Either I did something and was confident that I could reproduce it (or explain the business / design decisions behind it), or I had no on-the-job experience but expressed confidence that (a) I could learn, and (b) that I was enthusiastic about learning about the problem domain. And I got along with everybody I talked to because my aim was to be a part of a team and not some weird data processing oracle.
Managers want a combination of talent, technical expertise, interest, and team fit. This shit isn't rocket science. You are totally within your rights to cancel an interview if someone tries to make you be a whiteboard monkey and regurgitate data structures that you will either never use or have widely-used open source libraries that are available, or if the interviewer is disrespectful to you, or if they aren't respectful of your time.
As a matter of fact, I recommend it. But at the end of the day, if they don't hire you, you've lost nothing of value but the time it took to interview.
> As the interviewee, I understand that the worst anyone can do to me is waste my time because either our values don't align, the project isn't interesting, my skills aren't a fit, or there are simply better candidates out there.
There's also the matter that a rejection could mean you're deprived of a potential livelihood. That's high stakes since it's connected to your survival. This might be an exaggerated stress, but the connection to motivation is there.
And as in all situations where one is being judged, one's ego is also being tested. To many, an interview rejection might not mean anything. To others, it could call into question their skills, their status as an engineer, their very person into being. Again, that is an exaggeration, but it is valid. Software has become a very competitive industry, and the corporate rhetoric that floats around ("doing the best job of your career", "make your job your life"), can have a very totalizing effect on people's self-perceptions.
Even on a mundane level, because software interviews are notoriously opaque and most places don't provide feedback, candidates are left guessing what they did wrong afterwards. It's not necessarily a big puzzle, but having the uncertainty of knowing what one's flaws are is an inherently anxious feeling.
You seem to have a very strong opinion of your experiences, of your capability as an interviewer, and your organization's interviewing process. That's great! Bully for you. But you absolutely cannot extrapolate your own experiences for the entire industry. If all interviewers were as anxiety-reducing as you say, then this discussion thread wouldn't even exist. You are not the industry.
I really recommend you read my comment again before responding because I don’t think you ingested any of it. You’re literally saying that anyone anxious in an interview is both incompetent and a cog, and that anxiety in an interview is directly related to ability to communicate on the job.
Anecdotally, I'm very comfortable with public speaking and presenting complex ideas, code, and architectures to a room of colleagues. I've given conference keynotes to 1000s with no problems. However, high pressure technical whiteboards still cause my brain to freeze. So I think they are different parts of the brain, and doing well or not on a high pressure whiteboard doesn't correlate with how well that employee will do convincing and presenting complex ideas to coworkers (it's definitely not true in my own case, I know thats N=1, but its something).
I think I already addressed the whiteboarding issue. I don't find it to be useful in any setting other than a VERY high level discussion about architecture.
I disagree about this. I have a whiteboard at home just for programming work because it helps me think. When I find a problem difficult, I find it much easier to problem solve away from the computer. And I often prefer a whiteboard to paper for some reason.
It’s interesting to me that this type of comment always shows up with like minded articles and studies. It’s always along the lines of “YOU CANT HANDLE THE PRESSURE”
Some profession include situations with actual stress and mortal danger. Doing good programming should be more like solving high school math problems in solitude than a high pressure social interaction.
Or: if your development environment has high stress interaction get a consultant to settle the issue, you likely have multiple issues that need to be dealt with.
Everyone's talking like they deserve the job and it's just the format that's causing anxiety, but in reality upwards of 90% of applicants don't measure up.
In their defence, anxiety does cause some applicants to fail. But the vast majority of applicants who apply to any technical role can’t really program. It’s obvious in these comment threads that lots of folks have never sat on the other side of an interview room.
Performance anxiety is real though. One mark of a good interviewer is how well they can get a candidate to relax and perform at their best. I’ve done over 400 interviews and I still worry I don’t quite have that skill down.
Because it's true. Job interviews aren't remotely as anxiety-inducing as a manager who wants to know why the widget you worked on blew up in production. If you can't answer basic questions about your background and experience, then you're not the sort of person I want to work with. I hire technical people with the expectation that they will one day either be able to fill my chair or exceed my abilities. If you're hiring a person who you would never want to work for, then you are hiring the wrong people. I guess the one caveat would be to hire someone directly out of school, since they would be less likely to have experienced that sort of direct pressure... but I expect an experienced employee to be able to answer questions with some sort of confidence.
In real life you'll ask them why there's a bug on production - and he'll tell you wait 5 minutes I'm checking/reproducing the issue. It's very rare that you'll have to get an answer immediately - this isn't emergency medicine. We're only programmers.
In real life there's still going to be pressure to come up with an answer regardless of how long that takes and how distasteful it might be. What I don't need is for someone who is completely risk and pressure-averse to have a meltdown because they feel that the answer to the question I ask is going to be unsatisfactory. I want to know what the correct assessment of the situation is so that I can make an informed decision going forward, not some glossed over bullshit that turns into a bigger problem down the road. People like that are their own worst enemies.
> In real life there's still going to be pressure to come up with an answer
Like how? Honestly. What answer are you immediately looking for if there's a bug? You're looking for a fix, not an answer. And it takes time, a bug fix for a non trivial production system is almost always 10+ minutes unless it's some silly html/css bug.
This comment is the personification of the mindset that makes interviews a hostile situation. You are not only extremely biased against some of the best coders I've ever worked with but actively harming the hiring process for your employer if you are involved at all.
I like to work with people that take a day and get the best solution, not the people that get an ok solution right away. To understand the essence of what is needed rather than the brute force answer. I also find a lot of people can function at that level when the environment is structured to reward deep thought and to help people calm themselves to the point they can think.
For this study, researchers conducted technical interviews of 48 computer science undergraduates and graduate students.
So they weren't studying real interviews. They were studying fake interviews as performed by a bunch of PhD students at NC State. And it turns out those fake interviews weren't good at assessing software skills.
This just doesn't seem like a meaningful study. Interviewing is a skill; you can't just assume that a random PhD student is just as good an interviewer as an experienced, professional software engineer. Heck, many PhD students won't be able to pass a typical tech interview themselves.
I really dislike articles like these. It's a well known fact that the interview process is deeply flawed; this study isn't really presenting any new material. What's more, the flaw being critiqued - that interviews are bad for people with performance anxiety - adds nothing to the conversation. What is the advocacy here? That interviews should be abolished?
Also, it's social science research with a small sample size, which means that few to no conclusions should be drawn from it (see: replication crisis).
No one says these interviews have to be abolished, but perhaps their formats can be tweaked to reduce anxiety. It could also be an argument in favor of asymmetric technical exercises such as take-home assignments or the mythical paid trial period.
It's at least an attempt to apply some scientific methodology to examining the current interview process, and even if this individual research is flawed then it simply means more studies should be done with better sampling.
Another tech interview discussion :-). How many do we have these in a month? Seriously, if you want to get into FAANG type companies and want the kind of money/work they offer, there's just no choice left other than leetcode. And it's not going to change unless these FAANG companies change. So, until then let's just get over it and get back to leetcode :-).
Edit: I'm being downvoted. But I can't help speaking the raw truth here.
Unfortunately, other companies copy FAANG because FAANG are the most successful companies. We don't have to accept it. We just have to choose our battles. As I said, if you want the kind of money/work these companies offer, there's just no other choice these days.
Also because "four years at FAANG -> CTO or Development Lead (with a major hiring component) of a smallish funded startup" is a really common path, and those folks often bring along those interviewing processes. Startup founders & salespeople love to be able to say "so-and-so came to us from Google" when talking to e.g. potential investors or major sales prospects, but often can't really afford great managers or well-seasoned developers from those places, most of the time, so you see a lot of this "this is my fourth job ever, counting an internship, and I've never held a position higher than Team Lead in which I still mostly wrote code, and I've been in industry less than ten years total, but half of that was at FAANG and one time I presented at a minor conference and that's on Youtube, so now I'm CTO of [25-employee startup]"
I think those places are screwing up, since they usually can't match FAANG comp and anyone who is great at those kinds of interviews will just go to FAANG instead, but whatever.
Anecdotally, the best (by far) interview performances in my career where when I didn't actually care about the outcome. I guess fear is indeed the mind-killer, at least for me. That's why the absolute best time to switch jobs in when you don't really need to change jobs.
The study participants were split into two groups. One group solved the problem alone, in silence. The other group was instructed to narrate their thought process out loud to an interviewer who stood over their shoulder (literally, see the photo on page 3) while they solved it.
The flaw in this study is that the two groups weren't really assigned the same task. Solving a problem isn't the same as verbally narrating your solution to a problem. The authors attributed the differences not to the extra work narration work assigned to the second group, but to anxiety levels.
The participants even explained that their difficulty came from having to talk while solving:
> Participants also had difficulty with performing tasks that involved multiple simultaneous actions. Participants felt stressed by having to “talk while trying to write” (P44), “talking while writing” (P25), and “think and talk and do code at the same time” (P39). P41 found it difficult to “constantly speak during solving” and “lost breath at a few places during the task”.
There are other concerns with the study format such as many of a significant number of participants simply giving up well before the clock ran out, in both the private and public interview groups. They were given 30 minutes to solve 3 problems, but some of the participants (including in the private group) were giving up around the 10 minute mark without solving anything at all. This suggests a very high variance of the underlying abilities of their candidates, which necessitates a much larger sample size to draw conclusions.