Monday, March 30, 2009

How to interview a candidate?

How to interview a candidate/programmer -- Version 0.0.1

Note: It's based on my process of short-listing candidates/programmers and experiences so far in selecting and building my great team. I'll expand it whenever I get time and will amend versions.

Not many of you were wise in the way the world judges wisdom. Not many of you had great influence. Not many of you came from important families. But God chose the foolish things of the world to shame the wise, and he chose the weak things of the world to shame the strong. - St. Paul

Core facts

  • Interviewing is a serious effort and interviewing has great career prospects. Take it as a serious profession.

  • Interviewer/interviewee – no one is genius.

  • You cannot find a person who knows everything.

  • You're not a foreteller and so you cannot identify people by appearance. That's the need for the interview.

  • No interview question is right or wrong. You need to take good decision based on many factors—not just by the answers of the candidates

  • In most of the ideal cases, the interviewer and interviewee will share only a part of the knowledge (see the Venn diagrams below)

    • Interviewer-Interviewee1

    • Interviewer-Interviewee3

    • Interviewer-Interviewee4

    • Interviewer-Interviewee2


  • Interviewing—face-to-face interviewing needs at least 1 hour

  • Big job – think of career

  • Projecting company and our name – marketing ourselves

  • Serious and selfless process

  • Identifying potential is plus and a good for everyone. If you identify and appreciate a potential, they'll remember you for their lifetime


  • Interviewing needs tough preparation.

  • Learn what is interview and why interview is important and how to interview

  • Read at least 3 books and articles on interviewing. Remember again that there is no correct approach; every author may have his own opinion. Take opinions or ideas that are very rational to you.

  • Technical questions preparation

    • We're looking for programmers. So, technical is very important and needs great amount of preparation.

    • Prepare as many questions possible in DB, PHP, General, Programming, etc

    • OOP – Prepare as many as questions on writing OOP code. Many people ask theoretical definitions; but that many not help to identify the real programmers. Give suitable problems that can be approached by OOP. Give suitable problems to use reuse OOP code or write OOP based library.

    • Have at least 3 form of questions prepared for a single answer. That would help avoid the question is been leaked over Internet

  • Communication preparation

    • Prepare well on how to ask questions, how to open questions, how audible you should be, and the modulation needed.

    • As English is the formal language for interviewing in India, understand proper pronunciation for the words you may have to use while interviewing

  • Prepare lot of bogus and or tough questions

    • This is merely to project the name of the company—something like Microsoft interview. If the questions are too easy, the candidates may feel bad about the company and current employees' potential. But, these questions are not deciding factors. These answers shouldn't be accounted.

  • Prepare lot of "deciding" questions

    • Question such as "find whether the given integer is odd" is deciding type of questions. If the candidate doesn't answer such questions, he is most likely not a good programmer.

    • For PHP OOP, this question may be considered "deciding" question: using the following class, how will you find the area and perimeter of a ground that is 1250meters X 5290meters in dimension?

    class Rectangle{
        public $width = 5;
        public $length = 10;
        public function getArea(){
            return $this->width * $this->length;
        protected function __getPerimeter(){
            return 2 * ($this->width + $this->length);

Facing interview

  • Dress

    • Should be decent, no vulgar, not disturbing – so that the interviewee will not feel uncomfortable facing the interviewer

  • Punctuality

  • Policies – no mobile phone, etc

Basic objectives

  • Smart candidate (with reading, writing/typing, programming skill, attitude, aptitude)

  • Candidates for getting thing done—our current job

  • Growth for both interviewer and interviewee

    • No growth for the interviewer, if interviewee has lesser knowledge than the interviewer (refer the Venn diagram above)


  • Insult

    • Even if you reject the candidate, there is 99% chance that the candidate can still become a CEO of other company, president or prime minister of the country. Always be kind to the candidates.

  • Interviewing is not choosing life partner

    • The jollu nature of the interviewers is wasting majority of the interviewing process in India. ("jollu party: [Tamil Slang] Jollu refers to spittle. Party refers to a person. A jollu party is someone salivates at the sight of the opposite sex." -- )

  • Judge over appearance

  • Judge over dresses or dress codes

    • If the dress code is too informal, ask for the reasons. If the candidate has no answers, then the candidate may not be serious about the career in the company. But, if his answer is something like "I thought that you'd look at my stuffs—not at my dresses", then it shows his confidence.

  • Judge over answer

    • This is very important: do not ever judge the person by merely looking at the answers. If you think the answer is wrong, ask for the reasons. The guy may be next Newton or Einstein to disprove the theory that you've believed to be the answer of the question.

  • Stop asking after few questions by judging the person by previous answers (see above) or judging the person with set of prepared questions. If the candidate is not answering anything, it's better to ask for the reasons and his knowledge domain.

  • Speak in other language that the candidate is not comfortable with. It's not the right time to showoff your linguistic skills.

  • Look at salary

  • Look at disability

  • Face the candidate without question sheet.

    • Many think that interviewer should showoff and so having question sheet is shame. In fact, having the well-prepared question sheet will focus the interview in right direction and will save lot of time.

  • Blinking with each other

    • If the interviewing is done by more than one interviewer, don't ever blink at each others.

  • Think for question–blinking

  • Underestimate & overestimate

  • Showoff your skills

    • It's not a time to showoff your skills

    • It's not a time to prove that you're smarter than the candidate.

    • Avoid prejudices such as poor reasoning for rejection of candiates such as the one mentioned in The nightmare interview: "Data Modeling" (it shows showoff by the interviewer)


  • Listen

  • If the answer is unexpected, check practically or ask for the reasons

  • Identify real interest & experience

  • Read resume & check projects (links, etc)

Common steps

  • Start with ice-breaking type of questions

  • Understand about the nature of work and project

  • Understand about domain

  • Understand about involvement and percentage of contribution

  • Start with medium level question

  • Go up to the level of the candidate

  • Fix the weightage of the candidate – ranking

  • Close with ice-breaking type of questions

  • If the candidate isn't doing well, ask for reasons

  • If you think that the candidate has some other potential—other than what you’re looking for the current job, politely inform him that he may focus on that area. Also, if there is a scope for that potential in the company, suggest and refer him for that position. For example, the person may have good designing skills, but he may have applied for programming positions for "survival reasons"

Interview framework

  • Prepare set of questionnaires – software based questionnaires (possible with LimeSurvey)

    • Ask for personal details (Educations, Experience, Project Details or domain)

    • Provide them with collection of tougher and "deciding" type of questions—both in analytical and programming

  • Evaluate the candidate's performance by "deciding" type of questions

  • Even if the candidate isn't performing well, conduct face-to-face interview. You'll have the opportunity to ask for reasons for not performing well or can able to find if the candidate's interest lies in other domain or if the candidate isn't feeling well or if the computer/keyboard/mouse that the candidate used for filling the answers isn't perfect.

  • Shortlist the candidates based on the performance in questionnaires and face-to-face interview, for the next real time round.

  • In the real time round, give the candidate computer with Internet access and possible problem from current projects.

  • Take final decision based on all the rounds.

Thursday, March 26, 2009

jQuery.favicon - jQuery plugin for adding favicons next to the links

It's easy to add little favicons next to all or external links using CSS's background properties:

a[href ^=""] {
background: url( center right no-repeat;
padding-right: 16px;

But, to automate that for all links in a page, I wrote a nifty jQuery plugin--favicon (posted to jQuery group).

Side note

I don't know of anyway to parse the domain name of a link using JavaScript and so thought of using RFC compliant regexp and had to write a PHP helper to import regexp in JavaScript:

// Generate JavaScript regexp for matching URL for getting host part
// set user agent; otherwise getting 403
ini_set('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT5.1; en-US; rv: Gecko/20071127 Firefox/');
echo str_replace(array(
"\n", // remove newline
'/', // escape / to \/
'?:' // remove--we really need mach
) , array(
) , file_get_contents(''));

Monday, March 23, 2009

Sad demise of Suresh Kumar

When my spirit was high in pain, I wrote "If there is a God, he must be a sadist!" and also added that in my Usenet sig-block. God proved to be cruel again, by taking Suresh Kumar, a great hacker, a good human being, an inspiring Team Leader who worked with me on February 25, 2009.

Suresh joined my team in October 2008 and have shown his leadership skills immediately around November 2008 and started building his own team. His knowledge and involvement in, an online PSD to XHTML conversion website that we're developing was a great asset.

It's a great shock that a low BP or any unknown disease can kill him at the very young age. We have had a discussion on February 24th but a bad news came the next day--all to prove absolute vanity in life--and to prove "We live to die; we die to live"

May his soul rest in peace.