In the ever-evolving world of technology, the process of hiring qualified professionals — specifically developers — has undergone a significant transformation. Although giants like Google and Amazon continue to lean on algorithm-based coding assessments as a starting point during the interview process, a notable shift is sweeping through the broader tech community to assess more than just raw coding skills.
Now more than ever, hiring strategies need to adapt to the dynamic demands of the industry. At Prefect, for instance, we see the highest-performing teams aren’t solely built on coding capabilities and algorithmic-based knowledge. Instead, we find the most output, retainment, and team harmony emerge from a mix of personalities and skills that go beyond technical ability. Because coding is becoming more AI-enabled than ever before, we’re looking for candidates who can handle failure with grace and maturity, can solve problems independently, and are able to grow with the organization. Michelle R. Weise, an expert on the future of education and workforce strategy, explores this evolving trend in detail in her Ted Talk.
In this article, we explore this shifting paradigm, introducing an interview format that emphasizes creative problem-solving, effective communication, and adaptability. We also want to offer clear takeaways regarding the core attributes that hiring managers should seek in coding candidates during the interview process.
Change Comes to the Coding Interview
A more interactive and collaborative approach is challenging the traditional technical interview, often laden with algorithmic “leet” coding questions. Today, tech companies recognize that competent programmers should have skills beyond mere algorithmic prowess. They should demonstrate the ability to solve real-world problems, effectively wield the tools at their disposal, adapt to a rapidly changing technology landscape, and clearly communicate their creative processes.
What Is Leet Coding?
Leet code is a website that helps engineers practice programming challenge problems and consider efficient solutions. The challenges tend to assess knowledge of standard data structures and algorithms.
At Prefect, we believe it’s just as important for a developer to be willing to think outside the box as it is for them to be competent in their craft. So, we have moved to a new type of interview that evaluates a candidate’s performance in live programming scenarios.
Reimagining the Technical Interview Process
Embracing the dynamic nature of the tech industry, our new interview processes replace stress-inducing tasks with more engaging problems to solve. In essence, we give candidates a coding project to complete in real-time, often with a mix of traditional coding scenarios and the opportunity to test new skills and try new things.
Importantly, this exercise is not about speed but more about critical and creative thinking.
The goal is to provide candidates the opportunity to showcase their skills without the pressure of a high-stakes setting. These scenarios also offer hiring managers a more holistic view of candidates’ abilities, including specific soft skills that traditional interviews often overlook.
The heart of this paradigm shift lies in reimagining the technical interview. Instead of a one-sided assessment, candidates are now invited to engage in a live pair programming session where they tackle a code-based problem similar to what they would encounter in their work with us. This approach not only reveals a candidate’s coding abilities but also provides insights into their problem-solving methodology, collaborative prowess, and adaptability to change.
At Prefect, we meticulously design interviews to evaluate candidates for various roles, catering to both entry-level and experienced professionals. For instance, in a UI-focused coding interview, candidates are presented with a task involving the creation of a simple email list interface, including building features like marking messages as urgent and facilitating developer inputs for size or color scheme. This exercise not only assesses their user experience (UX) design skills but also their ability to consider future modifications and the developer experience. We encourage pair programming during this process, and we may probe the candidates with questions like how they would handle changes to the interface’s title.
Likewise, our Python engineer interviews delve into real-world problem-solving scenarios, often centered around performance optimization. We expect candidates to propose solutions and engage in discussions about the effectiveness, maintainability, sharing capabilities, and documentation quality of their proposed solutions. Throughout, we want to see them use Python-specific concepts. Follow-up questions may explore the scalability of their solutions in a distributed system context and whether any adjustments would be necessary if the solution were integrated into an open-source product. These comprehensive interviews provide insights into a candidate’s proficiency in Python and their ability to think through complex challenges, making them suitable for more experienced individuals.
After employing this strategy several times with great success, we’ve narrowed down our process to focus on six core attributes when evaluating candidates during this coding exercise.
6 Core Attributes to Look for in Coding Interviews
- Problem-solving agility.
- Feedback receptivity.
- AI integration.
- Stress management.
- Collaboration and ownership.
- Handling mistakes.
The ability to tackle challenges on the fly is a prized skill. By posing potential problem scenarios and asking candidates to think them through during the interview, we look at how candidates demonstrate adaptability, logical thinking, and the capacity to devise creative solutions to complex problems.
As we go through a coding challenge, we offer live feedback and expect candidates to respond to it. A candidate’s response to feedback in the moment is telling of their humility and willingness to learn. We don’t just want them to get the solution right; we want to see if they can gracefully accept guidance and iterate on their approach.
The landscape is increasingly filled with tools for implementing quick fixes and achieving efficiency. By allowing AI assistance like Github co-pilot as part of assessment, and discussing how a candidate might use it, we assess a candidate's discernment in using AI tools and frameworks when appropriate, highlighting their ability to balance automation with human expertise.
A tech company’s environment can be fast-paced and stressful, especially when problems arise. Similarly, live coding and pairing during an interview is stressful. How a candidate handles pressure, navigates setbacks, and maintains composure during their interview helps us better understand their resilience.
Collaboration and Ownership
As developers, we thrive on collaboration, but we also require independence for maximum output. We seek candidates who can seamlessly transition between teamwork and individual contribution, striking a balance that benefits the project and the team as a whole. This can be hard to assess in an interview, but establishing the interview as a collaborative experience allows us to see how a candidate works with others.
Mistakes are inevitable, and owning up to them is a hallmark of integrity. We evaluate candidates based on how they respond to their own errors and those of their peers, fostering a culture of growth and accountability. This may happen during live coding, but we also ask candidates explicitly to tell us about mistakes they have made in the past.
Cultivating the Interviewer-Candidate Partnership
The culmination of the interview often opens the floor for candidates to ask questions. Although this step might seem like a minor detail to some, it’s a critical component of building the relationship. The questions candidates ask reflect their curiosity, industry awareness, and alignment with the company’s values. As hiring managers, we value these inquiries as much as the responses to our own questions.
The tech industry is perpetually evolving, and so are its recruitment strategies. As hiring managers, we recognize the need for a more comprehensive assessment that goes beyond algorithmic skills. The ability to solve problems creatively, communicate effectively, and navigate the intricacies of a live programming scenario are the hallmarks of a successful tech professional. Embracing these changes not only benefits candidates seeking to showcase their abilities but also enriches the tech community with individuals who can thrive in the dynamic landscape. So, whether you’re the candidate or the hiring manager, remember that the journey is a collaborative one, leading to a more innovative future.