On the unreasonable reality of “junior” developer interviews
samphippen.com
samphippen.com
In my experience and opinion, software engineers are some of the world's most incompetent buffoons at interviewing; myself included.
One thing I've found interesting was examining the various ways different companies handle the tech screening process. I've had everything from no real tech screen to back to back algorithm-based interviews. It's definitely possible to suss out what a company cares about from the sorts of questions they asked.
The biggest issue for me was that I never really was unable to get the right answer, but that wasn't always what the interviewers were looking for. I got told at least once that they expected me to simply be faster. I wasn't sure how to take that.
Looking back, all but one of the several companies from whom I received job offers had processes requiring coding-intensive tech screens that placed only minimal restrictions on the time one could take. The job I took was actually with the company that had the MOST intensive process (though that wasn't really a factor in my decision).
I don't think I'm incapable of doing the jobs at the algorithmic-questions companies who rejected me, any more than I think myself incapable of the job I was hired for. In fact, the work at each organization was quite similar. So, am I missing something, or are they, or both?
They are.
On the spectrum of human interactions, interviews are closer to a date, than they are to an exam. If you make a connection with your interviewer during that hour, (via whatever topic it is), they will go at lengths to hire you. Yes, you're expected to solve the given technical problem reasonably well, but beyond that, you have to leave it to "chance" and "pray" that you get a good panel.
That's how it SHOULD also work. Because YOU are also interviewing them at the same time. If you don't get inspired with the interviewers, you should also not join that company. i.e. you're also looking for a human connection.
I train for technical interviews for a living, at our exclusive bootcamp for interview prep: http://InterviewKickstart.com . Our entire theory is based on this premise i.e. that interviews are not a standardized exam; they cannot be gamed. All you can do is practice technical stuff really really well. In the end, who gets hired is not in your hands. And that's okay.
I ask these types of questions not because I really care if an interviewee can reverse a linked list or whatever, but to gauge their familiarity with the language. If their resume claims several large projects, and they claim to work with a language every day, but they struggle with the basic syntax, something is off. And that happens all the time.
"A technical discussion makes a much better place to start an interview. One isn’t under pressure to perform. Instead, one gets the opportunity to talk, correct previous mistakes, listen, react, and, generally learn about the person. Communication is the most important thing we do as developers. All computer problems are people problems. Let’s interview like that’s the case. One walks out of a technical discussion usually feeling pretty good. Interviewees like to spout reckons. Interviewers like to hear and react to those reckons. We get to work out if we can work together based on how reasonable our reactions are, whether we’re willing to give ground where we’re wrong, and, generally demonstrate how we like to work."
Also, the blind focus on coding interviews forgets the hiring market. So what if a candidate fumbles in front of the whiteboard. When there are 10 jobs chasing every candidate, you would be better off hiring people who barely demonstrate the technical skill you need, but who fit in the team AND DEMONSTRATE A STRONG DESIRE TO WORK WITH YOU.
Employees who have a strong desire to succeed, will learn what is needed for your technical environment, and won't run away for a higher salary after 6 months.
People don't really consider the downsides of the whiteboard interview. They often fail miserably on the criteria of dialogue and end up being a candidate's monologue in a room full of silent observers. I've gone through such interviews in which only one of the observers ever spoke, and mostly just hints/reminders about the coding problem. At the end, I knew nothing about the company's technical environment or the way that the team worked. And they knew little to nothing about me and my technical skill.
People view whiteboard exercises as a proxy for getting to know the candidate, and in my opinion, this is far from reality.
I still see some value in a test about the same level of complexity as FizzBuzz, but only as an opener for an actual dialogue with the candidate about what they are capable of.
I think the fascination with whiteboard tests comes from the influx of CS types used to greenfield development into the flood of startup companies doing greenfield development, who were faced with a flood of candidates whose entire previous work experience was in brownfield development. In reality, most of those who failed at the whiteboard tests were competent developers who simply had no experience working with a blank slate Given an existing system, and a feature to be added or a problem to be fixed, they do just fine. And most greenfield companies get to the brownfield stage within months of starting up.
In fact, now the industry has become more of a brownfield industry than it was a few years ago and needs more people who can refactor legacy code, or at least cope with the mess.
I suspect that the mess would have been less if whiteboard interviews had not become so important because more startups would have hired brownfield developers who could have warned of how quickly technical debt can overwhelm you.
Common to see a startup go from startup to legacy big ball of mud in only two years.