Benjamin Hysell – Software, Projects, and People Rotating Header Image

interviewing

The Zappos Way

I’ve done it.

I’ve bought shoes online.

And I liked it.

First, let me be clear, I own roughly five pairs of shoes; I am not a shoe aficionado.  I have my sneakers, running shoes, brown shoes, black shoes, and my motorcycle boots…hardly a collection to make Imelda Marcos jealous.

However what I was missing was a pair of Nike Aqua Socks, (http://www.zappos.com/product/7525588/color/191561).  I haven’t been able to find them since I was ten, and I used to love them.  Sure, they never last a whole summer as the tops wear through, the soles have zero cushion, and provide almost zero traction, but I don’t care!  My memories of using them in my youth compelled me to find a new pair that would fit my now grown adult foot.

For the past few years I have searched high and low for the Aqua Socks to no avail.  That was until I was driven to try Zappos.com after reading an article about them in Inc.

http://www.inc.com/magazine/20090501/the-zappos-way-of-managing_Printer_Friendly.html

Sure enough, they had my beloved Aqua Socks and they were delivered promptly with a promise that if they didn’t fit I could return them with free shipping both ways.  I was delighted; I finally owned my long lost Aqua Socks in a size I could now use!  They arrived just in time for my recent trip to the Poconos for some whitewater rafting.

My foot needs aside, Zappos seems to be generating a lot of interesting press and buzz on the interwebs as of late.  What sets them apart from all of the other Web 2.0 companies out there?  As I, and others, have said in the past, all they do is sell shoes.

Primarily the focus of the Inc. article and other postings is the amazing customer service, the freedom phone reps have to meet your needs, and the free return shipping if something doesn’t fit.  In my mind all of the customer service policies and practices that everyone is praising Zappos for are all necessary evils of selling shoes online.  Zappos is attempting to fulfill a shoe need, a need filled by delaying actually acquiring of said shoes by a day or two since they need to be shipped.  With this delayed gratification Zappos needs to step it up in terms of customer service over traditional brick and mortar stores to survive.

Let’s face it, if Dick’s Sporting Goods carried Aqua Socks I wouldn’t have thought twice about hopping in the car and driving the ten minutes to the mall to have them that day.  I like the mailman and all, but I’d rather not be waiting by the door for him to arrive with a box full of shoes.  Call me impatient, but when prices are about the same online vs picking up in the store I choose the store nine times out of ten.

What caught my eye in the Inc. article wasn’t, in my mind, the baseline customer service I believe a company like Zappos needs to thrive, but rather how they go about interviewing new hires,

Prospective hires must pass an hour long “culture interview” before being handed off to whatever department they are applying to. Questions include, “On a scale of 1 — 10, how weird are you?” and “What was your last position called? Was that an appropriate title?” (The first question makes sure that employees are sufficiently weird; the second, in which the interviewer is trying to goad the applicant into grumbling about his or her title, tests for humility.)

Spending an hour or so interviewing for ‘culture fit’ is a very interesting angle to explore in job interviewing.

I’ve gone on at length about my interview process, (http://benjaminhysell.com/archive/2009/02/the-technical-interview/), however unlike Zappos, I’ve never placed so much emphasis directly on culture fit.  I tend to focus on passion…does the interviewee have passion for our craft and life in general?  Normally, while exploring someone’s passion we get a pretty good sense of who they are, what they are going to be like on a day-to-day basis, and we as an interview team can see if the prospective new hire is going to click with the team.

Lately I’ve been wondering if I should retool my interview to further explore ‘culture fit’ not only from a passion perspective, but by some other measure needed in our industry.  What that measure is I’m not so sure.

I can think back through college and high school where group work was key to many projects’ success.  Have you ever found yourself in a group of people where personalities just didn’t mesh?  I have worked in a few bad groups from time to time, and compared to groups where I worked with friends the experience of working in a group where we didn’t have a great ‘cultural fit’ was not as much fun.

I took a class at SUNY Binghamton in artificial intelligence my senior year of high school with a group of college seniors.  It was spring semester for both the college seniors and me, so we all had senioritis.  However, while they were heading off to real world jobs at the end of the semester, I was heading off to Cornell to start my college career in the fall.  Let’s just say being 18 years old and hanging out doing a group project with college seniors was an amazing way to spend the spring semester.  I had a lot of fun, but that was only after we cleansed the group of “Rick”.

The class was split into groups of four, and our group happened to be a group of five.  We were to implement a 100 node feed forward neural network as our final project, a task we were well prepared to code and implement.  What we were not prepared for was Rick.

Rick terrorized the group.  I’m not sure which was worse, Rick taking tasks and never completing them, or failing to show up to 95% of our group meetings.  The four of us who were not named Rick had to spend a lot of calories doing Rick’s work, trying to track Rick down, and in general dealing with ‘The Rick Issue.’

It’s physically and emotionally draining always picking up dropped tasks and trying to chase someone down who doesn’t want to be found.  Not like Rick couldn’t do the work, he was more than capable, however we didn’t share his work ethic nor he ours.

Now picture yourself today in your job and take a Rick, if you don’t have one already, and inject him into your normal daily working life.  My Rick was gone two weeks after the project started, as he was removed by the professor from our group, however a real world Rick maybe impossible to remove from your daily life.  Are you looking forward to Monday knowing Rick is going to be there now?  I wouldn’t be.

Life with a Rick is miserable, and from the article it appears Zappos makes a huge effort to ensure Rick never gets through the interview process:

If there is a disagreement between HR and the manager doing the hiring, Hsieh personally interviews the candidate and makes the final call.  His strategy is to get the applicant into a social situation to see if they can connect emotionally.  Alcohol often figures in the hiring process.  “I had three vodka shots with Tony during my interview,” says Rebecca Ratner, Zappos’s head of human resources.  “And I’m not atypical.”  I asked Hsieh if this wasn’t exposing the company to unnecessary risks.  “It’s a risk,” he says.  “But if we’re building a culture where everyone is friends with everyone else, it’s worth the risk.”

For my college project we never had a chance to conduct an interview.  Could we have figured out Rick would be a problem with a bottle of Jack and a couple of shot glasses?  Should a social situation with a few drinks and attempting to identify an ‘emotional connection’ be the tie breaker in an interview?  Can you scale this process as your company grows?  Could this be implemented at Apple or IBM?  How different would corporate America be if most job interviews started and ended in a pub?

For now I’m going to sit back and watch the Zappos story unfold.  We already know for most of the working world the non-alcoholic approach to hiring works pretty darn good.  We’ll see how Zappos fares in the long run, and what side effects hiring for culture will have as the company ages and their core culture changes.

I’m hoping for the best, I wouldn’t mind sitting down and relaxing with a nice tasty beverage the next time I conduct job interviews…a taste beverage and maybe a plate full of nachos.

The Technical Interview

I love the interview process…no, no, no, not the part where you are applying for a job, no, heavens no.  I love being on the other side of the table performing the interview and asking the questions.  Being interviewed?  Another topic for another time.

During your career, be it in software or otherwise, you will likely find yourself in a position to interview new people to join your company.  This task is not one to be taken lightly, good talent is hard to find, and making a hiring mistake can be very difficult to correct.  So what is one to do?

I found myself in this situation a few years back.  My team was growing, and we had the opportunity to hire a couple co-op students from the local university.  I had sat in on a few technical interviews before for other co-op students where I was more an observer than participant.  A couple of times during those early interviews when I was asked if I had anything to ask the applicant, I would usually respond with a, “nope.”  At that time I didn’t bring too much to the table.

This time around not only did I want to participate, but I wanted to run the interviews.

What follows is my typical interview “script”.  I call it a script because everyone involved plays a role, including the candidate.  The script metaphor works because we need to follow the same basic outline from interview to interview in order to accurately compare candidates.  My team and I have run this script around 30-40 times as of this post, and so far we have had great results in who we have hired.  Of course, your mileage may vary.

Some may ask, “if you are providing your script, and I interview for you, won’t that be like cheating?”

Yes, yes it would.  If you plan to ever interview with me in whatever company I’m working for in the future and I’m sitting on the other side of the table from you I’ll know you’ve read this post.  You’ll know that I know, and I’ll know that you know that I know.  It won’t be pretty; the tension in the air will be palatable.  We won’t even get to the first question before I jump up on the table and scream “I know!” and you’ll respond, “I’m sorry!” and the weeping will begin.

Actually have it, bring in a copy of this post, I’m not too worried.  This isn’t like having the answers to the SAT.  Nerves, fear, and plain old doubt can cloud an interview…anyone who knows what is coming may be a little more relaxed and give a clearer picture of what they would be like on a regular basis.

The Framework

I hate re-inventing the wheel.  I know others before me have interviewed people for technical positions with great success, ::see Microsoft and Apple:: so there must be lots of material on the web to say how they do it?

There is.

Most of it is outdated.

Most of it is directed at the interviewee.

Except one.

::I’m sure there are others, but if I said, ‘lots and lots of others,’ it would lose the dramatic effect.::

I have taken Joel’s, The Guerrilla Guide to Interviewing, and tweaked it here and there.  Take a minute and read version 3.0, which I linked to above before going on.

All read up?  Good.  Let’s begin.

Hiring Criteria

Simple:

  • Smart
  • Gets Things Done
  • Passionate

Joel covers ‘smart’ and ‘gets things done’ at length in his guide, I won’t repeat them here.  However, I don’t think he calls out how much of a role passion plays in hiring an engineer.  I’ll cover more on passion down below.

The Team

I am an avid believer in having multiple people in the room for interviews; not only does this save time, but everyone will hear the same exact thing.  This is key when comparing notes about the candidate afterwards.  I keep three people on my team, with three different roles.

The Lead – The Lead runs the show.  They are the ones who ask most of the questions, they take care of meeting the candidate at the door, and pacing the interview.

Number 2 – Number 2 drives smaller sections of the interview, often focusing on schooling, prior projects, and prior jobs.  As the interview gets going The Lead and Number 2 will often tag team back and forth on the different sections of the interview.  Having a Number 2 in the room is a great stress relief to The Lead as they can chime in with clarifying questions if The Lead misses something and give The Lead a chance to gather their notes and not talk the entire time.  Where The Lead runs the overall structure of the interview, the Number 2 fills in with a supporting role.

The Jerk – The Jerk plays a key role during the ‘writing code’ section of the interview.  Their job: challenge the candidate and see how they react to adversity during the interview.  The Jerk is charged with asking the pointed, hard questions during the coding phase of the interview.

Typically, I like to have everyone on the interview team be full time developers who buy into the interview process, i.e. we have all discussed the format of the interview beforehand and we all know our roles.  There is nothing worse than getting into an interview and appearing like no one knows what they are supposed to do next.

The Time of the Interview

Have The Lead meet the candidate in the foyer/reception area/whatever you have available and walk them back to the conference room.  Typically during the walk I try to make some small talk, “How’s the weather outside”, etc.  The goal is to try to get the candidate as relaxed as possible given the circumstances.  The last thing you should be doing is walking silently with a look of contempt on your face.  This person may become your new co-worker; try to make them feel welcomed to your company.

The Introduction

Introduce everyone on the team and thank the candidate for coming in today.  I like to layout the format of the interview so there aren’t any surprises.  A typical format will be:

  • Talk a little bit about yourself, your passions.
  • Dive into past work experiences, or for co-ops classes and projects
  • The whiteboard question(s)
  • Any questions for us the interviewers
  • Talk about the company

A couple of points about the format:

  • We never say how many questions there will be at the whiteboard.  Ever.  Normally we have a very easy one, and a very hard one.  There is no point going into the hard question if the candidate cannot pass the easy question.
  • Always close by talking about the company and how great it is to work there.  I don’t care if this candidate thinks the CD-ROM drive is a place to hold your coffee cup and you know you are never going to see them again-you sell your company!  This will likely be the last thing the candidate will remember as they leave your office, and I would like to leave them with the thought of, “Wow, that was a tough interview.  I hope I did well because I would love to work there.”  At least if they do not get an offer letter they can tell their friends how cool your place is to work and not create any ill will.

Talk a Little Bit About Yourself

The key, get the candidate to relax, get them talking about something they are experts on, themselves.  This is a great place to ask the softball questions, such as:

  • Where do you see yourself in five years?  It doesn’t have to be work related.
  • If you could get out of bed every morning and be living your dream job what would you be doing?
  • What do you read on a daily/weekly basis to keep up to date in our industry?

All of these questions are those horrible open-ended type questions that don’t have any real answer, but they serve a key purpose.  Get the candidate talking and try to get them to not feel as stressed about the interview.  Out of this section you will likely learn what they are passionate about, if anything, if they have any vision for the future, and what they do to hone their craft.

There is nothing worse than having someone come in and go, “I don’t know where I want to be in five years.”  Really?  No idea?  None?  Living on a beach, write a couple of books, anything at all would suffice for this question.  I’m looking for a spark of personality, what are your interests, are you passionate about anything?

Passion is one key indicator I have found when hiring engineers.  Show me someone who has zero passion for anything and I’ll show you an unproductive engineer.  Show me a guy who is passionate about his family and I’ll show you a person who writes solid, robust code so he can leave at the end of the day to spend time with his family, and not be called in on the weekend to fix sloppy code.

Asking about their dream job again attacks their passion.  Do they love writing LabVIEW VI’s that talk to hardware or are they hardcore Ruby on Rails developers at heart.  These are key things to know if you are trying to hire a SQL DBA.

Lastly, our world is changing so quickly, we need to stay on top of what is going on out there if we hope to be viable in this industry 10, 20, 30 years down the road.  Learning if your candidate has a passion for their craft, and a desire to hone and refine it, for me, is a key hiring point.  If you are going to stop learning the second you see that offer letter I’m not interested.

Work / Project Experience

I like to have Number 2 take the lead here and drive this section.  During the intro and the open ended questions section he has had plenty of time to review the resume, listen to the first few answers, and craft a few questions based on those answers about the candidate’s past roles, and in the case of co-ops, classes and project experiences.  Again, this section is fairly open ended with the goal to get the candidate to talk about a subject they know the most about, themselves.

Hopefully the first two sections will give you an insight into the candidate, their personality, what they have done in their past jobs, and their goals for the future.  This is the warm and fuzzy feeling you might have on a first date as you sit down to get to know someone.  However, once this section is over the real fun begins.

The Whiteboard

The whiteboard is single handedly the scariest piece of equipment ever invented for a job interview.  It’s big, it’s blank, and a whole mess of code is going to be written on it.  As The Lead, it’s your job to relax the candidate before they get up to the whiteboard.  I will often say:

“Ok, lets get you up to the whiteboard for a coding question.  I know you are not at your desk with your favorite compiler; the whiteboard compiler is very forgiving.  It doesn’t care about semi-colons or perfect curly brace placement.  “

“We also know you don’t have Google at your fingertips in here.  For this interview, we’ll be your Google.  If you have any questions you would normally ask Google, ask us.”

“We care about how you are thinking about the problem at hand, we want to hear your process of how you are going to solve the question.”

This preamble sets the stage for the whiteboard in that:

  • I don’t care what the code looks like, as long as the candidate can explain it and it resembles some sort of programming language.  Writing out sentences ’read in input from user’ will not work, I need to see how you would go about doing that, but I don’t care if you miss a semi-colon in the process.
  • I expect people to know a fair amount about the position they are applying for, but if something escapes them that they might use Google to look up I don’t want that to stall the interview.

“The question: Given three integers write a function that will tell me if they form a right triangle.”

::Anyone who has read anything I’ve put out in the past couple of years should recognize this question as one I have used a bunch of times for many, many articles, examples, and even a code challenge for the Viewpoint eNewsletter.::

Simple, yes?

Actually for such a simple question we have seen dozens of methods to solving it.  And here is the key, by this point, we, the interview team, know which ones work and which ones don’t.  We know the caveats of each solution, and if you walk into my interview knowing how to solve this question and whip off an answer in five seconds, we will still have much to discuss.

This question is the heart of the interview.  As simple as it may seem watching someone solve it tells you a lot about how this person will work out if they are hired.  What am I looking for?

  • Questions.  The way in which the question is asked is incomplete.  What do the sides represent?  Are they lengths of the sides?  Coordinates in a plane?  Can the candidate ask for clarification in a situation where all of the information isn’t initially given?
  • Ability to ask for help.  Assume they have asked the question, “What do the sides represent?” and you further go onto explain they are the lengths of the sides of the triangle.  Maybe the candidate doesn’t remember the Pythagorean theorem.  I like to see the candidate ask for help.  At least if they are spinning their wheels for a minute or two and then ‘come up for air’ and ask for help it is better than dead silence for the next 20 minutes.  Likely we have all encountered areas where we needed to ask for help, I’m looking for people who know their limitations and are not afraid to ask.
  • Coach-ability.  This is huge.  If you provide direction how well does the candidate take it?  Do they take it in stride?  Do they fight you on it?  Their reaction based on a suggestion will provide loads of insight into what it might be like to work with the candidate on a daily basis.
  • Ability to take criticism.

To this point I have been silent on the subject of The Jerk.  During the whiteboard section of the interview is where The Jerk shines.  Likely the candidate will pound out an answer to the question above, its time for The Jerk to put the code through its paces.

First question from The Jerk: “Are you happy with the solution?”

Now to be clear, The Jerk shouldn’t be ‘a jerk’ when posing these questions.  However, ‘technical hard-ass’ might be more fitting.  The Jerk asks the tough questions, The Jerk is curt and to the point…not quite the ‘good cop, bad cop routine’, but something close.  What this does is allow The Lead and Number 2 to observe what happens when the candidate encounters an adversarial character.  How will they react?  Do they flip out yell expletives and storm out of the room?  Or, can they handle the pressure?

The Jerk also nails the candidate on other questions that are often not thought about:

  • What happens if I run 0, 5, 5 through the application?
  • What about -3, -4, -5?
  • What about max int?

Or if the candidate solved the problem perfectly there is always:

“There is something wrong with your solution.”

How the candidate responds to this will likely make or break the interview.

  • Fits of screaming and crying…probably a no hire
  • Diplomatically explains to The Jerk that no, the function is correct and here is why…hire that person on the spot.

If someone in a situation like an interview can diplomatically explain why The Jerk is wrong and they are correct, in such a situation where there is a clear imbalance of power and they don’t resort to name calling, this is a very clear sign into how this person is going to work out.

If for some reason the candidate doesn’t grasp what a right triangle is, or doesn’t take direction, or sets the table on fire while doing the whiteboard question, this is where we would have them sit back down and wrap up the interview.  This is why we never say how many questions will be done at the whiteboard.

Our second question, “Build me a function that calculates n!”.

Again, allow The Jerk to drive the questioning, asking why they did their answer iteratively vs. recursively.  If the candidate nails the first question often times this question is used after the interview to separate the good from the best.

Any Questions for Us?

After the question(s) at the whiteboard we start to bring the interview to a close.  The Lead normally asks, “Do you have any questions for us?”  At this point one would hope the candidate has a few questions, what do you do here, what is it like to work here, etc, etc.  Open up and share as much as you can with the candidate without violating terms/agreements/etc.  These questions often roll into:

Talk About the Company

“Always be closing” or rather “Always be selling your company”…what you are about to relay to the candidate will stick with them as they walk out the door.  Does your company do really cool things?  Let them know!  Do you have monthly company meetings where food is provided?  Let them know!  Does everyone have an office?  Let them know!  Do you work on really cool cutting edge projects?  Let them know!

I would like to have every candidate walk out the doors going, “Wow, cool company.  Even if I don’t get an offer there I’m going to tell my friends how tough an interview it was, but how much fun it would have been to work there.”

The last thing you want to do is create any ill will on the part of the candidate as they leave to tell their friends and peers.  In such an interconnected world why spread a seed of ill will for no good reason other than an interview that didn’t result in a job offer?

The Walk

Thank the candidate for coming in when there are no more questions to be asked and walk them back to where you picked them up.  Give them a timeline of when you expect to make your decision, hand them a business card so they can ask any follow up questions if they think of any and bid them a good day.

Walk back to the conference room for the final vote.

The Final Vote

The final vote is simple; it’s a ‘hire’, ‘no hire’ vote.  Snap decision, and there is no ‘maybe’.  One ‘no hire’ in the group results in a ‘no hire’ result.  Each one of you had a different vantage point for the interview, and if you all can’t agree to hire the candidate they are likely not the best person for the job.  As I said, there is no ‘maybe’, or ‘maybe, but not for doing X’.  What if they are hired for another function, and that function goes away and the only thing for them to do is ‘do X’, now you’ve hired the wrong person, and you are stuck with them.

Where the ‘hire’, ‘no hire’ gets tricky is if you have three candidates who you would all hire, but you only have one position.  Right after the interview it is best to rank everyone for the position and keep the ranking updated after every interview.  At the end of the interview process you will have a nice list of candidates that you can then make offers to, and if one of them refuses you already know who you are going to hire next.

In Closing

There are a few items in technical interviews I hate with a passion.  Avoid adding these to your interviews at all cost:

  • Brainteasers – An example – given 9 dots on a piece of paper connect them all with four straight lines.  Brainteasers are not good interview questions, the only thing they will tell you if someone gets one right is that they are good at brainteasers, they don’t tell you if they are good programmers.
  • Fact questions – Any question that normally would be looked up by any given programmer isn’t a great question.  Do you care if you candidate has memorized a bunch of useless facts about QBASIC and now they can regurgitate them?  I don’t.
  • Illegal questions – I am not a lawyer, but I’m sure your HR department can brief you on all the questions you cannot ask during an interview.  Understand these types of questions before conducting an interview.  I’m talking race, sex, religion, all the major mostly common sense items most people wouldn’t ask.  Again, I am not a lawyer, so check with your HR department before proceeding.

I hope that using these guidelines will help you conduct your next technical interview and find a person who is smart, gets things done, but has passion for their job and career.