A pair programming interview is an online interview approach to assess a candidate’s technical skills. A pair programming session is when developers work together on the same section of code to solve problems and build better software. In the actual context, a pair programming interview is a method of interviewing candidates where the interviewer and candidate solve a programming problem on the same computer, with the interviewer taking the role of observer/navigator and the candidate as the driver.
Breaking it down means a software development technique in which two programmers work together at ‘one’ workstation. One is the driver (writes code) while the other, is the observer or navigator (reviews) the two programmers switch roles frequently.
Pair programming has its pros and cons. Specifically, it is expensive for a company to support pair programming as it essentially requires two developers to work on one task. This is great for developers and helps stability, but it comes at an expensive cost. Pair programming for tech interviews is different as it is limited in time and can consolidate numerous steps in the interview process into one sometimes.
Stability is often touted as one of the key benefits to pair programming. This is because while one developer types, the other is checking their work and looking for issues. Sometimes, one developer will write a test for a feature, and the other will do the actual implementation. This is particularly true for test-driven development.
When programmers focus on the same code, the experience is more engaging and both programmers are more focused than if they are working alone. It is harder to procrastinate or get off track when someone else is relying on you to complete the work. When developers pair programs, they rely more on each other and can often find a solution together without needing to ask for additional help. Thus, pair programming can in fact increase the efficiency of individual developers. Additionally, with two developers you are more likely to catch any issues that code changes or refactors might cause.
Knowledge sharing is important in the programming world. A longstanding codebase has often gone through numerous iterations of developers, as well as many different patterns for programming. When you work with someone that is familiar with a codebase, you can pick up current patterns that the team uses, making for a more consistent codebase. In the long term, this is healthy for code quality.
It is a common misconception that pair programming takes a lot longer and is less efficient. In reality, when two people focus on the same codebase, it is easier to catch mistakes in the making. Research indicates that pair programming takes slightly longer but produces higher-quality code that doesn’t require later effort in troubleshooting and debugging. When the pair is stuck, both programmers can research the problem and reach a solution faster. Researchers also identified pairing enhances technical skills, team communication, and even the enjoyment of coding in the workplace.
So, the ultimate question here is how much faster pair programming is. Gauging the difference in speed due to bugs and issues that occur is a hard task.
Many companies that utilize pair programming expect to train fresh hires and new developers on how they operate to deliver a product. New hires might have to learn new programming languages, and new patterns, or just get used to the business domain of the company that they were hired into. Sitting and working with someone all day can really speed up this process.
There are many benefits to using pair programming as a technical screening tool. Some of the reasons that programming with another developer to judge their programming skills include:
Pair programming gives you a sense of their working style, communication, and whether an interviewee will be a good cultural fit. It gives you room to allow your candidates to solve a technical problem together with the interviewer. Through that you can have a better evaluation of them in a sample of the environment they will face in their day-to-day work. This is a much more transparent and efficient way to judge a candidate than a take-home test where you don’t actually see them do any problem-solving.
In a pair programming session, you can work on real programming challenges that are faced at work, allowing you to see problem-solving and applicable skills in real-time. It helps focus on the right skills by testing the candidate’s problem-solving skills and communication skills.
Pair programming is a faster interview method than other alternatives that may take multiple stages. Within a few hours, you can often judge someone’s skills and personality while pair programming. You are sitting, working together, problem-solving together, and communicating constantly for hours on end. Pair Programming is a more real intense but shorter technical analysis than traditional interviews. In today’s world, time is of the essence during the tech interview process. Taking too long could result in the loss of good talent from your hiring process. A faster hiring process that doesn’t sacrifice quality is a win for all parties.
Pair programming in a new code base, and solving a new problem to judge the ability to pick up new things quickly, which is always applicable to developers. Talking through the way someone thinks about a programming problem and watching them problem solve in real-time will give you better feedback on their capabilities.
With a good premise for the problem and a savvy interviewer, candidates feel positively challenged at the same time, they get to know a bit about the company, they are potential team, and the kind of work they will do. It is far more stimulating than other interviewing methods.
In a pair programming interview, you can have the candidate be interviewed from anywhere, making this an ideal test for remote positions or simply to increase the comfort of all involved. For in-house positions, having online pair programming interviews is also important if you are hiring an international or faraway candidate. This remote work, having a remote pairing session can be attractive to candidates.
While pair programming interviews seem straightforward, it’s actually really important to prepare for them ahead of time so you can ensure that you get a well-informed perspective on the candidate’s experience. Let’s take a look at how to organize and conduct pair programming interviews. They are:
Create a pair programming test, base it on a real-world situation the interviewee might run into at work, make it short, and create a small battery of questions. It is important to have a consistent test that different candidates for a position use. As a software developer, it can be tempting to use whatever you are working on for a pair programming interview as it is less disruptive to your own day. However, doing so is an unreliable way to just candidates or to get consistent results. You want to make sure you setup a technical interview that will accurately judge the skills you are looking for so that you don’t leave the coding interview wanting to know more information.
Communicate the end goal clearly, be open to all solutions, help candidates if they get stuck, and participate. Both the interviewer and interviewee should be talking. Pair programming is about collaboration, not about watching someone else program. Act like you were pair programming with a colleague and find the solution to your problems together.
Say thanks! Again, pair programming is a social exercise. Someone took the time out of their day to write code with you. That’s a great experience.
Keep the test consistent: Working on whatever task you are doing that day with a candidate leads to inconsistent results. You need to set up a test ahead of time that focuses on the skill sets you want to judge and use that for everyone.
Communication skills: Was the interviewee able to debug different scenarios, talk about the complexity of the code as a proxy for writing optimal code, stress test and optimize the code? Remember that pair programming is all about communication and collaboration, so work together with your candidate to solve problems when appropriate.
Problem-solving skills: Was the interviewee able to understand the problem, break it down into sub-problems, and then come up with solutions? Does he or she seem to be able to problem-solve efficiently?
Quality of coding: Did the person write clean and easy-to-understand code? Is their code of the quality that you need for the position you are hiring for?
Aptitude to learn: Does the person seem to be willing and capable of learning on the job? Software developers always have to learn new concepts, so keep this in mind.
Be open and honest: It will be clear if you don’t know something. Don’t try to hide it, ask questions.
Communicate, communicate, and communicate. Pair programming requires communication skills. Talk about what you’re doing, why you’re doing it that way, and what questions you are thinking about or need answers to. Communication displays confidence and is a great asset for future employers.
Keep readability, maintainability, and extensibility in mind.
Accept constructive criticism gracefully.
Show you can learn and be part of a team.
Conducting an interview or hiring doesn’t have to be a stressful and boring thing, by the use of pair programming tech interviews, engagement with candidates is made easy by tackling challenging problems together as well as getting their attention, retaining it and getting the best result from them. Pairing can provide a collaborative experience for candidates while making your recruitment process more efficient.
Join us at Flatirons Development!