

A Thought for Technical Interviews - aerovistae

So I very recently had an interview for a mid-level engineering position with a fairly well-known start-up, and it went poorly.<p>I would like to share a thought from it.<p>The interview in its entirety consisted of two individuals presenting me with an intermediate-difficulty problem and having me work through it. The problem was by no means beyond me-- given an hour to sit down and work on it, I could easily solve it.<p>And an hour is what I got.<p>HOWEVER:<p>It&#x27;s not so much that I needed about an hour as that I needed individual periods of 10 minutes or so to sit silently and think about how I would approach certain algorithmic aspects of the problem as they came up.<p>Instead, what I had was a laptop in front of me and an individual sitting at my left shoulder and another at my right shoulder, and anytime 30 seconds or so would pass, one of them would prompt me with a remark along the lines of &quot;So what are you thinking?&quot; or &quot;So how are you approaching this?&quot; or &quot;So why don&#x27;t you start with...&quot;<p>This ruined any chance I had of completing this problem. I never had enough time to gather a cohesive approach to the problem because the interviewers constantly obligated me into diverting my attention to what they were saying or suggesting or asking.<p>Imagine if, as we were working at our jobs, every time we hit on a challenging aspect, someone sat next to you and asked you what you were thinking every 30 seconds. How well do you think you would perform?<p>Interviews executed in such a manner are in no way indicative of a candidate&#x27;s skill.<p>Please, give an engineer some time to decide how he should approach a problem. Some of us think very fast and design optimal solutions on the fly. Most of us don&#x27;t and have to do some trial-and-error to come up with great software. Stop mistaking the latter category for incompetence.
======
srean
Been there done that. It so happens that I cannot think unless I have the
space to pace around a bit in silence. Talking while thinking disrupts the
thinking process, or more accurately, it constraints the thinking to shallow
levels. The first time I got cornered into an interview I was too shy to bring
these two points up during the interview. I have not interviewed very often
but the last time I interviewed with 3~4 companies I was upfront about it. I
just pushed the laptop away and said look this might appear weird but I will
pace around this room pretending you are not there and give you checkpoints of
my thoughts at places where I think interruptions are less disruptive. The
reaction was always a mildly surprised, "Oh OK!" Sometimes the interviewer
would still like to peek into my thoughts when I am not prepared for such
interruptions but I would very politely shush them up with a hand gesture and
give them the latest thought dump shortly afterwards. Worked out for me.
Another difficulty I have is because of my diminished hearing I instinctively
lip read, or rather augment auditory information with visual cues. The
problem: doesnt work for phone screens. One company was gracious enough to
offer to fly me in for the screen as well. I declined, saying I am fine as
long as the interviewer is cognizant of the problem and tolerant towards
repeating the problem description if needed.

------
panorama
This isn't what you want to hear, but there are perfectly valid reasons for
them to do that.

1\. Getting the answer right is only half the problem here. They are prodding
you for your thought process—take that as a sign that that's what they're
actually looking for, even if you're wrong. They also want to hear it just in
case they need to steer you in the right direction.

Regardless of pairing policies, companies might ask you to collaborate on a
problem with someone else. It is typically more productive if both developers
are engaged in conversation about it and then working as opposed to doing
their own work separately.

2\. It's incredibly awkward and tense as an interviewer to sit there for 10
minutes. Also, how do I know it'll only be ten minutes?

If I wanted to know if you could solve a problem in your ideal setting, then I
would email you a problem to solve on your own time. During an interview,
however, I want to have a conversation. I only have one hour with you and your
ten minutes of silence is a wasted opportunity.

~~~
nailer
It's quite possible to check the right thought process afterwards, without
asking the candidate to elucidate constantly. They might now want to be
steered in the right direction, but get the depth they need to explore all
directions.

The interviewer might find it awkward to wait, but that's not the candidates
problem.

------
brudgers
_Imagine if, as we were working at our jobs, every time we hit on a
challenging aspect, someone sat next to you and asked you what you were
thinking every 30 seconds. How well do you think you would perform?_

Now suppose there were a dozen other candidates all trying to grab control of
the keyboard and the interviewers were constantly hollering about which key
you should type next interspersed with hollering about which key you should
have typed last.

That's your typical youth soccer match when the coaches are amateurs. And
that's what you were dealing with, amateurs. That's how you wind up pair
programming with three people at a laptop where only one of them types.

Next time answer the question honestly, "I am thinking that you should shut
your pie holes and let me think." Well maybe not quite so honestly.

Good luck.

------
fsniper
Ok, It's a great point to raise. But, why did not you asked for 10 minutes for
inner thinking, added with a line that you will start talking after you put
things together?

I believe no sane engineers would deny that request.

~~~
mrcold
Read this type of threads or reddit's /r/programming. The number of
interviewers claiming _" it's a simple 5 minutes problem"_ is disheartening.
People get bored easily. Especially when they already know the solution.

------
andrea_sdl
You are absolutely right.

On a sidenote this post made me remember a small part of "The Art of Learning"
(Josh Waitzkin), where he shares that on chess the opponents would always try
to make him feel anxious.

To fight this he always took his time, maybe after the move from the opponent
he would just go to the bathroom and take the time he needed to get back on
track.

I don't how if this could be applied to your situation too, but I think it
might be worth a try. If the situation is anxious too you, just ask for your
space and time (maybe even ask if they can give you some solitude).

Silence is gold ;)

------
azoapes
The day before yesterday, I held an interview much like this one. I presented
a candidate with a problem of easy-to-intermediate difficulty (Fibonacci) and
asked him to explain his thought process while coding. I did interrupt his
thought process two times to ask what he was thinking, both times when it felt
obvious that he was stuck (extended staring followed by a couple of heavy
sighs). But my principle was to only provide him with advise when he asked for
it. I told him beforehand that his performance was not evaluated or affected
by getting stuck or asking for guidance, but that we would not leave the room
until we had come up with at least one solution together. I stayed in the room
but was drinking coffee and reading e-mails. I told him that the excercise is
expected to take up to an hour, and that he didn't need to hurry. When I
tested this problem on two of my colleagues it never took more than 15-20
minutes.

This excercise in particular took a little more than an hour, because even
though I explained a few solutions in various ways he had a hard time actually
completing any code. I wrote a whiteboard solution and explained it using
arrows and walk-through examples, but he couldn't translate the solution into
actual code (using a language of his choice). In order not to break the hour
limit we ended up with me writing and explaining code one line at a time for
him. I reassured him that it's okay that he can't come up with the code right
now, we're not evaluating the result etc.

I turned this candidate down. I feel that while my methodology (close to OP's)
has flaws, it does help me with filtering out the worst candidates. I simply
can't hire someone that doesn't manage to, with an unlimited amount of help
and a generous timeframe, code a Fibonacci sequence in his/her favourite
language.

~~~
mrcold
Quick question. How often do you solve Fibonacci in your production code? It
doesn't seem like a problem a software business would encounter very often.
And if it's not encountered on the job, I don't really see why it's asked
during a job interview.

By the way, I failed my very first interview just like the guy you talked
about. Complete brain freeze. Luckily, I got an internship and here I am with
7 years of software development under my belt. You probably might not care.
But it really makes me wonder about all that wasted potential. Not everybody
is as lucky as me.

~~~
quadrature
With all due respect, its fibonacci. Even if you aren't thinking recursively
it is simply adding the last two numbers you've seen and it demonstrates that
you can use iteration and variables at the very least.

------
anoxic
I completely agree. I interviewed with a company, and did some whiteboard
coding. Most of it was simple, but whenever I would stop for a moment to think
about what I was doing, they would prompt me to find out "what are you
thinking"?

Even when I'm working very closely with colleagues, we often spend long
moments of silence thinking and working through issues. It's a part of the
process.

------
Cymen
I had the same experience recently. Not my cup of tea. It's almost like they
want to see how poorly you do when heckled by annoying coworkers. I directly
judge company culture based on the methods and attitudes of those who
interview me. The worst part was it they used some sort of web-based editor
that was a very poor editor (glitchy/laggy compared to vim).

------
arnold_palmur
Man oh man, I'm convinced that people that administer this type of interview
atmosphere are partially taking enjoyment in a sort-of hazing ritual - it's
like they had to go through it, so now you have to as well.

------
JSeymourATL
> Interviews executed in such a manner are in no way indicative of a
> candidate's skill.

However, it is indicative of unskilled rookie interviewers. As a candidate you
have a lot power in directing the interview process and also evaluate whether
these are the type of people you want to work with.

They've got an obvious hiring problem. And it's very likely they took a pass
on a lot of strong talent. Suggest circling back with the Senior Exec, share
your feedback in a neutral, professional fashion. Ask for a Do-Over and a
chance to meet again. The worst they can say is no.

------
nailer
I've had a couple of interviews a few years back where they simply left the
room and let me solve the problem, then came back to discuss the solution.
Both went quite well.

