Interactive Pair Programming: Working Alongside Candidates & Students
Online assessment platforms are fantastic for quickly evaluating students. They provide the tools necessary to gather evidence and ensure objective results. They can even help guide subjective interpretations of those results with reviewing tools and rubrics.
When you want to move past objective evaluations and get more personal with a developer, one of the best ways you can accomplish this is through a pair-programming session.
Similar to an in-person interview with a whiteboard or in-person tutoring, a pair-programming session allows you to work together with a developer candidate or student while editing the same codebase in real-time no matter where they are in the world. Pair-programming comes with the benefit of working with real code in an editor, so you aren't asking the developer to work in an unnatural environment, like writing pseudocode on a whiteboard.
Integrating Paired Technical Interviews Into Your Process
When you are ready to move beyond standard assessments, your first question might be, "How does Pair Programming fit into my process?" To answer that, we must first look at your main goals, and see how pair-programming interviews can help you achieve those goals.
Recruitment: Hiring Junior Developers
When hiring junior developers, your goal should be to identify the candidate's ability to identify and solve problems in existing code bases. You'll also want to be more lenient in strict scores, so you can focus on the candidate's ability to learn and adapt. The automatically scored challenges you select will most likely handle the most obvious issues, ensuring you are working with a person who has basic coding skills and basic problem solving skills.
After this is where a pair programming interview should be used to identify junior development talent that might be easy to overlook.
Code Review Assessment Results
You can use a pair-programming session to look over a candidate's assessment results to gain additional insights. Use this time to discuss their solution, and possibly work with them on ways in which they might improve their solutions, just as you would with any other code review.
Insights from code review assessments gauge how well the candidate handles feedback, as well as explores their ability to improve their own code. You can also ask questions to probe their ability to improve code without giving specific recommendations.
Pair Up to Solve a New Challenge
Interactive pair programming is a great tool for understanding how your candidate solves new challenges. In this case, you can treat the experience as if you were helping a new hire get started in your codebase. Take on the role of the senior developer looking to onboard the candidate, and work together to solve a problem. This will give you a chance to gather opinions on the candidate's thought processes in real-time.
For both of the above experiences, make sure you target a fairly short interview experience, no more than 15 minutes, so you leave plenty of time for any other normal interview tasks.
Recruitment: Hiring Senior Developers
Hiring a senior developer is a very different experience. Hopefully any highly experienced developer is able to fully pass the automated unit tests. Once you've made sure the candidate has a solid background and is skilled at anything you can automate, a pair programming interview can really help expand the evidence you have to make a great hire.
Review Code Together
In a code pairing environment, introduce an existing codebase like a mock merge request. In this environment, you can work together to discuss the code, look for ways to improve it, and discuss if there are better solutions to the issue.
For the best experience, see if you can build on a challenge already provided to the candidate. This doesn't necessarily have to add to their solution, but would help get over the initial hurdles of understanding the codebase and understanding the business problem being solved.
Hold a Mock Design Meeting
Most senior developers will be involved in high-level engineering research and design at some point. By holding a mock design meeting with the candidate and several of their potential coworkers, you can observe how the candidate works in a team environment. Encourage them to speak up and work along.
You can use a pair-programming environment here to explore more specific ideas against a "real" codebase, so everyone can look at the code and work together on solving the problem. You can also use online whiteboards to work on diagramming together.
Education: Tutoring a Student
When tutoring a student remotely, you need more tools than just screen sharing. Screen sharing results in a passive learning experience. You need to be able to work with them deeply, side-by-side, while they learn how to code. In a fully-remote education environment, this can be difficult to achieve without specialized tools.
Pair Program to Teach New Ideas
Using a pair-programming environment, you can rapidly explain ideas to a student 1-on-1. Not only can you show the code, but you can run the code together to see the effects immediately.
With a good programming environment, you can each work on the code together, and freely discuss techniques and output from running code.
Pair Program to Review Coding Test Results
Pairing up can accelerate the solution review process by offering advice and giving feedback. You can quickly look through the student's code and work together to identify problem areas, think through logic issues, and improve reasoning skills.
Because you are working together on a live codebase, you also can make changes together, and run the code to see the results of these changes immediately. This process can actively help a student more deeply understand the reasoning behind changes.
Qualified Interact: Instant Pair Programming
Qualified's interface uniquely includes the ability to instantly turn any online assessment into a powerful pair-programming environment. The candidate and the interviewers don't need to install anything, as the entire experience takes place in the same browser environment already used for solving and reviewing assessments.
You can jump into any active candidate or student assessment as an interviewer at any time. Simply click on Interact Sessions link at the top of the application, and select the student you'd like to interview. If the candidate has not been invited yet, you'll also be given the opportunity to start an Interact session immediately after you invite them using the Invite Candidates or Invite Students link at the top of the application.
Qualified's Interact sessions are fully-featured for both our classic code and project code challenges. They each work a little differently.
Classic Code Challenge Pair Programming
With classic coding challenges, we support real-time, multi-user editing on both the candidate's solution and the candidate's tests. Any user (candidate or interviewers) can trigger running tests or submitting the code for final testing.
Each user is provided with a unique cursor color, and can independently edit the file simultaneously.
Project Code Challenge Pair Programming
We've recently introduced an improved feature set for using an Interact session with our project-based coding challenges. This interface not only allows multiple users to work together on the same codebase, but also follows the focused file, cursor, and selections automatically.
Besides the ability to work on dozens of files at once, one big difference between the classic code editor and our project editor is that only one person can be editing at a time. Our system intelligently tracks the active editor, so in many cases, you won't even realize this is happening.
It does allow us to track who made each edit, which we'll be showing in playback in an upcoming release.
Conclusion
Pair programming is a great way to teach new ideas, review coding test results, and rapidly explore potential solutions. By using a collaborative environment, you can quickly explain ideas, view code results, and make changes together to see the effects immediately. The additional collaboration will allow you to get a deeper understanding of the hard skills of the candidate or student, as well as their ability to communicate thoughts and ideas. You will also gain the opportunity to see how they go about solving problems without a rigid scoring structure in place.
When considering how to design your technical interview process or upskilling program, take time to think about how you can start collaborating with developers throughout the process. Where will you give developers time to work on their own, and where can you benefit from having the opportunity for open discussion? Consider what you want to learn in terms of how a developer thinks, beyond just their programming skills.
Ultimately, you can learn much more than just how well a developer can write code, you can learn how they solve problems.