The Gap in Technical Interview Preparation
quora.com
quora.com
What we have here is a population (interviewees) that we want to sample according to some metric. We want to apply some series of filters that limit the sample to only candidates that exceed some threshold of suitability for a task.
After forming a model for that filter, we apply it and begin to suspect that we're not extracting the optimal subset of interviewees.
In any other scenario, the answer to this lack of fit would be to change the sampling method/filters. But for some reason, unique to the interview process, interviewers decide the solution is for the population of interest to "study" at passing our filters. In other words, we find we have a bad measuring instrument and instead of designing a new instrument, the reaction is to insist that the samples work harder to fit the bad measurements.
I'd like to propose if qualified candidates have to study for your "test", you're test isn't very good at finding qualified candidates.
By the time a candidate makes it to an interview, initial screeners should have eliminated those that haven't proven their ability to study for a test when given the parameters of that test in advance. Try coming up with better questions to determine if they're a good fit for your company.
...
Now excuse me while I go re memorize all the big-O worst/best case performance for algorithms from my first year of undergraduate instead of just deriving it out or looking it up in a table like we all know we do in reality. (unless we use it every day)
edit
Oh, and the tool looks really fun and will probably help in said interviews. ;)
There are a lot of things that are broken here. The huge gap between the university curriculum and the real world industry needs shouldn't exist in the first place. Which is what our longer term vision is. Watch out for more :)
I suppose it's easy pointing out flaws without offering solutions.
I think one possible solution would be a system where potential new hires were given real world problems under real world working conditions. Today, people often study for months to "pass" the interview tests. Generally taking up many hours of multiple interviewers time.
Instead, if a potential candidate were given a sufficiently unique and difficult problem and a time window to complete it representative of the desired work output it would provide a much better idea of what kind of employee they would be.
- Did they complete the job earlier than the given time, but turned in sloppy or a less than ideal solution?
- Did they eat up the entire allotted time, but turn in truly stellar work?
- Best of all, turned in early, unique solution with good, commented, test driven code and asking for another problem?
And really who cares if they had to review their algorithms or operating systems book to do it? That's why we keep them on our shelf.
I'd say for sufficiently hard, and original, problems I spend 80% of my time with my nose in a book or reading papers and 20% engineering a solution....unless I'm doing it day in and day out.
After that, it's mostly about personality and team fit. Bring them in to do some white booarding (full access to resources) and work with the team, make sure they aren't smoke and mirrors. Then make a call.
edit
For example, take your ops guy. Best interview I've ever seen for ops is to throw them in a broken sandbox environment, give them root & tell them to fix it, and walk away.
I'm not sure I agree with this though. "Real world" is very different from company to company, domain to domain. It also changes dramatically in just the few years required to attain a degree.
I've always viewed universities as providing the foundation and discipline needed to adapt to any of those situations rather preparing or trying to guess at the needs of any particular one.
I joined Box.com as an Engineer in 2008, when we were 5 engineers. Grew rapidly with the company and was most recently a Director in Engineering, managing multiple teams full of amazing people. Left after 6 years, to fulfill my entrepreneurial dreams. Box was my career-launching company. (And it is, for many other engineers). I have also worked at Microsoft and eBay.
Along the way, I had the incredible opportunity to help our technical teams grow from 5 to ~250 engineers. This meant living and breathing the interviewing machine exploring all its nooks and corners, and ups and downs.
Box is also a company that constantly questions and improves its interviewing processes. That relentless focus helped us hire great engineers.
I noticed however, that despite all that attention, hiring took an unreasonably long amount of time and much agony. We’d go through hundreds of resumes, countless phone screens and countless onsite interviews for each open position.
That bothered me to no end. If most of our interviews were of reasonably average difficulty, our scoring method was well-structured, and our interviewers well-trained, why would only a few candidates clear our interviews? Yet, in the end, our pass rate was <5%. I was not ready to believe that rest 95% of people were not competent.
I dug into this extensively, and realized that while everyone was hard-working and very smart in their own way, they vastly under-estimated the amount of preparation it would take to clear programming interviews at top companies. They only had a vague idea of what to expect, and did not have enough practice to solve interview problems under time-pressure. Their daily jobs or schools did not prepare them for handling interviews.
I found more evidence of this from the career-coaching I did on the side (pro-bono). Many candidates would even want to change their careers, thinking they were not good at programming, simply because they weren't able to crack interviews.
I'm now doing something similar in the valley, but in a very high-touch, classroom setting way, for experienced professionals: http://InterviewKickstart.com. We've been lucky to have had excellent success and very satisfying career transforming stories.