There are a lot of arguments out there both for and against pair programming in general. As an introvert, I find it extremely draining to be pair programming all day. In spite of this, I’m grateful for being pushed outside of my comfort zone as it is helping me grow. Below, I have written about why I personally find it so difficult, and advice about things I have learned so far in my Junior Developer journey.
An “Extroverted Mask”
During lunchtime at Pivotal the other week, we watched an inspiring Tedx Talk. The speaker, Abbie, is an introvert. She talks about “Why we need new role models in science and engineering”. This is because a problem with the typical role models in STEM is that they all come across as extroverted, even if they might not really be. If they are not already extroverts, then they have to put on an extroverted mask in order to stand up in front of people to confidently convince others that a career in STEM isn’t out of their reach.
Abbie is doing that exact thing in her talk. She is inspiring others by presenting herself as a “fictional character; this extroverted embodiment of [herself]”. The only difference is, she has explicitly stated that she herself is an introvert and that she is “acting” in a different way than what feels natural to her. By stating this, I think this is actually one way of combating the public disassociation of introverts. You can watch this talk on Youtube here: https://www.youtube.com/watch?v=iKI0nvdMJhc
After we finished watching the talk, a discussion broke out about introversion within the tech community. At one point, someone asked everyone in the room to put their hand up if they thought they were leaning more towards extroversion than introversion. Only 4 people (out of about 30 who were in the room) put their hand up. I found it surprising that so many people considered themselves to be introverted, especially as we are in a work environment that has been shaped to favour an extroverted nature. One example of this is pair programming.
Pair Programming All Day, Everyday
We write all of our code through pair programming at work, except for the odd occasion when someone is off sick on or holiday, which we would then either do solo tasks or mob program. For introverts, pair programming is highly energy-draining due to the intense nature of the workflow, in which you should be constantly communicating your thoughts about the code to one another. Introverts are naturally deep-thinkers; one of my constant personal challenges is that I feel like I have to think really hard about what I’m about to say, otherwise I won’t feel convinced that it has enough “value” to be spoken.
As an introverted Junior Developer, pair programming is therefore extremely challenging for me, as I’m not only thinking about trying to understand the code, I also have to think about how to convey my thoughts in a valuable way. Although this is way out of my comfort zone, I’m enjoying the challenge of pair programming as I think it provides an invaluable platform to develop my communication skills whilst developing programming skills. Examples of this are things such as not developing bad coding habits, always keeping our code as clean as possible and, most importantly, performing Test Driven Development correctly.
One article that I found particularly fascinating is, Agile Introverts, An Oxymoron? by Chris Edwards (an extrovert), and in particular his paragraph about the importance of safety. Edwards mentions that Google did a study to determine what the qualities of its top teams were, and the top result was Psychological Safety. This is basically when we feel safe that others around us will not judge or embarrass us for making mistakes.
Edwards says that “the stronger our relationships, the more empathy people show us, the less likely we are to be judged for our ideas, and the more likely we are to be forgiven for mistakes, then the safer we feel. The blood can move back into our prefrontal cortex and we can start focusing on the challenging intellectual problems in front of us“. I think this is a great point because as an introvert, having psychological safety would mean that I can think a little less about speaking up, and more about the code.
Stress makes the part of our brain which is responsible for thinking clearly (prefrontal cortex) start to shut down, which is a survival mechanism that has evolved over centuries to help us survive in life or death situations. Our limbic system (responsible for emotions) starts to take over at this point which “can save our lives when we are in danger and rapid, reflexive responding is needed, but can be detrimental when more thoughtful solutions are needed.”
Whilst pair programming, it’s easy to feel a little bit stressed about not knowing exactly what I’m doing, therefore I have found myself in situations where my mind goes completely blank and I can’t even think how to find the correct file… Obviously, this can then spiral out of control as this creates more stress, leading to what I now understand as my brain’s limbic system really taking over. However, the more experience I gain, the more comfortable I feel with other team members as I’m getting to know them through pair programming, the easier it is to stop stress breaking its way through unnecessarily.
My 5 Top Tips For Junior Developers Pair Programming
- Try to get in some alone time too. I often think I fully understand the code whilst pairing, but when I actually get to try it out by myself, I find that I’m not entirely sure what to write. This is because it’s easy to lean too much on the Senior Developer, therefore I’m not truly figuring it all out for myself and the knowledge doesn’t really stick. The other Junior Developer and I discussed this at work with the team and we decided that at least once a week we will pair together (rather than with a Senior), and spend some of the day individually looking into code we don’t understand, or working on a feature for the project together at a slower pace in order to really think about the code we’re writing.
- Type more. I’m really guilty of not doing this enough. I think that I learn a bit better by typing, even if the other Developer is telling me what to write. I guess this is because I can go at my own pace where I’m actually thinking about each bit of code as I’m writing and I can stop and ask questions when I get to the exact point where I don’t understand. Usually, if the Senior Developer is typing, I would wait until there was a suitable pause and then ask a question. Sometimes this means I don’t ask as many questions as I probably should because we would move on to another part and I would think that I understand the last part well enough not to ask.
- Get to know keyboard shortcuts. This is actually one of the biggest tips I wish I knew before I started work, as I had some time to practice but I didn’t realise how helpful it would be. Now that I’ve memorised some of the shortcuts, it’s so much easier/quicker to get around the IDE we use, but there are still lots that I need to remember! Knowing shortcuts means I’m spending less time trying to get around the files and more time on the actual code.
- Try to draw things out on paper or on a whiteboard, or get a Senior Developer to. I’m a visual learner so I learn deeper when I can see information mapped out. When I am struggling to understand something, it suddenly clicks into place when I can see it drawn out and it’s more likely that I will retain that knowledge. Doing this also means that you are breaking out from just staring at code on the screen, which along with regular breaks, I think is healthy to do.
- Spend time in the morning doing personal things you want to do, rather than use up your evenings. For a while after work, I was trying my best to gain more programming knowledge or do things for this blog. As I was so drained from pair programming all day, I was not able to effectively do much in the evenings but rather than relaxing, I’d just feel stressed about not doing enough! I’ve decided to get up an hour earlier in the mornings to either do some yoga or go for a run, or productively work on personal projects. I work much more efficiently in the mornings anyway, and feel so much better actually spending some time on my own things/have some time to look after myself! This means that I can now just completely relax in the evenings.
I’d love to hear from any other Junior Developers who are pair programming too! Let me know your thoughts and/or experiences in the comments below!