Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / All-Topics

Evaluate & Identify the Right Developer for your Team in the Verbal Interview Sessions: A Structured Way

4.92/5 (81 votes)
20 May 2009CPOL15 min read 68.5K  
This article focuses on a structured process for better evaluating the candidates in verbal interview sessions for a developer position in your team.

Introduction 

Screening & interviewing hundreds of candidates and finding a good developer can be a hard and unsuccessful process. Often good candidates are identified as not-so-good and vice versa. I've seen this happening too many times. The reason is, most of the interview processes lacks a scientific approach, especially while interviewing for developer positions. In general, most assessments are done based upon a “subjective approach”. That is, the interviewer depends upon his/her “feeling and understanding” about the capability and skill of the candidates by talking to the candidates and asking them lots of questions. As a result, you, as a recruiter, run the risk of failure in identifying the correct candidate and you suffer a lot in the long run if an unfit candidate is recruited.

I am a great fan of Joel (The famous author of the book “Joel on Software”. I recommend you to read this book if you didn't read it already.) and this is the article written by him that inspired me to develop a better evaluation process (in a verbal interview) that is likely to help you identify the right developer in most of the cases.

Please note that, each recruitment requirement in an organization may be unique, and, how you would evaluate your candidates for that particular recruitment depends on the particular need for the recruitment role. But, if you have a software development team and you often need to recruit developers, you need to follow a consistent basic structure for evaluating the candidates.

In your organization, you may have other steps (like written and practical examination, psychological test, etc.) in chained interview processes. But, in most of the cases, evaluation of a candidate starts with a verbal interview and this is where most important decisions are made regarding the recruitment (Morning shows the day). This article is going to focus on 10 evaluation steps that you can follow while evaluating a developer candidate in this verbal interview process.

Following are the steps: 

1. Let the Candidate Feel Comfortable  

In this very first step, you should try to know the candidate in person and let him/her feel comfortable before starting the actual interview.

You may be a cool person, or, you may have a strong personality. But, believe me, when you are waiting for an interview for your dream job, you got to feel nervous. Of course, the degree of nervousness varies from person to person. But appearing for an interview is not the same as participating in gossip with your friends. It’s roughly the same for all of us.

You can't expect a person to be able to perform his/her best when he/she is nervous, or when he/she does not feel comfortable. So, when you are interviewing somebody, it’s your job to make the candidate feel comfortable.

How to make the candidate feel comfortable? It’s easy. Wish him/her a good morning/evening and chat with him/her briefly on today’s weather with a smile in your face. Make some conversation with him that involves the candidate’s personal, educational and career backgrounds. 

Some example questions you can ask

  • Where are you from?
  • Where did you study?  
  • Why are you interested in our company?
  • Tell me about yourself. 
  • What are your hobbies?
  • Tell me about your past company.

Scoring

Weight: 5 points

Must pass: No

Tips

  • Look for candidates who provide a good deal of information in brief and in clear words. Good candidates are likely to give you personal information proactively. 
  • Do not spend too much time in the introduction step. Once you are convinced that the candidate feels comfortable, proceed to the next step.

2. Identify Candidate’s Key Attributes

Curiosity, ambition, dream, passion... these are the attributes that every great developer possesses. Try to know the candidate more personally in this step. Try to discover these key attributes in the candidate that reflect his/her personality and attitude.

Some example questions to identify these attributes

  • What is your professional goal?
  • How would you achieve it? 
  • Do you believe you could become the best in a particular area if given the opportunity? How?
  • Do you believe you are mostly in charge of deciding your future? Why, or, why not?  [This is a modified question as some suggest a question about "believing in fate" might lead towards a sensitive issue. See comments.]
  • Did you ever written code in your dreams?
  • How do you keep learning? 
  • What are the things that make you special?
  • What are your personal weaknesses? 

Scoring

Weight: 10 points   

Min-Score: 5 points

Must pass: Yes

Tips

Look for candidates who are ambitious and/or curious and who have specific goals having a clear idea and plan about achieving those. Also, look for those who are excited to tell about themselves. Prioritize those who possess these key attributes. 

3. Evaluate Recent Project Experience that the Candidate Worked On

A great developer treats the projects he/she worked on like his/her baby. So, when they talk about their work in their past projects, their eyes become bright, face starts shining. They start talking excited about what they have done, how they did it, why they did it in a particular way and why other ways were not chosen.  

Some example questions for knowing past project experiences

  • What are the systems that you worked on?
  • What is the technology and architecture of the system?
  • What value did you add to that system?
  • How did you implement your assigned tasks into that system?
  • What other alternatives could you follow in your implementation?
  • What were the advantages/disadvantages between your implementation strategy and others? 

Scoring

Weight: 10 points

Min-Score: 5 points

Must pass: Yes

Tips

  • Look for candidates who have a detailed idea on whatever he/she as done in the past. Also, prioritize those who have deep knowledge in the related technology and are also aware of the other alternatives. 

4. Verify Logic Processing Capability

Every developer can process logic and write codes, which are correct in most of the cases. But, a smart developer writes smart and efficient code and writes it fast.

Verify the correctness and smartness in logic processing capability of the candidate in this step. Tell him to write a simple and easy program to solve a particular problem. Ask him to improve his/her code if not efficient.  

Some example problems

  • Write a program to concatenate two strings.
  • Write a program to sum all the even numbers within N.
  • Write a program to reverse all characters in an array. 

Scoring

Weight: 10 points

Min-Score: 8 points

Must pass: Yes

Tips

  • The best candidate will always write the most correct & efficient one in the first chance. Very good/Good candidates will be able to write correct code first and optimize later.
  • Do not proceed to further steps if the candidate fails to write a correct and efficient code in this step.

5. Verify Technical Knowledge/Skills

A true developer can always learn quickly and apply knowledge into work to develop systems. But, while at work, you need productivity. You have deadlines to meet and systems to deliver with full quality. So, in practice, you would always need talented and smart people who already know the stuff they need to know and know it well.

In this step, verify the candidate’s technical knowledge depth in the area you prefer. Determine the productivity level of the candidate and spend a good amount of time here.

Example area of interests

  • OOP 
  • .NET Fundamentals
  • ASP.NET 
  • SQL Server 
  • UI 

Scoring

Weight: 20 points

Min-Score: 12 points

Must pass: Yes 

Tips

  • Do not ask any question that require memorizing the answers. Rather, ask questions that verify candidate’s thinking and problem solving ability. For example, don't ask questions like “What is the Event name that is fired when a GridView’s edit button is pressed”? Rather, ask questions like “What are the limitations of a GridView and how do you overcome/workaround those”? 
  • A really good developer always possesses in-depth technical knowledge in the corresponding area. Look for those who proactively answer your questions in detail. 
  • Prioritize candidates who possess clear conception about basics. This indicates that, they are always detail oriented. 
  • Identify candidates who highlight the best practices.

6. Judge Experience

Sometimes talent and knowledge are not enough. There are lots of unknown things between heaven and earth and only experience can solve many of those problems.

In practice, a developer needs to develop systems from client’s requirement and has to solve real life problems. Experienced people are always most likely to develop efficient, robust and appropriate solutions to the given problems. So, you need to judge the level of experience in your candidates.

Verify candidate’s experience in the respective field in this step. Give him a few “Requirement” like problems that he/she has to solve (verbally) in a small amount of time. A candidate who can solve these problems indicates he/she has experience in the respective area.

Some example problems

  • You have an XML configuration file for your ASP.NET application. When the configuration value in the XML file is updated, you want to read the updated value immediately. How would you do that? 
  • You have several ASP.NET applications sharing lots of common image files within their application folders. Management decides to put all the graphics contents (Image files) in a shared location so that the same file could be reused by different applications. How would you implement this? 
  • You have developed and hosted an ASP.NET web site. After hosting, attackers targeted to get your website down by generating too many automated web requests to your site in a small amount of time. How could you prevent this type of attack?

Scoring

Weight: 10 points

Must pass: No

Tips

  • Really experienced developers can solve the assigned problems in no time. Also, they will mention the pros and cons of the approach that they would follow and will also try to mention other alternatives.

7. Judge Engineering Skills 

Developers are “Engineers” first. While at work, things don't work smoothly in most of the cases as expected and a good “Engineer’s” job is to make things work when they don't. A great engineer always divides problems into smaller chunks and follows a step-by-step approach to solve bigger problems.

Ask one of the questions like the following to judge engineering skills in the candidate. Really experienced developers can answer and explain the steps in detail.

Some example questions

  • You have been assigned to write test codes for existing ASP.NET codes in your project. How would you proceed? 
  • You have been assigned to do estimation for a requirement. How would you try to be accurate as much as possible?  
  • You have been assigned to optimize an ASP.NET application. What are the steps you are going to follow?  
  • You have been assigned to optimize data access routines in SQL Server. How would you proceed? 
  • You have been assigned a task that involves an unknown technology/domain. How would you proceed?  

Scoring

Weight: 10 points 

Min-Score: 5 points

Must pass: Yes

Tips

  • Skilled developers having good engineering skills will understand the question instantly and will start describing their process step-by-step. Not-so-good candidates will talk haphazardly, in the wrong direction.

8. Judge Teaming & Leadership Capability

No matter how brilliant and productive you are, you have to work in a team. Your team consists of different kinds of people who possess different capability levels, who may come from different cultures having different ideologies. You have to work with them on a day to day basis and often you get confusing requirements in the morning that have to be developed by your team  to be delivered by the evening.

So, it’s important that you look for people who are organized, who are good team mates and who have cool heads on their shoulders. Ask questions like the following to judge how the candidate will be as a team mate and how he/she can play a leadership role in your team.

Some example questions

  • How do you proceed when you are assigned a task that is not in your area?
  • How do you proceed when you have to modify and work in existing bad codes?
  • How do you respond while in a disagreement?
  • How do you act when you are communicated rudely?  
  • How do you handle pressure? 
  • How do you proceed when a requirement is confusing?
  • How do you manage multiple tasks at the same time?
  • How do you ensure that you are not going to miss a deadline?
  • How do you ensure a quality delivery?

Scoring

Weight: 10 points  

Min-Score: 5 points 

Must pass: Yes 

Tips

  • Skilled developers with good “teaming” capability will understand the question instantly and will describe their answer in a step-by-step manner. Not-so-good candidates will find it hard to understand the question, let alone formulate answers.

9. Verify Smartness & Intelligence

How many times have you seen that you are shucked with your work, and, how many times were you able to get out of the barrier? A software developer’s life is full of challenges and the ability to formulate alternative solutions to hard and impossible solutions in a smart way identifies the greatness of a developer.

Look for the ability to formulate alternative solutions in your candidate. Ask a question like the following for which an answer is not known to the candidate. See whether the candidate follows an intelligent and scientific thought process to formulate the answer.

Sample question

What are the total number of Gas stations in your country? 

Scoring

Weight: 10 points

Must pass: No

Tips

  • Formulating the answer to this question in a correct way indicates that the person has the capability to find alternatives in impossible situations. Real bright candidates will instantly start formulating the answer in a scientific approach. Others will need your help. Don't recruit those who say “I don't know the answer”. 

10. Ask Candidate to Ask Questions

A real good developer is an asset to any team. So, he/she is naturally well-benefited and rewarded in his own position. For this reason, when you evaluate a real good developer in the interview for your team, at the same time, the developer also evaluates you and your team. He/she will always likely to be curious about the potentials, stability, robustness and growth of your company. Because, before deciding to leave his current job, he/she would like to be absolutely sure that he is choosing the right company for him as his/her next working place.

Look for intelligent and mature questions from the candidate that indicate his level of maturity and his/her seriousness. A really experienced and professional candidate is likely to ask questions among the following:

Some example questions

  • What is the development process your company follows? 
  • How do you see if I like to study or R&D on a problem area?
  • How do you measure employee performance?
  • Why do you think your company is the best place for good developers?
  • What is the long term vision of your company?

Scoring

Weight: 5 points

Must pass: No 

Tips

Prioritize candidates asking mature questions in this step. 

Some Important Points

  • Smart and good candidates understand the questions quickly (in most of the cases) and always talk to the point. Bad candidates talk too many things that don't touch the main issue. 
  • Great candidates will always try to mention context, pros-cons and alternatives of their preferred approach in their answers. 
  • Candidates answering the questions to the point and describing in an organized way indicate that they have great communication abilities.
  • Smart candidates tend to drive the interview by mentioning their favorite keywords while they answer. Don't fall in their trap and make sure that you drive the interview, not them.
  • Try to make them write code as much as possible while you ask them programmatic questions. 
  • At least three interviewers should evaluate the candidates and their average score should be considered as the final score.
  • Many interviewers tend to express his/her knowledge depth by asking unnecessary and irrelevant questions. Don't do this, please.
  • Do not spend too much time on a particular step. Do not debate with the candidate unless this is a strategy to verify the candidate’s confidence.
  • Do not tell the right answer in case the candidate is wrong. This will demoralize him/her. 

Do Not Consider a Candidate if He/She 

  • fails to pass step 4 & 5. 
  • fails in any “Must pass” step. 
  • fails to obtain a minimum passing score.
  • lies in his/her resume.

Scoring and Passing

You decide the passing criteria according to your expected level. But, I've set a basic measurement that you might explore with. 

  • Minimum passing score: 50 
  • Required score for “Developer” position: 50-65
  • Required score for “Senior Developer” position: 65-80
  • Score indicating “Great developer”: 80-100

Last Words

The questions listed in the above 10 steps are included for example purpose only. My suggestion would be to customize the list of questions (possibly, with different difficulty levels) according to your requirement that best fit your organizational need. Also, add/deduct any step you feel you need to further improve the assessment in your particular recruitment process.

It is not guaranteed that this 10 step evaluation process will always filter you the best candidate. No process on earth is perfect and your human brain is still the ultimate and best processing engine over any process or computing machine. So, use this evaluation structure as a tool and mix up your own judgment, and impression with the outcome of this structured process to take the ultimate decision. You are most likely to be successful.

Best of luck!

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)