The Power of Pair Programming: How I Leveled Up My Communication Skills
Pair Programming is a powerful technique used to develop communication skills in a very short amount of time. Plus, it’s fun!
As a technical interviewer at Code Chrysalis, I get to meet a wide range of candidates applying to the Immersive Program. One notable difference between applicants is their ability to communicate. Some are very quiet, while others can code while sharing their thoughts and explaining their work.
I remember my own technical check-in. It felt so awkward because I was in the early learning stages and couldn’t solve any of the problems.
Not only that, but I wasn’t used to talking about my code. My brain was stuck like a car from the 1900s, puffing black smoke and struggling to start.
Eventually, I did pass, and expressing my technical thoughts became a breeze after graduating from the Immersive Program. I credit Pair Programming with a big part of the transformation.
Problem: The Lonely Road
Like many on the self-taught journey, I started programming mostly on my own. I was studying alone, thinking alone, and coding alone.
No wonder I had difficulty explaining my code! It was all stuck in my head. My ability to code was improving, but I wasn’t developing my communication skills.
But why is communication important in the first place? Isn’t being a skilled programmer good enough?
Communication matters because we don’t work alone. We collaborate with others on a team. Great products are made with the combined effort of tens, hundreds, or even thousands of people.
Is it possible to improve communication skills quickly?
Definitely. I didn’t realize it as a student, but I see the answer clearly now. I have witnessed Pair Programming work as a fantastic technique to improve one’s communication ability in a very short amount of time.
Solution: Pair Programming to the Rescue
Pair Programming is a practice where two programmers work together. There are a few variations, and here is how it’s done at Code Chrysalis:
- One person is a Driver, and the other is a Navigator.
- The Navigator codes by verbally giving instructions, while the Driver types the code.
- After twenty minutes or so, the partners switch roles.
It’s like being in a car where the passenger gives directions to the driver. Similar to how a passenger does not touch the wheel, the Navigator does not touch the mouse and keyboard. Everything is relayed verbally. The Driver types, acts as a sounding board, and may provide the occasional hint, though typically gives full control to the Navigator for twenty minutes.
“Wait, why do I have to tell someone to type?! It’s way faster to do it myself!”
I know it seems strange! Yet, I’ve seen this one system transform my classmates into great communicators in a matter of weeks. We made the transition from being solo players to team players.
Not only that, but it was fun!
As a Navigator, I had to verbalize my code and could not type. It forced me to do the most amount of communication practice in the set amount of time.
We did Pair Programming sessions daily. The first week was awkward, for sure. During the second week, I got used to them. By the end of the third week, I started enjoying them. And when I graduated, I missed them.
By the end of the Immersive Program, expressing technical thoughts was a breeze. It wasn’t just me, but I saw all of my classmates improve as well.
The Pros of Pair Programming
How did Pair Programming help? Doing the sessions accomplished several things at once.
1. Daily Communication Practice
The process forced me to share my thoughts out loud with another person every day. Code was no longer swimming in my head but was out in the open.
Since someone else was typing, I had to learn how to give very clear instructions. Furthermore, I had to explain my steps in a way my partner would understand.
Vocalizing my thoughts and code also made the material stick better. I learn better when I share what I learn.
2. Building Collaboration and People Skills
It allowed for better collaboration by developing these areas:
- Trust: The Navigator couldn’t touch the keyboard. It was the literal and metaphorical act of letting go. Each person trusted the other to do their part.
- Patience: When I was the Driver, I had to restrain myself. The temptation was real! “OMG, I see the solution!!! They just need to do X.” However, it was important not to rob my teammate of the opportunity to learn.
- Equal Time: Instead of one person dominating most of the session, the roles switched every twenty minutes, allowing each member to practice and contribute.
- Team Awareness: Since there was constant open communication, I could see where my partner was heading, or what exactly they were stuck on. This awareness allowed me to provide the right hints if needed.
3. Better Problem-Solving
Issues were easier to spot, as one person had a bird’s-eye view.
4. Sharing of Knowledge
I learned from my classmates just by watching them code and seeing their style. To this day, I still remember a particular technique my partner used to solve recursion problems.
5. Improving Technical Interviewing Skills
The skills practiced daily in these sessions are skills that interviewers are looking for during technical interviews when job hunting. These skills include engaging with the interviewer, voicing your thought process, and being able to explain your code.
If two candidates have equal technical skills, the one doing Pair Programming for several weeks will be way ahead of the game as they would score higher in the communication portion of the evaluation.
Building Stats
I get it. Seeing words like Trust and Patience reminds me instantly of my mother talking about her favorite Astrology website. Yet, these are real skills that can be built over time and impact an engineer’s career.
I like to imagine a character in a video game. Let’s call it Coding Quest. The character has stats like Coding, Communication, and Trust. Doing a Coding session adds points to Coding. On the other hand, doing a Pair Programming session adds points to all three. Imagine doing it daily. The stats start to go up quickly.
Instead of a character in a game, it was actually my classmates and I that leveled up!
I’ll end with a final example. It’s a scene from Dragon Ball Z.
Goku was flying in a spaceship to another planet and had six days to train before fighting a powerful enemy. So what did he do? In that spaceship, he trained under 100 times normal gravity. By the end of Day 6, he became pretty strong.
Like training in that spaceship, I see Pair Programming as a great mechanism to boost one’s communication skills in a short amount of time.