Pair Programming BenefitsApril 6, 2020 2022-10-27 15:42
Pair Programming Benefits
Pair Programming Benefits
Today pair-programming as well as test-driven development, continuous integration, and software architecture are an important part of any development efforts. It has also become part of the hiring in many companies ( Apiumhub is one of them ), and on-boarding processes.
Pair-programming is one of the best techniques we have to fight against technical debt within our software projects we work on and an excellent opportunity to share knowledge and grow ( we use it in Apium Academy for learning purposes ).
What is Pair programming?
Pair programming is an Agile technique originating from Extreme programming (XP) in which two developers team together and work on one workstation. Two people work together to design, code and test user stories. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in while providing tactical and analytical feedback. The observer considers the “strategic” direction of the work, coming up with ideas for improvements and likely future problems to address. And the two programmers switch roles frequently.
Pair Programming styles
In addition to the driver-navigator style, several other styles of pair programming can be more effective for a particular combination of developers. Choose one pairing style that works best for your team, or use a combination of styles in your software project:
This style is similar to driver-navigator, but the navigator takes over more of the tactical roles from the driver. In backseat navigation, the driver still handles the keyboard and typing, but the navigator dictates syntactical instructions, such as what name to call a variable or what specific method to call. The backseat navigator style works best with a novice as the driver and expert as the navigator, allowing the novice to learn by doing.
Ping Pong Pairing
Another style of pair programming that is often used in development is ping pong pairing. In this pattern, the first person writes a test that is currently failing, and the second person gets the test to pass. Then the second person writes a failing test and the first person gets it to pass.
The benefits of ping pong pairing are that it enables roles to switch frequently and forces engineers to pay attention to both the coding and testing aspects of development, gaining familiarity with TDD in the process.
The Pomodoro pairing style is similar to ping-pong pairing, but prescribes set time intervals for each session. A typical Pomodoro-style pairing session lasts 25 minutes followed by a 5-minute break. The driver and navigator then switch positions. After four 25-minute sessions, both programmers take a longer 20-minute break. Forced breaks and regular position switching help ensure that both programmers are always productive, focused, and refreshed when a session begins.
The benefits of pair programming
- Pair programming can improve overall productivity through the process of collaboration
- Higher quality code as a result of real-time review
- Better designed solutions through shared collaboration
- Better distribution of knowledge
- Greater job satisfaction for the developers
- Faster delivery because solutions to challenging problems are found more quickly
- Consistent coding practices through collaboration
- Greater focus on the code and programming task without distractions
- Unblocking developers stuck in some problem
- On-boarding new developers happens quickly
- Quick feedback
- Learning curves begin to flatten on these teams as members level each other up on the various skills
- Trust building
- Culture where every effort and every new feature is a team effort
- Collective code ownership on teams
- Less distractions on development teams
- Shared Best Practices
- It can help identify bad hires early on if someone isn’t the right fit
- Many engineers find pair-programming to be more engaging than programming alone, and feel more confident in solutions they came up with during the work.
I hope you found this article useful and if you are one of those people who are always willing to learn, check our software architecture courses & workshops and let’s grow together!