Tuesday, January 15, 2019

About Hiring

I have been taking interviews since 2003. By now I have taken hundreds of interviews and also given a few. I also conducted campus hiring events and walk in interviews, too. I am not good at taking interviews. No I am not being humble here. I genuinely think I am not good at it. I have seen really good interviewers. I am not one of them. One of the reasons I am not good at it is that I do not enjoy taking interviews. Measuring someone’s potential, intelligence and skills in one hour is daunting. Coupled with that the high stakes for making a mistake makes it one of the hardest task at my work. But still I have been made to do this over the years! That is probably because I speak a lot and give the impression that I am always available. So hiring managers used to find an easy “bakra” in me. Ever since I became a hiring manager, I take this task very seriously and end up doing it myself.

Having taken so many interviews I have gathered some working knowledge about it. I am going to share my experience in this article. There is no new wisdom here. This is just a collection of common practices in one place that hiring managers may find useful. So feel free to skip if you are already a very good interviewer.

Let me start by giving a sketch of how typical interviews go.

Say you are a project manager and you need to deliver two important features on IP multicast and MPLS multicast in your next release R10. You have one staff engineer in your team Akash, who knows IP multicast but he is busy with R9 issues and will not be free for next few months. So you got a requisition for a position approved and you want to hire an engineer who can help you with these features. You give a JD to your TA (Talent Acquisition Manager) and he searches with key word “multicast”. He sends a bunch of resumes to you to shortlist. Since you are up to your neck with R9 issues and R10 planning, you delegate this to a senior team member. Then one fine Wednesday afternoon at 2:40 PM you get a call from your TA.
“Subhendu, what’s up? You had a phone screen at 2:30 PM and the candidate called me that he did not receive your call.
“Shit!” You say. “Sorry, I forgot. I will call him right away.”
So you hurry to a conference room. Pull up the resume. Glance through it. Then call the candidate at 2:45 PM. You tell to yourself. “Oh. It’s just a phone screen. I am good at it. I can manage in 15 mins.”
And you are right. It is no big deal. It is a phone screen. It can be and should be done in 15 min. You should avoid doing a phone interview, and only do phone screening. The purpose of telephone screen is to introduce to the candidate you and your company as well as the job so that he gets interest to apply for the position. From your side you verify that the candidate is good enough to call him for a face to face interview. Invest one full day on him. Most of the time it should be discernible from his resume and his references. You should just validate those info over telephone.
So you like the candidate and ask your TA to schedule a face to face interview.
Come Friday morning as you are fighting the traffic to get to work, you get a call from your TA.
“Subhendu, where are you? The candidate is waiting for 30 min in Bombay conference room! First panelist Akash is not here yet.”
You remembered Akash was chasing a release blocker till early morning and he will not come so early and it will take you another 30 min to reach office.
“Is anyone else available?” you ask your TA.
“I see Bhumika there.” Bhumika is from the Java team and she does not know C++ or embedded programming. “I have no choice.” You think.
“Please ask her if she can take the interview.”
So she goes and does a good job interviewing the candidate on his programming skills.
Then goes Anand. He is a very good C++ programmer. But he is from the L2 team. He does not know much L3 stuff and he does not know multicast.
Finally to your relief Akash walks in and jumps straight into his R9 issue. You pull him out and request him to finish the interview first. He goes in and finished in hurry in 30 min.
You meet Akash at the cafeteria during lunch.
“How is the candidate?” You ask.
“He is awesome. He knows more multicast than me. He contributed to RFC.”
You feel very lucky that you got a good candidate.
Post lunch as you are preparing your weekly status report, you again get a call from your TA.
“The candidate is waiting.”
You feel irritated to be interrupted on your work. But hurry to the conference room. By that time you already made up your mind based on Akash’s feedback.
You start speaking to the candidate casually. Somewhat apprehensive to ask tough questions fearing he might flunk. You find him very confident. Also found that he ranked 16 in his JEE exam? He worked for good companies in the past.
“24 karat gold.” You think and jump straight to salary discussion. You are pleasantly surprised to find out that is getting only 36 lakh with 14 years. The market rate is 50. Even if I offer him a 30% raise it is still very cheap.
“What a deal?” You thought.
As a good manager, you gather feedback from two other panelists. By this time you do not want to lose the candidate. So want them to say “yes”. But to your disappointment, you find that they are not OK with the candidate.
Bhumika said that the candidate has an attitude and does not test his code. He hardly even codes. Mostly give opinions to others.
Anand said the candidate is very poor with programming. He does not know C++ at all and is not willing to learn. He thinks we should change to C instead!
Bhumika is being too sensitive. You thought.
Anand is not from my team. He does not know how we work. Besides he does not know multicast!
You ignore their advice and decided to go ahead with the candidate. You walk to your boss’s cabin and ask him.
“Boss, I got this great candidate. Can you please speak to him for a few minutes?”
“I am leaving for the US tonight. I have not even packed. I have to leave now. I do not have time. You should have told me before. Let’s do this next week when I come back.” Says your boss.
“He has other offers. He will not wait that long.”
Your boss has great confidence in you and trusts your judgment.
“If you like him then go ahead and hire him. I will approve. No need to wait for me.” Says your boss and leaves. You lost your last safeguard.
You make an offer. After much haggling, the candidate joins after two months.
Then disaster happens. He took three more months to learn C++ and be productive. Then you find out that the guy does not want to do any work. He has an opinion about everything but does not produce anything himself. Finally you need to pull Akash to deliver the release with more than a month delay. Akash is so stressed out that he may leave. Your boss’s confidence in you takes a dent. And you find out the next three releases are on SDN and NFV. The new candidate has no desire to learn these new things and is useless. You basically have a passenger in your team, who is causing more harm than help and you need to hire more people to deliver the next releases.

Of course I am exaggerating. Most hirings do not go this way. But surprisingly, quite a few do.

So what went wrong here? Everything. Let me try to list a few.

  • Preparation: No one plans for interviews. Interview is some invisible task that somehow fits into our schedule. Hiring is the most crucial part of team building. Take it very seriously. Add it to your plan, make time in your schedule as well as the team member’s schedule and your boss’s. Divide the work, who will ask what. One person should cover programming, another networking knowledge, another system building. Train your panelist on what to ask, as well as what not to ask. If the candidate is married, if he owns his flat or rents, where is he from. These are information that you do not need to know. There are other ways to do small talk and break the ice. Most importantly, make preparation in advance on how to receive and evaluate panel’s feedback. Stay objective and do not get clouded by prejudice.
  • Hire on potential not on skills: Skills requirements change, potential does not. You are hiring the candidate for what he can do for you, not what he has done before. While past is a good indicator of the future, it is not an insurance. The guy may have ranked 28 in JEE, may have been a star performer 10 years ago. But that is past. You must evaluate what he can do next. And this is not easy. Some tips on how to do is to see how he extends a solution when given additional requirements, how easily he gives up when asked a tough question. How inquisitive he is. Has he learned anything new recently? When a very tough question is thrown at him, does he accept the challenge or recoils with resignation? Ask him something totally new, not at all related to what he is doing currently and see how he proceeds. Introduce a new and interesting concept and see if he shows interest and asks more questions to broaden his knowledge.
  • Do not look for a deal:  Look for a deal when you buy a computer, not when you hire a team member. People have emotion and self-worth. When you pay them less than what they are worth, you hurt their self-worth and that impairs their confidence and ability and reduce their engagement. So once you decide to hire someone, pay her market rate and not try to get her at the cheapest. By doing so you are not helping your company much but you are hurting your team big time. You will add a disgruntled team member who will not perform well and will stay dejected and spread negativity. She will become a constant source of worry for you for the next few years. Not worth a few lakh. And once you hire someone at a certain rate, it will be difficult then to correct her pay to market. Rather consider low pay as a red flag. Why is this candidate  paid so less? It may as well be that she was genuinely deprived. But probe that and make sure that this is not an issue. Ask her about her past appraisal ratings, how she fared compared to her teammates. Only when you are satisfied that she is OK you make a hiring decision. On the other hand if you surprise the candidate by paying more than what she expects, you now have an enthusiastic member who is eager to perform and surprise you in return.
  • Do not ignore attitude and temperament: Cultures matter. Sometime they matter more than skills and ability. If you have a very competitive team and you hire a soft, introvert member, you are asking for trouble and vice versa. There is a thin line between confidence and arrogance. “I have done this” is confidence. “Only I have done this” is arrogance. You should be careful about spotting that line. For example allow the candidate to brag about some past achievement then observe if she also gives credit to her partners, does she also mentions her shortcomings. Be on the lookout if she persistently cribs about her peers, boss, and company. See if she is very opinionative. Does she focus more on ‘who’ than on ‘what’? Take HR feedback seriously. You do not need to make a hiring decision on a feedback like ‘the guy has attitude’. But make a point to probe her if you get any such feedback.

Here is how I approach this. Again this is not the best practice and I am sure people have better ideas. But I have not made many hiring mistakes so this can be used as a working hypotheses that can be improved.  

I break a 60 min interview into four main parts.

  1. I spend first 10 minutes introducing my company, the job and then myself. Thereafter I ask the candidate to speak about him. This has two purposes. One is to know about his past which gives strong indication about his future. More importantly it allows the candidate to calm down and gain confidence. What I observe is attitude and temperament along with skills he picked up.
  2. In the second part, I spend 10 min as an elimination round. For most candidates I give a moderate program to write. Like run length encoding or shifting bits in an array. This is an elimination test. If the guy flunks it, I give him another chance with a different problem. If he still flunks, he is out. This again has two purpose. One is the elimination test. It weeds out the bad candidates and saves me 30 min. But for the guys who passes this it gives a morale boost for the next question. It works like a tonic and the candidate gets charged up.
  3. The third part is the main interview. This is where I try to gauge the candidate’s potential. What I do is ask the candidate to design something big and complex, like design Facebook or Uber for senior candidate. For junior candidate I ask for example to design a software bridge. First I observe his reaction and his approach. Then I give him lots of hints to make good progress then again I leave him alone to extend. I spend about 30 min in this part. Sometime I give the guy a NP-hard problem without telling him. Like I ask to give a shortest path algorithm. Once he does that I ask him to come up with a longest path algorithm. In the exited state he does not realize that it is hard. Then I observe how easily he gives up or does he try his best to solve it.
  4. I spend the last ten minutes on checking cultural fit. I ask questions about her past achievements and failures. Ask her to describe how she received help from peers and boss to overcome shortcoming or gain competencies. Ask her to describe career transforming experience, how she coped with them, who helped her during the process. The objective here is to allow the candidate to talk a lot about her and then look for clues on temperament and attitude. There is no secret sauce for this. This is all about practice and discipline.

Finally I close thanking the candidate and answering any questions she may have. Once again I briefly summarize the job and clearly explain the next steps in the selection process.
So that is a long discussion about hiring. Thanks for reading this far and hope this will be of some help in the upcoming hiring season.