Before I was hired by Maxwell Health back in May of 2018, I was in full job search mode but only for the second time as a developer. Many of my interviews with other companies focused solely on technical questions, or even worse, coding exercises on a whiteboard with little dialogue, which in my opinion is not the optimal way to measure a developer’s skill set.
When I interviewed at Maxwell Health, there were technical questions of course, but the coding portion focused on a peer programming exercise. This took me by surprise because I had never run across this in any of my previous interviews. However, I enjoyed this process and almost forgot I was even in an interview. Looking back I realize why this was an important part of the interview process. Peer programming, a process widely used here at Maxwell Health, is an integral part of a developer’s daily routine, and has several benefits.
The Benefits
Peer programming is generally done in “pairs” but if the problem/task is overly complicated or urgent, there can be more than two developers involved (sometimes referred to as “mobbing”). There are many benefits of peer programming. These benefits have become obvious since I began and have been involved with development here at Maxwell Health. Based on my experience here at Maxwell in both the Developer and Team Lead roles, I’ve observed these benefits of peer programming.
- Better Code Quality / Finding errors quickly
- Improves Presentation and Communication Skills
- Knowledge Sharing / Work-Life Balance
- Natural Mechanism for mentoring
Code Quality
Peer programming contributes to better code. It is that simple. When you have two (or more) talented developers working together, the code quality will naturally improve. This is especially true because each developer has their strengths, and when combined almost always leads to a better result.
Also, any obstacles that exist in achieving the solution will be solved quicker. How many times have you run into a situation where you wrote some code and got “stuck” on a particular issue, causing you to spend extra time trying to figure it out? When you are pairing, the likelihood of this happening is reduced greatly.
Presentation and Communication Skills
Without realizing it, when you are taking part in a pairing session, you are honing your communication skills. Pairing sessions often involve screen sharing and presenting to help the other developer understand the problem at hand. This is a great skill to acquire and become comfortable with and is useful in many situations beyond the realm of development.
Also, many times there can be a disagreement about how to implement the solution or solve the problem. When this happens, healthy dialog takes place, and you are learning about how to deal with conflict which is another excellent universal skill to possess. Usually, the conflict also leads to the best solution, and sometimes even some new ideas.
Knowledge Sharing / Work-Life Balance
Peer programming sessions are also a great way to share knowledge which has some not so obvious benefits. With mostly full-stack teams here at Maxwell Health, peer programming sessions provide a mechanism for developers to share their expertise with other developers. This leads to a more well-rounded team, which lends itself to more flexibility for completing and scheduling tasks.
Because of this sharing of knowledge, the details of each ticket being completed are typically known by more than one developer. What does this mean? It means when you go on vacation or take a day off, you feel more at ease knowing that someone else on your team can handle any specific issues that come up.
Mentoring
Mentoring is a critical aspect of team building. A well-rounded team usually has a mix of developers with varying degrees of experience. Developers new to the team and less experienced developers will need to get up to speed, ideally as quickly as possible. Peer programming provides a way for more experienced developers to team up with less experienced ones. This is a great way to mentor them along while still completing the necessary tasks at hand.
Summing up
Peer programming is part of the fabric here at Maxwell. When I first started participating I asked myself “Why are we doing this? This seems inefficient, we are tying up more than one developer to complete a single task?”. After a few months, my perspective completely changed. I began to enjoy it and what is truly amazing is that after every experience I always walk away with new knowledge and often a new perspective on how to tackle some of the day-to-day challenges of being a developer.