Today I was sitting at my desk coding, and suddenly, I was told a candidate is coming for an interview in an hour for a QA job position. The ideal candidate would be a person who knows oil and gas drilling and can write code (mostly unit testing and also being able to fix small issues). I was told that it was his first and last technical and behavioral interview, and we would decide upon it. I was given his resume. He was supposed to work partly under my supervision (for the programming part). His resume showed he is an experienced mechanical engineer trying to get into programming. I admired him for doing so (as I always encourage unemployed or underemployed people to learn coding to find a job or get out of their low-paying and sometimes soul-sucking jobs).
There was a problem, though. He was coming in less than an hour, and I was not prepared. It was also my first time performing an interview. My company did not give me any questionnaire or form to go through with the candidate to evaluate him. I wondered how I can assess him properly? How can I verify his claims? His resume was long and detailed. His last mechanical engineering job was ended in March 2015. He then founded a software company. His resume described it as follows:
Established classification and forecast models, automated processes, text mining, sentiment analysis, statistical modeling, risk analysis, platform integrations, optimization models, models to increase user experience, A/B testing using R & Python, unit tests & debugging.
This sounded fishy to me. To me, it appeared that he was actually unemployed. It’s less likely for someone to suddenly being able to perform all of these tasks professionally without prior job experience, Or he was very smart. I was doubtful, but again, how can I verify these claims having less than 30 mins? I decided to ask him some fundamental software development questions and then ask him to write code in front of me. In addition, I verified his P.Eng. certification on the APEGA website that means he was actually a mechanical engineer and had at least 4 years of experience.
Then he arrived at our office. When I saw him, I got surprised, sad, then hopeful. He was a man in his 60s. He was unemployed for more than 4 years and nervously looking for a job. His resume said he should be a guy in his 40s. His resume also said that he got coding classes at SAIT college, hoping that he gets into the IT industry. Seeing him trying to reinvent himself and learn programming at old age was truly admiring. He was practicing what I was preaching to people.
He was wearing a nice suit and very thick eyeglasses. My colleague explained what we are doing at our company and what our products are. Then I started asking him short questions:
- Your resume shows you have written unit tests before. What is unit testing? Can you name which framework(s) you used? (failed to answer)
- What is a singleton? (was unable to respond)
- What is a finite state machine? (was unable to respond)
- Reference vs. value type? (answered to some extent after I helped him)
- What are Start() and Update() methods in the Unity game engine? (answered correctly).
He was rambling. He was not an articulate person at all. The atmosphere in the meeting gots intense. Although he failed most of the questions, I proceeded by asking him to solve a coding challenge. Why? Because if he could write this simple program, I could teach him the missing skills at the job. So I decided to give him the following programming challenge:
Write a program that tells you whether a word is a palindrome or not. Assume all letters are lower-case.
A ‘palindrome’ name is a name that reads the same backward as forward, e.g., “hannah” or “kayak”.
Output: It is a palindrome.
Output: it is not a palindrome.
I gave him my computer and the Visual Studio having a C# ‘Hello World’ program open. After 15 minutes and lots of help, he wrote this:
static void Main(string args)
// Write your code here.
string word; // <– I told him ‘word’ should be a string and not an ‘int’!
word = Console.ReadLine(); // <—- I helped him to write this.
word == word
word == word
While struggling with writing the above code, I kindly told him it is OK to use any programming language he might be comfortable with, such as Visual Basic. He said no and continued in vain.
At this moment, it was apparent he was blatantly lying about his knowledge and his experience with programming. He could not even write a simple loop but claimed to write “automated processes, text mining, sentiment analysis, statistical modeling, ASP.Net, etc.” Are you kidding me?
It was a sad interview because I wanted him to succeed. He was about to become a prime example of what I was preaching to people who lost their job after the oil crash in Calgary.