When hiring developers, it’s crucual to develop a structured process that ensures you find the right candidates. Hiring can be a huge resource hog, especially for small companies that have to divert important resources like the CEO’s time for the hiring process.
The method below was shared by one of my friends, Dan Avramescu, who works on misstourist.com. Dan is a valued member of the the Good Life Collective, and in one of our business discussions in this community, he illustrated the meticulous process he has used to hire successfully over the past years.
Here’s the detailed breakdown:
Step 1: Posting the Job
I start by posting the job on djinni.co. In the job post, I outline all the requirements and desired qualities for the developer. This is based on my experiences with past developers—what I’ve loved about working with them and what I haven’t. Both are important, as I don’t want to repeat frustrating experiences from the past. These insights are split into the “Requirements” and “Nice to Have” sections to set clear expectations from the beginning.
Step 2: Screening Questions
I use subjective screening questions to filter out candidates early on. This approach helps me avoid candidates who might use AI tools like ChatGPT to generate polished but insincere responses. Over time, I’ve learned to spot those telltale signs of AI-generated answers.
Examples of Subjective Screening Questions:
- What’s a recent task that frustrated you? How did you handle it?
- Helps understand how candidates deal with challenges and their approach to problem-solving under pressure.
- What solution are you most proud of in your career?
- Allows candidates to showcase their creativity, technical skills, and the impact of their work.
- What is something that annoys you about working with [specific language/framework]?
- Reveals critical thinking and familiarity with the tools they use, as well as their ability to articulate areas for improvement.
- Tell me about a time when you significantly boosted the results of a project you worked on.
- Identifies past successes and their ability to contribute meaningfully to a team.
- Describe a situation where you had to learn a new technology or framework quickly. How did you go about it?
- Assesses their learning agility and willingness to adapt to new challenges.
- What’s the most challenging bug you’ve ever had to fix? How did you approach it?
- Demonstrates their debugging skills and perseverance.
- Can you tell me about a time when you had a disagreement with a teammate? How was it resolved?
- Explores their interpersonal skills and ability to handle conflicts professionally.
- What do you think is the most overrated technology or trend in software development right now? Why?
- Gauges their industry awareness and critical thinking about current trends.
- Describe a time when you had to balance multiple priorities. How did you manage your time and tasks?
- Assesses their time management skills and ability to handle workload effectively.
- What motivates you to stay in the field of software development?
- Helps determine if they are passionate and likely to remain committed long-term.
These subjective questions help provide a deeper understanding of the candidate’s experience, problem-solving skills, and personal traits. They elicit genuine, thoughtful responses and provide insights that go beyond technical skills.
Why These Questions Matter
- Depth of Insight: These questions provide a deeper understanding of the candidate’s experience, thought processes, and problem-solving abilities.
- Authenticity: Subjective questions elicit more genuine responses compared to technical questions that can be easily rehearsed or generated by AI.
- Cultural Fit: Understanding how candidates handle challenges, work with others, and stay motivated helps determine if they will be a good fit for the team and company culture.
- Adaptability: Questions about learning new technologies and managing multiple priorities reveal their ability to adapt and thrive in a dynamic work environment.
Using these subjective screening questions, along with the initial video screening and live coding interview, helps me identify well-rounded candidates who are not only technically skilled but also have the right attitude, communication skills, and problem-solving abilities.
Step 3: Initial Video Screening
The first screening question is always:
“Send me a video (45 seconds to 2 minutes) where you talk about a few things about yourself, personal or professional.”
In this video, I look for:
- Ability to articulate thoughts clearly.
- Comfort in speaking English.
- Willingness to put in effort (not just clicking “apply”).
I move forward with candidates who demonstrate excellent communication skills or those who may be a bit nervous but still manage to communicate effectively. I disregard candidates who read off a script or stumble too much.
Case Example
I once rejected an excellent QA candidate because of his arrogant attitude. He refused to make a video, stating he wasn’t desperate for a job. Even though he was clearly skilled, I didn’t think he’d fit well in a team environment. However, for roles that require only one developer, I might give such candidates a chance.
Step 4: Screening by Criteria
When I gather a reasonable number of candidates (15-20 at least), I further filter applicants based on:
- Matching skill set.
- Video presentation.
- Relevant experience.
Step 5: Live Coding Interview
I invite 5-10 candidates for a live coding interview. During this interview, I set tasks that are similar to what they would work on within our development stack. These tasks are intentionally designed to be impossible to complete within 1-1.5 hours. This lets me observe:
- Their ease of working with the stack.
- Their problem-solving skills.
- How they utilize online resources and AI tools like ChatGPT.
- Their ability to quickly complete basic tasks, indicating familiarity and prior experience.
- How they handle errors and debugging.
I inform candidates that they can use any resources online, as I want to see their resourcefulness and comfort with AI coding tools. In fact, I secretly hope they will use AI—a good programmer is a lazy programmer who looks to automate rather than do manual work.
Step 6: Final Selection
From the live coding interviews, I typically narrow it down to 2-3 candidates. I then make my final decision based on their overall performance and fit for the role. If I don’t find 2-3 suitable candidates, I run another batch of coding interviews.
Conclusion
I’ve been using this process myself with excellent results. It helps me find developers who are not only technically proficient but also good communicators and team players.
Having access to discussions like this one is why I really love being part of several communities. If you haven’t checked out the Good Life Collective yet, go do so, and let me know if you have any questions about what I am building there. Thanks again to Dan for this great experience share.