Interactive pair programming: working alongside candidates & students
Posted: Tue Dec 03, 2024 9:36 am
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 vp design officers email lists 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.
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 vp design officers email lists 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.