Over years, we have figured that our developers require a proper environment to deliver their best work. Isn’t it the same for every employee?
For every developer, productivity is an outcome of multiple factors including technical acumen, behavioural changes, environmental setup, support, and guidance from team members.
Pair programming is a concept that pairs two developers to work together on one project. This method is designed to yield better efficiency, fewer bugs, and high quality. The idea here is to make two programmers sit on one computer and use one mouse/keyboard. While one programmer is writing the code, another is checking it in real-time. These programmers switch places often to allow each other to work with maximum efficiency.
However, we are often asked, how to do pair programming?
In this article, we have talked about important things that you should keep in mind for pair programming.
Key Factors To Effectively Achieve Pair Programming
Before we discuss the flow of setting up pair programming, it is imperative to understand that communication is the key. Both programmers should be encouraged to understand the abilities and requirements of their partners. This is definitely a team-building activity, which can be successful only if everyone is working together.
Here are 6 steps that you can follow for pair programming,
First things first, prepare!
- Take out a considerable amount of time to set up the process. Adjust schedules of both developers, and anything less than 2-3 hours is not enough. If the session is too short, it is constricted and unsuccessful.
- Encourage both developers to communicate daily before starting a pair programming session. Both should feel like doing it. If even one person is engrossed in another project or they are not in the right state of mind, pair programming may not work in this case.
- Before starting the session or coding, write down short-term goals on a post-it and paste them on your desktop. This goal should not be too much or too little. Discuss mutually to find a goal that is comfortably achievable for both programmers.
- Set up a comfortable space for both developers to work. If both are working in a small cubicle, the environment and sitting position may be uncomfortable, which will lead to distraction.
At the time of pair programming, one programmer is writing the code (Driver) and another is checking it (Navigator / Observer). While Driver and Navigator may switch roles often, there are some responsibilities that are separately assumed.
As the Driver, you may be writing the code but it is best to ensure that the navigator is engaged and checking your code. If you are not able to engage together, ask the navigator whether they would want you to slow down a bit.
Similarly, like Navigator, you may be ensuring no mistakes in the written code. However, you need to keep discussing doubts with your partner to allow each other to stay engaged. If there’s an issue, communicate clearly without hesitating.
Pair programming stimulates learning and development. Depending on your pairing, learning may vary.
When pairing with an equally experienced person, you may eventually find a rhythm to learn. For example, both experts can learn from each other’s suggestions.
However, this is not the case when an expert and junior employee are paired. In this case, here’s what you can do,
If you are the senior programmer in the group and you know more than the other person, you have to be mindful that this is a chance for the other person to develop and grow. They may be in this pair to nurture their skills and gain real-world experience.
Therefore, it is best to encourage them to find a solution, ask questions, look for errors, etc. If you are not matching their pace, they may easily lose motivation and learning opportunities.
In between, ask “How would you eliminate this error?”
If you are the junior programmer in the group, ask questions and try to find solutions. Try to grasp new concepts and learn them while you are working with an experienced person.
Pay attention to details and pick tricks that your experienced partner is using. Also don’t forget to ask questions about these tricks. It will only help you learn the concept better.
4. Find The Rhythm
In 15-30 minutes, change seats between Driver and Navigator. This much time is apt for concentration and productivity. Further, changing between positions frequently helps you commit to the project and find a rhythm. No one person is exhausted and bored with the same type of work.
Here are some tips to find the rhythm,
- Celebrate your short-term goal
- Take breaks regularly
- In the end, discuss the project or work; share your learnings
- Take note of the useful tricks and concepts learned
From the start, we have been stressing about improving communication. In pair programming, if both programmers are not communicating, there would be no progress.
For example, not explaining backdoors in the project to the Driver.
Communicate. Communicate. Communicate.
- Talk when you don’t understand why a certain code line is written in a specific manner.
- Ask when you think that we are taking a shortcut and it may ruin the efficiency of the code.
- Move with the speed of the Navigator.
- If one person is not engaging, then take a break. Ask them to have coffee and clear their mind.
- Make room for constructive feedback and don’t take this feedback personally.
The whole point of pair programming is improving outcomes together. If you are not comfortable with your pair, then the project may not be on the right track.
6. Eliminate Challenges
Even when you have successfully done pair programming in the past, it can easily get out of control. This is because human relationships are at the centre of pair programming. Therefore, till the time your developers are able to bond and interact, things should be smooth. However, once there’s a comparison or hard feelings involved, things may not go as planned. Hence, overlook the process to ensure smooth execution. If there are challenges, either resolve or re-pair, as required.
Techniques Used For Pair Programming
Many industry leaders utilize different techniques for pair programming. Some of these popular methods are discussed below,
This type of programming is the one we have been discussing. In this, one person is writing the code and another is checking it. It is widely accepted but with modifications and careful considerations. This is because one person is working in the passive mode. So, if we leave Navigator in this mode for long, they may easily procrastinate or lose focus.
Another method is test-driven development, where one developer designs the test and another developer runs these tests. Both developers take a turn in writing and running tests.
This is a type of Test Driven Development, which includes very small development cycles. It allows developers to achieve efficiency and find a rhythm quickly. Even when an experienced developer is paired with an inexperienced developer, they find it easy to stay motivated and move forward with this technique
Remote Pair Programming
In times of pandemic, many companies are operating from home and still using pair programming. This type of execution is referred to.as remote programming. It involves using the same techniques and methods, but remote collaboration. Remote pair programming is actually very efficient in keeping team motivation high.
Finally, there are some additional factors that you need to take care of. Pair programming is an effective method offering high-quality, fewer bugs, and quick product release to the market. To make it work, here are some additional considerations for leaders,
Draw some ground rules for pair programming. This includes,
- Who is pairing with whom?
- What is the goal?
- What tools do you need?
- What is the exit strategy in case of wrong pairing?
Don’t have tools pre-decided for you. The pair should sit together and discuss the tools and technologies they are most comfortable with. Both should agree on one thing, according to which the final choice should be made.
One glitch that is common in pair programming is who should be the Driver. If you are not carefully discussing it, you may not be engaged.
If one person wants to be the Driver first, they should ask for it, and vice versa. Further, discuss the time till when one person will be the Driver or create a short-term goal for one Driver, and then you switch.
When pairs fail to communicate this, they reach a dead-end, where one person is just writing the code and the other is just checking it for too long. In this way, both Driver and Navigator lose their efficiency.
4. Set Boundaries
Every developer has some personal boundaries because we are only humans. We all have some preferences for work, which should be clearly communicated. If you need a break, then take a break. Don’t unnecessarily sit there trying to satisfy the concentration span of the other developer. To avoid feeling fatigued mentally and physically, developers should have some boundaries.
It is not hard to get distracted while working. In pair programming especially, where one person is the Navigator, we need to stay focused.
For this, eliminate distractions from your environment.
- Put your phone on Do not disturb
- Avoid attending personal messages
- Avoid checking emails in between
Important factors necessary for pair programming are discussed here in this blog, to know more about the advantages and details of Pair Programming read our other blog by clicking here. To start pair programming in your organization, talk to your programmers, understand their requirements, evaluate their willingness, and then move forward with this decision.
If you require help with software development, we have a team to help you out. At Desuvit, we have nurtured projects over years, which has offered us the experience to work on different software requirements. Connect with us today and receive a consultation.
Desuvit is a Norway-born software development company delivering Custom Software Development, Mobile Apps, and Web Applications Development for various verticals and business domains. We offer end-to-end solutions for companies with no software or IT division, Startups, and companies that need to scale their software development efforts but lack the expertise required. We help our clients in growing their businesses so we can grow with them. Some of the technologies we work with: .Net, Azure, Microservices, Azure functions(Serverless computing), React Native, Flutter, React JS, TypeScript, Angular, NServiceBus, Azure Service Bus, Azure Queues, SQL Service, MySQL, Cosmos DB, etc.
Enjoyed this article? Subscribe for more valuable and great content !