I wish more people would give real, actionable feedback on interviews.
I wish more people would give real, actionable feedback on interviews.
Assuming Microsoft actually measures this stuff, that's kind of surprising to me. I've never placed much weight on being able to write a program on the spot.
I don't disagree, and personally I hate in person coding exercises, but if you keep the question simple and allow the candidate to code in their native language, something fizz-buzz like will go a long way in weeding out the people who have languages on their resume but can't code.
At our company we offer two simple coderpad tasks to be done in advance with no supervision or pressure - write a linked list in CPP and solve a simple puzzle in Python. You pay attention to the candidates who use templates, destructors, smart pointers, even if they make mistakes those are the ones you probably want to hire.
Maybe I don't know enough C++ to understand this, but I don't understand why using fancier features would make you like the candidate more when they are making mistakes. Unless you ask them to write a templated linked list, why would you grade them for automatically deciding to write one (and then making a mistake while doing so)?
Trying to understand the thought process here since I have been on the receiving side of some of these "Look I used the cool feature!" candidate programs in Python, and they often make pretty bad mistakes while using said advanced features. That personally marks them down slightly in my estimation, but curious to know your view is the opposite.
Meta: Maybe the problem with hiring via takehomes/code samples is precisely exemplified by the above discussion.
It's not about cool features. It's about using the correct modern features which make the code safer and easier to follow.
Templates are a relatively advanced feature but trivial to write for such a case and I'm looking for a candidate who understands containers are typically generic and knows how to add the two lines. I take it as a marker of experience.
There's no excuse other than inexperience or old fashionedness to not use smart pointers.
Destructors are also a sort of minimal knowledge because they show that a candidate thinks correctly about memory management.
There isn't really a score to what we do. And in all honesty the first few times we gave the test I didn't really know what to look for, this is my first time from the other side. But it isn't too much to expect a competent cpp programmer to know these things and I'm looking for candidates who are willing to use the open ended opportunity to flex their muscles, provided their code is well structured and doesn't have severe, obvious bugs. I don't claim that this is perfect but it seems suited to screen for the basic kind of knowledge we look for. These are not entry level positions either.
The best part about it? I was already a full time employee at Microsoft. I just wanted to switch teams. I still had to do a full interview loop with the team and well... I didn't get the job.
In terms of people I've hired, if they can solve and code things in real time on a white board, then they can definitely do even better with more time and research.
Everyone does better with research, trial, and error. That's not unique. What's unique is problem solving on your feet in a foreign environment. I want those people.
Better? Sure. Not everyone can go from 0 to competent in a new area within a reasonable time frame.
I blazed through all the questions the manager asked, and the manager told me I was the most talented person he'd ever interviewed and would definitely get the job, and then I didn't get the job, and got no further feedback. It was the most confusing interview process I'd ever been in.
I sent him to ask him if there was some sort of mistake, and he didn't even reply directly, just sent me back a message through the recruiter saying no, it wasn't a mistake.
Luke Hohmann, author of The Journey of the Software Professional, advises to give such feedback. I've endeavored to do so.
FWIW, though I've been insulted and hazed and ghosted many times, I've yet to be given constructive criticism.
A few times I've been told why I didn't "pass". One guy was upset that I didn't favor aspects (a la Spring). Another was disappointed by my answer for how to resolve a hypothetical impasse ("try both").
That sort of thing.
Job interviewing is just dating. I accept that most people can't articulate why it's a "No." But I can't abide by the tortured rationalizations of poorly socialized geeks and accompanying general purpose meanness used to mask their own inadequacies.
Said more kindly, most people, and especially geeks, shouldn't be allowed to conduct interviews unsupervised. It's a teachable professional skill like any other. Asking the unprepared and unsuited is just cruel to all parties.
If you get fired four weeks in to your internship, because no amount of coaching from the senior employees is worth the investment by the company.... that’s a tough situation to be in. It’s pretty late at that point to start looking for another internship for the summer.
And if you’re the kid’s supervisor... that’s not a fun conversation to have.
Wonder how long ago this policy was in place because when I interviewed last year I was able to interview with multiple teams.
The gotchas are ridiculous.
If an interviewer googled the question - why do I need to know the answer?
I recently had an interview and I spent _literally_ over an hour trying to figure out the algorithm or a mathematical function to solve it and I finally got to the point that I gave up.
I asked the person what algorithm they used to solve it and they said “brute force” and were expecting nested loops that under real world load would have been O(n^2).
I definitely don’t consider myself an algorithm expert, but my feedback was, and I shit you not, that I didn’t know ruby. I’ve been developing in ruby since 2006.
Anecdotes and all. Our industry’s interview process is flawed AF.