Why I Don't Prepare for Job Interviews
dev.to
dev.to
This is a fallacy, you'll encounter things that you are not "qualified" to do on the job all the time, not to mention that if you are applying for an engineering job, or any other job that effectively requires you to solve problems; then learning new things, performing studies and research and finding a solution to the problem is your job description.
If the role is such that a candidate can have 100% of the experience and knowledge needed to perform that role during it's entire lifetime than that role is effectively the burger flipping of the tech world. This role is also the easiest to automate since apparently all the answers and knowledge needed to fulfil are known.
If the job doesn't require any reach, it's "burger flipping". If the job requires more reach than you can get, even from the top of your experience-pile, and building the pile up to extend your reach enough to achieve the goal will take more time than you have, then you're unqualified for the job. So, you want something in the happy middle: not trivial for you, but not out of your grasp.
Your reach should be small, compared to your experience, unless you're just starting out.
When interviewers ask you all sorts of minutiae that are outside of your experience and also not at all required for your job, and when those companies have extremely lucrative compensation and benefits package with "dream" work cultures (for most), not preparing for that interview puts you at a disadvantage for someone who has.
If you're trying for stretch roles that your experience doesn't cover for whatever reason, not preparing for those interviews will put you at a significant disadvantage.
Most interviews are set up to be an unnatural setting that is, unfortunately, often set to work against you. This is changing slowly, but it is what it is. Not having the skills to navigate that environment isn't bad per se but does worsen your position against someone who has.
An example: if I'm a Rails developer that wants to become a SRE at Google, and my current workplace is too small to give me the experience I need to coast through their notoriously tricky interview, what do I do? Do I take this author's advice and go in blind and wait for the beating that is about to come? Or do I learn what I need to learn to get through it, fail once or twice and iterate?
I would not be where I am today without having prepped for my interviews. I also won't ever ding someone for prepping for an interview. Quite the contrary, prepping shows that they care at least somewhat.
There's a difference between trying to _learn_ to get through and cramming as much "knowledge" as possible just to spit it out in the interview, and what usually happens is the second case, specially regarding algorithms.
Of course, you're probably not qualified for the position. Thus it's normal to have troubles in the interview.
This sort of transition used to be done by joining a "junior" position and getting trained on the job, without having to pretend to be a wizard.
Unfortunately it's hard to accept for one's ego that he has to continue as a not senior when changing fields, and it probably makes no sense on a financial perspective since an experienced ruby dev might earn more in his niche.
When I get a candidate who has no sense of the job they are applying for and is not able to ask meaningful questions, it tells me they don't care or don't understand.
If you are completely unqualified for the job, you will be found out, but if the difference in skill/experience is small enough, it's probably best to be honest about the gap. In that case, "studying up" may be a risky investment of your time, but at best it may show your commitment and at worst you will have picked up some new skills :)
They will even give you a study guide!
Being really good at programming on a whiteboard is the name of the game. And studying for this is absolutely useful, and not "cheating" because everyone does it and is expected to do it.
When I say "program on a whiteboard", I am mostly talking about the google style algorithms questions.
The way to practice for those is to just do a whole bunch of them, and talk to yourself, like you are in an interview.
It is just CS 201 material. All the material is out there for anybody to study.
The best materials are Cracking the Code interview, as well as the Google University github page.
There are also free resources out there for doing real life practice interviews, and pairing you up with people who do that.
Preparing for the Google Style interview is a whole entire industry.
They've got the most common algorithm questions asked at the various Big Tech companies.
Go through them, and learn to solve/implemented at least 250 of their problems, and you'll be able to able to breeze through most algo interviews.
I don't see how this process is useful to the candidate. I mean it is useful if he is actually hired but is there any other usefulness beyond this? Does it improve your skill? Makes you a better person? Is it fun? I don't think so.
Also refer to my other comment.
I sharpend my skills and learned new stuff.
The other day, I read a rant about an algorithms interview question at some big company (it might have been Google, but I'm not sure and it doesn't matter). Essentially the rant was that the candidate had been asked to implement an obscure version of some widely known and well described function that has O(n) time where all the standard and widely studied and likely to be crammed versions have O(n log n) time -- more or less the question was based on an algorithm of the sort that probably appears in a research journal or conference proceedings and no where else. Essentially, the question was uncrammable.
That's what makes it a great interview question. It identifies true genius when the candidate can figure it out on the fly. It identifies ordinary engineering talent when the candidate starts with what they know [an O(n log n) solution] and reasons from there (and perhaps asks for help!] and it identifies people candidates who are applying at Google because it is Google and not because they enjoy challenging problems.
Except they filter those who "doesn't do algorithms" for free (the prep/cramming takes about 6 months I believe)...
And finally, it would be fascinating to plot career performance at Google vs time spent interviewing. Intuitively I would expect those who got an offer without studying to do better (higher latent intelligence), but I could also see it going the other way (lots of studying correlates with willingness to work hard on boring problems, which is what most Google engineers actually have to do day-to-day).
Other people do though.
Perhaps you are one of those people who could just walk in and Ace the final exam for an intermediate data structures and algorithms class taught at colleges.
Why does this matter?
I do have to note that I mostly do the last interview rounds, after initial screenings and assignment (from home, no whiteboard coding), so I talk to candidates who have had plenty of exposure to things to ask follow-up questions about. Why should it not matter?
I feel like this is the least true statement in the article. A candidate should have the willingness and ability to learn the skills required to perform the job duties, and improve those skills over time. They should have some basic building block skills required in advance, like understanding how code languages work, and how to learn them, or how to communicate with teammates and get difficult questions answered. But experience is probably not what they need, unless only experience can build a specific skill (i.e. product/market vision based on intimate domain knowledge.)
> Taking one of them would have set me back in my career since I would not have the skills I would have needed to do the job well.
There's a massive disparity in most jobs between experience demanded for, and (potential) experience on offer to be gained from, the particular role.
When I've sat on the recruiter side of the desk I've always been a bit wary about people who have a superset of the skills required for a job -- they're going to be very bored, very quickly. When I've sat on the other side of the desk I've had trouble verbalising, to the panel, the benefits of considering a candidate who has 70-90% of the skills or experience they're looking for.
>But preparing for an interview by cramming/studying material that is supposedly needed for the job makes no sense. A candidate should have the experience to do the job well.
I think it is a good ideological stance. However, what about the scenario when you are applying for a junior position and don't have that much experience?
Moreover, as it has been demonstrated time and again, technical hiring is broken. Some folks like to talk about high-level concepts; some folks like to ask trivia and some others like to ask you to whiteboard the algorithms. If a company expects you to use a whiteboard and you are not used to it, you are not going to do well even if it is a topic you are familiar with (We don't realize how much we rely on editor/autocomplete).
I am happy that he was able to find another job without preparing, but this advice will not work for the majority of people.
>this advice will not work for the majority of people
That sums it up, the advice is good but since technical hiring is broken it doesn't work. This is why having a good interviewer is pivotal for a company. Someone who knows the company well and is good at reading people quickly and accurately
This was my first thought also. There are two issues here: One is: do you need to cram to prepare for the job? But the other is: does the interview measure your job preparation?
Most technical interviews don't. Even good ones that discern strong candidates often depend on knowledge and memorization way outside the actual job scope. (Often, way below the job scope. O(N) palindrome search is not a professional skill.)
So it's great to say that you should know what you need for the job, but conflating that with what you need for the interview is an unproven leap.
Likewise with the interview. Sure, I look into the company, the requirements. If they use libraries that I am unfamiliar with, I will review the documentation so I have a general idea of what it does and how I can map my existing skills against those libraries. But I can't become an expert in that short of a time, and I wouldn't purport to be one in the interview either.
I have yet to do an interview that asked me to white board. I've been asked to solve some fairly basic problems (of the fubar variety). But then again, I've never applied to a business that was large enough that my resume and interview wasn't handled by my future direct supervisor. I've no interest in jumping through the hoops of a large bureaucratic corporation.
Interviews happen in every industry. An interviewer asks about your interest in the company, your background, your leadership skills. Your technical skills may be investigated here, but in a discussion format. You may be asked questions about your knowledge of a database or perhaps a programming language, but you won't be tested specifically on that language.
Then there's the technical "interview" that is really an exam. Google's interview is a good example of this. You go up to a whiteboard, and the interviewer says "write a method to convert an integer to binary. Now add and subtract in binary. How would you square a binary number". You should be writing code on the white board, in either a real language or very tight pseudocode, to do this. Alternatively, the interviewer might ask you to find your way out of a maze, probably through some kind of graph traversal algorithm. Again, you really do need to write code that solves the problem.
This style of interview is indistinguishable from an exam. I think it exists because programmers don't have an actual exam in their field. It might be similar to asking a senior actuary to find the linear span of a vector space. There was almost certainly a time when the actuary could do this, since the actuary took an entrance exam on vector calc and linear algebra, but it isn't something a senior actuary most likely walks around ready to do. It would require re-studying.
As a few others have pointed out on this thread, there's a difference between studying for an exam and prepping for an interview. I've resolved not to do the latter anymore, but I really may simply not have that choice. The practice is deeply entrenched. But the former, of course I'd prep for an interview.
And also, you know, I actually think it's a good thing that lawyers take the bar, that actuaries take math exams. I don't think it's outrageous that people who hire programmers would want to know that these programmers have, at one time, passed an entrance exam on data structures and algorithms, binary operations, and so forth. The problem is that because we don't have such an exam in our field, we have to take a random and often unexpected version of it, under conditions of secrecy, with no feed back, evaluated by people who may not be qualified and who can be captious and arbitrary in their assessments.
I actually kind of enjoyed studying for and even taking my google exams. My day job often involves a lot of very intense and intricate work, but not necessarily fun concepts. I actually enjoy trying to figure out how to find all matching subtrees in a general tree, or all the permutations of a subset and whether they can be reassembled to enclose a different set, and how to do this efficiently. It actually is sorta fun.
Unfortunately, getting sharp enough at this where I can handle new questions like this in 45 minutes at a whiteboard was a bit much for me. I might be able to do it with several months of intense study. I was surprised with the amount of process they really do expect you to make at the whiteboard in 45 minute (the reason given for the no hire was that I analyzed problems well but just didn't make enough coding progress. who knows what that really means, they may have just been being nice).
Honestly, it may be a good filter. It shows that I either 1) am not quite sharp enough to get to this level within a couple of weeks, or 2) am unable or unwilling to invest the amount of time necessary to get myself to this level over a greater period of time (i.e., I have other life demands that prevent me from doing so, or am otherwise disinclined to do so).
That may give a tech employer some key information about my ability to devote myself to the job to the extent they would like.
Sure, if we live in this fantasy world, where the person who passes the interview is by definition going to be good at the job, then his advice makes sense.
Unfortunately, the world we live in is one where you have to program algorithms on a whiteboard to get a job in web dev.
And for THAT world, it absolutely makes sense to study this material that you don't use in your job, but are being judged on.
"Granted, all of this implies that companies have actually created an interview that actually tests the skills needed for the position they are hiring for."
Nothing any of us can do about it. It would mean avoiding all mid size/larger tech companies. I am looking for a change, and I am preparing heavily. Algos, data structures, design stuff.
>Granted, all of this implies that companies have actually created an interview that actually tests the skills needed for the position they are hiring for.
I think he meant "assumes" not implies, but this is the crux. They test what they test, and if it possible to game it, people will do so.
The only other resource is questions from actual interviews that people put up. To be honest, I find it hard to prepare for this part too. Algos are easy, once you do crack the coding interview and a few online questions.
(They did offer the job, but for not enough money after I naively answered the salary history question. Oops.)
Quite simply it is because performers: sports stars, musicians don't have the time to think about how to perform - it has to be "muscle memory".
In an interview, a candidate needs to have the muscle memory to do the work in a timed manner. I have had candidates say they know Java and then not demonstrate their knowledge. (They might indeed know Java well - but have been out of practice!)
I suspect the OP is a very smart person, who can "muscle" his way through most interviews. Most developers are mere mortals and can not pull it off. This is the danger of listening to exceptional people - their techniques do not apply.
----
As for preparing the candidates by letting them know the questions, as an interviewer, I want to judge the candidates based on their best performance. At my company we have a very practical approach to interviewing - it starts with no brainteasers.
And yes we are hiring for all levels! (reply if in the bay area)
The true value of the face-to-face interview really should be getting a feel for the person - is this person someone I want to work with? Or will this person make me want to kill myself whenever I step into the office? - not to gauge technical prowess or whiteboard prove-you-are-smart-and-took-an-algo-class-in-college challenges
[Shameless plug, feel free to skip] However, if you do want to prepare for a Google-style interview, I maintain a list of resources here: https://github.com/andreis/interview
It's an advantage is you want to self-select out of code-monkey work. Like if you want to be an "architect" or "strategist"
It's like the SAT. You can't study but you can absolutely practice, and practice will improve your score.
But if you gotta spend time doing anything job hunting, spend time talking to people in your network.
Interviewers have so many biases and pet interests. If you happen start talking about something technical(Some side project using x technology) you both enjoy, you instantly get on, and its great.
If start talking about a side project the interviewer has no interest or knowledge in, not so great. It becomes hard work.
There is an element of luck about who is interviewing you.
Usually people prepare for job interviews by cramming sorting algorithms, balanced trees, answers to questions like "why are manhole covers round?", and similar things unrelated to job.
I did make it to an in-person at Google. I failed the interview. The recruiter did encourage me to prepare, though.
imagine you have low savings and you support your wife and small child at home, can you afford to sit at home for months until you find good match without pretending and cramming when it obviously work for some companies?
If you can learn over the weekend just enough about some technology to pass the interview , then, after you get accepted you'll have another month before you actually join (standard notice period)
After that month of learning and another month of "onboarding" in the new workplace no one would be able to tell the difference between you and someone that has 1 year of actual experience in the given technology.
"Fake it untill you make it" - that's how I got my first 3 or 4 jobs :)
Why? Because I am the prize.
They should be happy talking to me, let alone kicking ass for them (and getting owned on taxes, working in some shitty open office, and regularly dealing with deadbeats).
Man I love remote consulting.
All results focused, much higher pay, tax savings (I'm incorporated), and can tell any client to fuck off whenever I want.
Working as an employee is like having a parent dictate your life.
Catered lunches, hackathons, useless toys and shit in the office, telling me how often I can go out, telling me how many "days off" I get.
I had a mother do that stuff for me as a child, which was lovely at the time.
You're a 30+ year old man, and you still need/want someone to feed you, dry clean, and bless you with X days vacation that you have to communicate upfront. Please.
I don't need anyone's permission to fly to an all-inclusive resort to swim in the ocean, eat great food, and kick ass everyday on my commitments.