Insights from Interviewing Sixty Programming Candidates
Written on
Chapter 1: Recruiting Journey
Following a rigorous recruitment process for an embedded software developer role, I want to share some amusing anecdotes and intriguing personalities I encountered. This is not meant to be a moral lesson but rather a blend of humor and criticism.
The statistics I present are specific to my experience and should not be viewed as a comprehensive portrayal of the job market, which can often appear quite limited from my perspective. Let’s dive into the figures: I received a total of 218 relevant resumes. Among these, 31% lacked a computer science degree or had not fully completed their studies. Meanwhile, 47% indicated they had participated in boot camps or online coding courses, and a notable 24% cited such programs as their sole educational background. The remaining 7% held degrees in non-computer science fields, which I did not track.
Interestingly, 69% of the candidates possessed a university degree, with a nearly even split between Computer Engineering (32%) and Computer Science (37%). All applicants claimed some level of work experience, although I didn’t keep detailed records of this. Ultimately, 60 candidates were invited for preliminary interviews.
The initial round of interviews was conducted in-person and was strictly non-technical. Towards the end of one session, a candidate inquired about the advertised salary of $30k. He expressed outrage, claiming his cousin, a full-stack developer, earned significantly more. He insisted that unless the salary was increased, he would walk away.
Seven different individuals attempted to convince me that their boot camp training in front-end development (primarily CSS and HTML) was perfectly suited for our needs. Their convoluted explanations highlighted a glaring lack of understanding of the subject. Ironically, had they not spoken, they might have progressed to the technical interview.
One applicant repeatedly referenced their GitHub profile to showcase their expertise and teamwork, boasting significant contributions to various Open Source projects. Curious, I checked it out. Ignoring the unimpressive contribution history, I noted that the number of Issues greatly outnumbered the Pull Requests. Many Issues were mere duplicates, and the Pull Requests were poorly executed and subsequently rejected.
During the technical interviews, a small group of C++ enthusiasts struggled to implement functioning classes or utilize basic library functions. To salvage the situation, I asked if they would feel more comfortable working with C. One candidate admitted to never having used C, despite claiming proficiency in C++.
Another candidate inquired about our Integrated Development Environment (IDE). I explained that we often utilized proprietary tools due to the nature of our hardware work. He responded with annoyance, stating he had never felt the need to move away from VS Code throughout his career.
When I posed the seemingly straightforward question, “How long would it take you to learn a new programming language at a beginner level?” the candidate retorted with, “Why should I? I already know Python, and it’s perfect for everything.” While I partially agreed, I asked if he could highlight a significant limitation of Python in embedded applications—something as simple as its runtime speed or lack of a JIT compiler would suffice.
His response was to question my knowledge. I would have welcomed a chance to engage further, but he shook his head, bid farewell, and walked out. After a brief moment of awkwardness, my colleague and I couldn’t help but laugh, relieved it was the last interview of the day. When asked, “What emerging technology would you like to explore or learn about?” out of 60 candidates, 23 responded with “Blockchain.”
An insightful look into the struggles of programming interviews, where over 90% of applicants failed to impress.
Chapter 2: The Importance of Right Skills
A discussion on why it's crucial to approach programming challenges correctly, emphasizing the right mindset and skills.