From the Development Team

Jun 26, 2020

Pair Programming: A Junior's Perspective

Jessica Anderson
By Jessica Anderson
movableink.casestudy.contentfulimage.rectangle

It’s hard to believe that only one year has passed since I started as a development intern at Underbelly. The first few days of my internship were mostly spent staring at code that, though written in the language I learned at Bootcamp, looked completely foreign to me. My technical director would check in with me and I would tell him “Everything is great!” while I stressed over the tasks I was given. I’ve come a long way, and while much of my new knowledge came from just digging in and struggling through the work, a big chunk of it also came from my pair programming sessions.

How Pairing has Helped me

Before we moved to consistent pair programming, I spent a lot of time spinning my wheels on an issue. As more time passed, I felt anxious that I wouldn’t be able to get my code working the way I wanted it to. Now that we have set aside consistent time for pairing, I don’t worry about getting stuck. I feel more confident that I can take time to try and work through things, but have the safety net of a lead developer guiding me through to find a solution if I can’t come up with it on my own.

Another key thing that I have learned during my pair programming sessions is that even more experienced developers need to take time to work through an issue. While this sounds like a pretty obvious statement, I think as a new developer there is this idea that if only you had a few more years under your belt, you would have the answers for everything. The truth is though; there is a process to fixing issues in code, and a big part of what we do as developers isn’t knowing the answer, it’s knowing how to troubleshoot a problem. Don’t get me wrong, there are times where I am pairing and bring a problem to the table where my team lead is able to point out a fix pretty quickly, but many times, it takes time for us to work together to resolve it.

Pairing has become an essential part of my workflow, and after six months of doing it daily, I have learned a lot. Here are my tips for making the most of your pair sessions as a junior developer.

Set a goal

I start each pair session with a specific goal in mind. This helps to keep us both focused and holds me accountable to the tasks I have committed to doing. As soon as I can, I try to let my lead know in advance what we will be working on.

Attempt a Fix

When we first started pairing, I would just bring a problem to our pair session and say “help!” Now I still say “help!” but I also come prepared with what I attempted to do to fix the problem, and where I think the problem is. Sometimes I know what needs to happen, but I am not sure how to get there. Thinking through and vocalizing these things have helped me learn more.

Ask Questions

As a junior developer, it can be hard to even know what questions to ask in the beginning, and you may even feel silly about the questions you have. Ask them anyway. The point of the pairing process is to grow as a developer and being inquisitive is part of the process. The times when I didn’t ask, I finished with a solution in hand, but had a limited understanding of how we got there.

Review at the end

It’s always good to reiterate what you worked on at the end of a pair session. Acknowledging the steps you took to get somewhere and listing out the steps needed to move forward, helps to solidify what you did for your time, and lock it in.

Even the most experienced developers benefit from pair programming with their colleagues. Seeing the way someone else works can be extremely beneficial and I think everyone comes away with something new. This is especially true for junior developers. The biggest take-away I can offer, is to stay active in the process. Ask questions, offer solutions, and try out your ideas. There is a lot of learning that goes on when something isn’t working as expected. My time pairing has been invaluable to my growth over the last year and I think Underbelly got it right by implementing it into our daily routine.