
Technical Interviews Make Me Cry - ctoth
http://blog.pamelafox.org/2013/09/technical-interviews-make-me-cry.html
======
tptacek
Oh, wow, 1000x this article. Forget about the crying thing, which makes it
vivid and more interesting to read but might obscure the fundamental point,
which is that _interviews make people incredibly uncomfortable_. Some of the
calmest, most unflappable people I work with _shook visibly_ in their
interviews with us.

What's important about that is: you are not getting an accurate read of a
candidate's state of mind in a high-stakes interview. I think you have just a
couple of options to improve your accuracy given that fact:

* You can take deliberate steps to lower the stakes in your interview process by changing the kinds of transactions that happen in the interview (for instance, by constructing interviews that involve collaborating on a problem instead of challenging the candidate).

* You can "discount" the signals you get from the interview, particular w/r/t already nebulous concepts like "confidence", "social skill", "enthusiasm", and the dreaded "culture fit".

* You can push more of the recruiting process into situations where the candidate controls their environment (for instance, by doing stuff at home, and on a fixed but flexible time scale) and less on in-person timeboxed interviews.

I'd love more ideas. We're trying all three, but it's a lather-rinse-repeat
kind of situation. I'm getting good, I think, at spotting signals that are
probably the result of jitters. And I think I've learned pretty conclusively
that those jitters have zero correlation to on-the-job performance. But I have
so much more to learn.

~~~
kenjackson
Aren't the high stakes the fact it is for a job?

The problem with interviews is that you have to make a decision and the
candidate may not be themselves regardless of what you do. They may freeze up
in a collab. Or collapse on a take home or be overly stiff doing a 2 month
contract knowing the job is on the line.

I personally think technical questions are useful. Not hard ones, but
softballs. It is never used to say someone is a hire, but is a requirement.

~~~
tptacek
Who cares why the stakes are as high as they are? They're confounding the
results of the interview process, which means they're the employer's problem,
whether we like it or not, think it's fair or not, or whatever. The fact is
that "we", as an industry, have a counterproductive habit of screening
candidates for "ability to gracefully metabolize semihostile job interview
experiences", which turns out to be not all that valuable an employee
attribute down the road.

~~~
kenjackson
That's not an industry problem, it is a society problem where people need jobs
to eat. Until you fix that problem, everything else is just dancing around the
problem.

I interviewed a guy at a movie theatre 20+ years ago when I asked if he liked
movies. He started sweating... And eventually said he had to cover medical
expenses for his son and he was running out of time. He needed to work and
would do what it took.

Until you fix the stakes, all you're doing is changing to another interview
form that someone else will freeze up on.

------
freework
Imagine someone walking up to Maya Angelou, handing her a white eraser marker,
and asking her to write you a poem on a white board. She's obviously not going
to immediately write you a poem, at least not one thats any good. Is it fair
to judge her poem writing abilities by this off the cuff creation?Creators can
only do their best creation when they are in their comfortable space. Asking a
programmer to write code over the phone will result in substandard quality no
matter what.

~~~
philwelch
Sorry, if I ask you to write a function that determines whether two given
words are anagrams of each other, "I need to get into my comfortable space for
my creative process to work" is an evasion. No one's asking for a masterpiece,
just a demonstration of basic competence.

~~~
rilindo
Here is a first go at it:

[https://gist.github.com/rilindo/6575580](https://gist.github.com/rilindo/6575580)

Essentially, I just checked to see if the characters in the first string
exists in other string and exits out of the code. It probably won't cover
every use case (in other words, probably very buggy), but it is a start.

However, I have the luxury of relaxing while looking up the functions online,
writing the code by my lonesome and then verifying it by running it directly.
Last I checked, not any of these things are likely not present or available in
a white board interview.

EDIT: I should at least put it in a function. :D

~~~
typicalrunt
There's a much easier way to solve this problem than what you've done. And
this is sorta/kinda the point of the article, where you will do well at a
technical interview if you know some tricks in programming, whether it be
through academic study or just on-the-job stuff.

To find if two words are anagrams of each other, do this:

sort(word1) == sort(word2)

done.

The trick is knowing that an anagram has a signature, and that signature can
be found if you sort a word's characters alphabetically. Then you do the same
to the other word and compare both of their signatures together. Voilá.

    
    
        "genuine class" == "alec guinness"
        because
        "aceegilnnssu" == "aceegilnnssu"
    

In Ruby you'd write your own alphabetic sorting function first, then apply it
to each word.

    
    
        def sortAZ (word)
          word.downcase.unpack("c*").sort.pack("c*")
        end
    
        def is_anagram (word1, word2)
          sortAZ(word1) == sortAZ(word2)
        end
    
        puts "is_anagram(ARGV[1], ARGV[2])"
    

I recall seeing this trick in a Ruby book (probably PickAxe or something) and
thought it was cool because I had never thought about finding an anagram in
this way. Regardless, it stuck with me so, if this was asked in an interview,
I'd be able to answer the question easily and look like a rockstar...when
really it's just knowledge that stuck with me.

 _By the way, the alphabetic sorting here is done by unpacking each character
into its number representation and then sorting the resulting numbers._

~~~
mmorett
An even easier way is to check StackOverflow.

[http://stackoverflow.com/questions/9321654/java-anagram-
find...](http://stackoverflow.com/questions/9321654/java-anagram-finder-
algorithm)

One of the comments mentions: "Just had a phone interview with Amazon and this
was the exact question they asked. Interesting problem if you have more than
10 minutes to solve it. – Javamann Jun 14 '12 at 20:46"

So....do you store this knowledge in your back pocket in case you need to
check anagrams at work (which will be never), or do you toss it aside knowing
you can hit StackOverflow if/when you need it?

It seems like the only time this stuff is "used" is on technical interviews.

I readily concede you can't substitute StackOverflow for general competence,
but an algo for checking for anagrams doesn't seem like general competence.

~~~
philwelch
The whole point of the question is that you don't already know the solution.
If you already knew the solution the question would be less useful.

------
philwelch
It's normal for people to be upset when they're stressed and frustrated and
it's good for interviewers to be kind and help them through it. Freezing up
shouldn't be a disqualifier by itself, it's just a barrier to finding out
whether the candidate has the skills and knowledge you're looking for and one
that the interviewer has a vested interest in helping to overcome.

On the other hand, stress and frustration are part of the experience of being
a software developer. Lots of developers, myself included, would be better off
learning to handle them productively.

------
DigitalSea
As a self-taught developer these stories scare me. I don't know the ins and
outs of programming fundamentals, but I know how to program and I am really
efficient in what I do as well. I've got big ideas, I have drive and vision
and I think technical interviews can have the reverse effect of attracting
real people.

For what I lack in low-level understanding, I more than make up for it on a
higher level. Ask me to build something as a whole, don't ask me to solve
mathematics questions and other unrealistic junk questions.

The biggest takeaway from this post is definitely this:

 _In my experience, when we are programming on the job, we 're given the
problem and we have time to think about it. We have time to research possible
solutions, we have time to try stuff out that we know will most likely fail,
and we can wait until we have something decent before we show it to our
colleagues_

^THIS. One hundred times over. How is putting someone on the spot to build
something and build it perfect a good test of their capabilities and skills?
That's not even how it works in the real world.

~~~
quanticle
>For what I lack in low-level understanding, I more than make up for it on a
higher level. Ask me to build something as a whole, don't ask me to solve
mathematics questions and other unrealistic junk questions.

Without the math, how do you know that your solutions are any good? How do you
know that the algorithm you sketched out on the whiteboard will work on the
1,000,000 records that we have in production in addition to the 5 record toy
example that you worked out?

I mean, sure, I agree that brainteasers are in appropriate. Knowing why
manhole covers are round or how M&Ms get their candy shell tells me nothing
about your programming ability. But basic math and algorithms? They're a lot
more important than you think. Knowing Big-O notation, various kinds of basic
algorithms and a good assortment of data structures lets me know that you can
evaluate a solution and find potential flaws and bugs.

 _How is putting someone on the spot to build something and build it perfect a
good test of their capabilities and skills?_

There's a difference between perfect and working. I've never had an
interviewer ask me for perfect code. Not at Amazon. Not at Google. Not at
Facebook. I have, however, been asked for working code. The code doesn't need
to be 100% bug free, but it should be syntactically correct and should solve
the problem in a reasonable fashion (e.g. without using inordinate time or
space).

Frankly, I like technical interviews a lot more than the alternative, which
increasingly boils down to, "Make me a webapp and we'll evaluate your code."
I'm sorry, but if I wanted to make a webapp for you on my own time, I also
want to get paid for it. Even now, when I'm single and living alone, I have a
hard time motivating myself to do homework problems. I can't imagine having to
do something like that when I'm married and have children.

~~~
jebblue
>> Without the math, how do you know that your solutions are any good?

He probably does it the same way you do, idea, code, build, test, analyze.

~~~
DigitalSea
Yep, that's exactly how I do it. I've seen people use whiteboards and pens and
paper to solve problems, but nothing solves a problem like tactfully tackling
it head on and persisting until you solve it. Having said that, some people
work better writing down their problems on a whiteboard and others physically
solving them.

In my day-to-day I try and avoid writing as much code as possible. If someone
else has solved the problem, I'll read through their code and understand it,
then implement. Developers at the end of the day are hackers. I think as long
as you know how and what to Google, then you're more than capable. The
difference between a good developer and a bad developer isn't knowing all the
answers it's knowing where to find the answers when you need them whether that
be documentation, a Google search or even a physical book.

Because lets be honest here. In the day-to-day life of a developer what
percentage of developers actually solve their problems manually using their
brains as opposed to finding the solution on Stackoverflow, forum or blog
post? I'd be willing to bet a large percentage do. When I get stuck on
something I hit Google, in an interview if they were to take into account your
problem solving skills in the form of a Google search, then that would be more
than fine. But I am willing to bet most interviews don't allow you to search
for answers.

~~~
dagw
_nothing solves a problem like tactfully tackling it head on and persisting
until you solve it_

The problem with this approach is it very often leads to you getting stuck on
a local optima. For many problems that is good enough, but there's a good
chance you might miss an entirely different approach that will lead to more
optimal solution.

------
joebeetee
Saw Pamela speak at an HTML5 Meetup at Yelp a couple of months ago. She was
smart, funny, engaging and genuine - exactly like she sounds in this article.
Love her honesty and how she wears her heart on her sleeve.

~~~
pamelafox
Ha - glad you liked that talk!

Curiously enough, this interview happened 6 hours before that talk. And it
made me wonder, "why am I giving a talk tonight?? how am I qualified?"
Thankfully, I recovered my confidence by the time that talk came around, and
you guys were such a cool audience. :-)

------
akanet
I really feel for the author. I had a similar problem, except on the other
side of the table - evaluating whether candidates' solutions while
interviewing them over the phone was excruciating.

I built [https://coderpad.io](https://coderpad.io) to make the whole
programmer-interview phone screen process easier. It's like Stypi on steroids,
because it comes with a live REPL. You can play around with, say, JS, right
there in the window. I've found it much more accurately simulates coding
alone: the experimentation, quick validation, and verifiability that editors
alone don't have is sooooo important.

~~~
n1ghtmare_
What a cool app ! I'll use it next time ! Bookmarked ! Is this by any chance
open sourced ? I'd like to contribute if you need a hand.

------
sgustard
Unfortunately, there are way too many unqualified people out there applying
for jobs and ruining it for the rest of us. As a hiring for manager for years,
I've seen a huge number of people try to fake their way through interviews.
They can talk vaguely and grandiosely about all the technical problems they
solved at their past jobs or in school. But the breakdown always happens when
you ask them to solve a problem for you.

Sure, they may be undiscovered geniuses who are too nervous to think straight.
But where there's smoke, there's fire, and in this case behind the smoke are
ten other people lined up to interview for the same job. All things being
equal in terms of general personability and hygiene, the one who displays
technical competence gets the job. Just imagine if the odds weren't so skewed
in favor of job hunters. When the economy slows, when your jobs are really
subject to outsourcing to a lowest bidder overseas for a fraction of the
price, these sympathy hires will be a thing of the past.

------
benjamincburns

      A few months ago, I decided that I really wanted to
      join Khan Academy. I would longingly browse their
      jobs page in my idle hours, read their intern blog
      posts from top-to-bottom, and fork their repos on
      Friday nights. It became a bit of an obsession.
      (Shh, don't tell them how creepy I am.)
    

I realize that she's joking here with the creepy bit, but I have to ask. Does
anyone honestly think this kind of behavior is creepy?

To answer my own question, as someone who interviews people quite often, I'd
love to hear that a candidate did this sort of thing. Honestly, if you're
worried that you're going to be weak in your interview for a company which you
really want to work for, do _this_.

Oh, and also - if interviews make you nervous, please tell your interviewer.
For some people it's really obvious that they're nervous, but others do an
amazing job hiding it. If there's any chance at all that you think your
interviewers aren't aware of your nerves, just tell them.

First off, we're used to it. I'd guess somewhere between 60 to 80% of my
interviewees are visibly nervous. Further, quite often the people interviewing
you experience the same sort of nervousness when they're on your side of the
table. If they're good at what they're doing, they'll totally empathize, and
clearing the air helps a lot.

Unless you're interviewing for a sales type position where it's essentially
your job to be interviewed, nobody in their right mind should view nervousness
as a sign of weakness. Personally, about 9 out of 10 times this happens I err
on the side of "this person really wants this job" rather than "wow, this
person must be nervous because they don't know their shit."

~~~
vonmoltke
> To answer my own question, as someone who interviews people quite often, I'd
> love to hear that a candidate did this sort of thing. Honestly, if you're
> worried that you're going to be weak in your interview for a company which
> you really want to work for, do _this_.

Guilty as charged. There are a handful of companies that have provoked this
type of reaction from me. I have yet to actually get an interview from any of
them, though.

I'm actually surprised how much Pamela sounds like me when it comes to
interviewing. Almost exactly like me. I just have crippling anxiety on top of
that which I only recently got taken care of.

------
hogu
One approach I've tried recently is getting a digital ocean box and giving the
prospective candidate access to the box 24 hrs prior, just so they can install
whatever tools they like if they so choose, and then giving the candidate a
simple problem to build on the box for 30 minutes.

Then we mute the phones for 30 minutes, so that people can work in peace, but
we're around if they want to ask us any questions.

And at the end of the 30 minutes we discuss how far they got, and what they
would do differently, etc..

We've only done this twice, but I think it was fairly useful both times.
Haven't done it enough to know whether or not this is a good approach.

------
joshmn
I had the same thing happen to me while interviewing for the position I hold
currently.

I had gotten through 6 interviews without a hitch. They were all culture
related, personality-based, "how will you fit with our team" type. Young,
scrappy kind of team, who didn't believe in big corporation-type interviews.

Well, the interview in question came. I'm a rockstar when it comes to
interviews. I'm personable, confident, funny, and I carry myself really well
in conversation. But what was different?

The guy I interviewed with previously held a position with Microsoft.

And he did things the Microsoft way.

I'm nothing but a loose guy. I don't have the college education to back me. I
hadn't worked on any famed projects. I didn't commit to open-source projects,
have a network to vouch for me. I had a few side projects, but they were
nothing more than me just building things. I owned a few companies in my mid-
late teens that sold for a good amount of money, but nothing I'd write home
about. I'm a utility player that can wear many hats: front-end, back-end,
sysadmin, marketing, advertising, copywriting, legal stuff, financials, client
management, databases... I don't do any one thing particularly well (except
for maybe back-end) but I do all of them pretty damn good.

And when I heard this guy was from MSFT I thought "well this is going to
suck." Why? Because I thought that he may not care that I'm as scrappy as I
am.

The position I was applying for wasn't anything specific. It was just that
utility player. I wasn't expected to write gobs of code, I wasn't expected to
manage systems. I was just expected to do what was asked of me, and take
ownership of it.

So the interview began. He asked me some really, really low-level questions.
Questions that you'd be asked on an exam if you're a CSCI major at MIT. I had
no idea how to answer them, so I tried to explain them high-level and ignore
the fact he wanted low-level answers.

That got me nowhere except him thinking down on me.

When it came down to me writing code, I just blanked. He wanted me to write a
class for a shopping cart and he wanted to see how I'd apply a coupon code,
how I'd manage the items in the cart, how I'd sort and group them together,
etc. It lasted all of five minutes when I just disconnected from the internet,
took the battery out of my phone, and sat there.

I suffer from crippling anxiety, and this was no exception. I've learned how
to manage it better since, though.

About twenty minutes after my meltdown I emailed the CEO of the company. I was
in tears, because I wanted the job so badly, and I explained that to him. I
said that the guy was an asshole, really belittling, and didn't reflect the
values of those who I had spoke with prior.

I still got the job, and I'm still with them today. It's the butt of a lot of
the jokes we have with our team of five. "Josh, is this someone you'd consider
hanging up on?" or "Well it's okay, because Josh once hung up on someone that
was interviewing him. Thus, this isn't that bad in comparison!"

Damn right I take it like a champ.

~~~
suyash
"About twenty minutes after my meltdown I emailed the CEO of the company. I
was in tears, because I wanted the job so badly, and I explained that to him.
I said that the guy was an asshole, really belittling, and didn't reflect the
values of those who I had spoke with prior" \- To me it's perfectly clear who
was the real asshole there. Bitching about technical problems to the CEO,
haha..what a loser. You didn't have the caliber to handle, you should have not
blamed anyone else but yourself.

~~~
zerr
The fact is that he is still with that company, so he obviously was a good
fit. So it is the interviewer who didn't have a caliber to do his job -
determine if the person was a good fit.

------
n1ghtmare_
I recently had an interview with Google London, Oh boy did a screw it up, it's
like I'm reading my experience, my mind simply went blank ! The interviewer
was like the nicest person I've been interviewed by (he's pretty famous and I
recognized his voice btw). The task was hilariously easy (I've done the same
thing like 2 days ago), but when I was asked to work on it on the phone I
bombed ! Basically I was thinking of everything else BUT the problem at hand.
The guy kept being nice telling me that this happens all the time (you know
people freezing). At the end I wasn't lucky enough to proceed to the next
level and frankly I felt that I deserved to fail and I should not be a
programmer and what not. Very depressing - I took at as a BIG personal failure
and missing an opportunity of a lifetime. I think the thing that makes it
worst is the fact that I honestly knew this, after the interview was over I
looked at the problem and couldn't believe that I wasn't able to do it.
Complete mental block. I think I've recovered since, and I'm trying to
improve. Just want to say (because I've heard complaints from other people) -
Google were very nice, and worked very quick with me, I've submitted my CV and
got a call the same day (maybe just lucky), then I basically chose the date of
my interview and they were spot on. Also they gave me good feedback.

------
adsr
"If you ever suffer from Impostor syndrome, you should probably prepare even
more, because the standard interview situation will make you feel like an
Imposter in the worst way."

It may also help to think of that Dunning-Kruger study [1], according to that
it would be normal for the competent to be full of doubt while the less
experienced would be full of confidence.

[http://en.wikipedia.org/wiki/Dunning–Kruger_effect](http://en.wikipedia.org/wiki/Dunning–Kruger_effect)

------
hkarthik
To share my experience, the kinds of "make you cry" interviews which test a
lot of CS knowledge seem relegated to the Bay Area companies which I
interviewed with. All my interviews with companies in Texas (where I live)
would interview more to ask about your experiences with a technology,
challenges you'd faced when working with a similar stack, and maybe ask how
you solved some tricky performance problem. They tended to focus more on the
real world experiences than the academic knowledge. Once in a while someone
would throw a framework- specific curveball your way to make sure you knew
what your resume said you knew.

This isn't a knock on the companies in the Bay Area, because clearly what they
are doing works for them, but it's just a drastically different style that
feels foreign to me.

When those of you in the Bay Area interview every few years for new jobs, do
you just brush off all your CS textbooks, study/review for a month, and then
start the process?

~~~
mmorett
I happened to have a conversation with someone about this recently.

Software developer: the career where you study to get the job, toss much of
that away when you actually do the job, then study for the interview for the
next job, where you toss much of that away when you actually do the job...

It's a rhetorical question, but I can't understand studying for a job. You
either do it on the job or you don't. Studying, however, puts a ton of stuff
in short term memory where it gives the appearance of brilliance.

~~~
hkarthik
See that's where I want to dig deeper with those that really believe in this
style of interviewing. Clearly it must have some value other than the weed-out
factor.

Are there engineers who actually keep the algorithms/data structure stuff in
their head and find small ways to apply it while they work on a standard web
or mobile app? That's the only way I could see the knowledge having any value,
but I've never worked this way nor have I observed anyone who works this way.

------
prezjordan
Pretty funny to see this, because you've interviewed me before (not super
technical, though!). Even more so, I think I got the _same_ question when I
interviewed for KA ;) Small world.

Great post, it's really refreshing to see someone with your hacking chops
experiencing the same anxieties as a little college student like me.

~~~
pamelafox
I seem to remember that while I was interviewing you (for Coursera), I was
browsing your Github repos and checking out your cool libraries. I didn't feel
a need to test your technical chops when I could see them in front of me. I'd
rather get to know other sides when I can. :-)

------
viraptor
I'd also recommend - if you're an interviewee normally, try to join an
interview at your current job (if possible). I was quite anxious about being
interviewed some time ago. Being on the other side of the table once changed
everything however. The amount of preparation, ideas, planning, time needed to
interview someone is just crazy if you want to do it properly. And you're
still left with: what if I didn't ask the right questions, what impression I
left on them, are they going to be a good fit or was their behaviour just an
act for today, etc.

Now I know that the people of the other side are either just as anxious to do
everything right as I am, or they just don't care much. One way or another,
I'm just not able to get nervous about an interview anymore. The best ones
turn into pleasant chats about tech anyway.

------
holyjaw
Rather relevantly, this article [1] was posted a few days ago.

“In improvisational acting there is this great rule that I’ve used in my life:
‘Act As If’. Act as if this is completely normal. Of course I’m supposed to be
interviewing Barack Obama. Of course I’m supposed to be playing guitar with
Bruce Springsteen and of course there’s a big part of me inside that’s saying:
‘What are you talking about?’”

It's been in the front of my head since I read it and, while I can't say I've
passed any major coding interviews, it's certainly helped quell the screaming
voice inside me that is the source of my constant anxiety.

[1]: [https://medium.com/design-
startups/3600f4672b3e](https://medium.com/design-startups/3600f4672b3e)

------
Apocryphon
You know, there's a lot of these interview articles. Where whiteboarding
doesn't work. Or whiteboarding works but filters out a vast majority of
applicants. Give homework problems instead. No, applicants can easily cheat or
resort to copy pasting code when given time away from the interviewer. The
future is GitHub repos to see candidates' prior work. No, open-source code is
not verifiable and easily falsifiable.

What about determining if an applicant has solid fundamentals, not
overthinking it, and having him or her learn on the job? Whatever happened to
providing training? Is there really no room for apprentices or novices in
modern tech companies?

------
hschool
This post hit a nerve! This is exactly what got me working on
[http://www.phoneinterviewme.com/](http://www.phoneinterviewme.com/) to help
fellow developers prepare better for their phone interviews.

Here is how it works. You get a call at a time you pick on your phone line.
You are asked some automated questions related to the interview you expect.
Once you are done, you can go back and listen to your session to see how you
did. I was hoping this would help developers practice and get over the fear
during an actual interview. Would this help you be better prepared?

------
anmalhot
I recently had a couple of skype interviews with a well-known startup. First
one went fine and I got good feedback but during the second one I was asked to
share my screen & work on an IDE of my choice. That being something new, I
didn't feel comfortable coding and though I did answer, the interviewer felt I
was a bit (iffy) - I had written a conditional check & then changed it later.
Interviews can get pretty hectic and it is way easier to say no to someone you
don't even look at.

------
cpprototypes
For me, what helps a lot with tech interview stress is to already have a job.
It turns the tables so that I don't really need them, they need me. The change
in attitude is powerful and gives confidence.

------
zerr
Hm, I've never heard that Google was giving take-home assignments, and even
with the job relevant tasks.

~~~
pamelafox
That may have only been for Developer Relations and only years ago. Not sure
if they're doing them anymore.

