As a junior, when reflecting on the challenges I encountered during pairing sessions with senior developers, I thought it would be useful to identify their causes with the view to eliminate them.
- Choice. My senior pairs didn’t have a choice of not working with me, they had to do it. The organisation-wide assumption was that anyone with sufficient expertise can take on a junior, and the more senior the developer was, the more suitable they were considered to be.
- Availability. Senior developers are busy people, their expertise is most needed within their own teams and in a wider organisation. Their calendars tend to fill with meetings, which consume time and break concentration. Even with the best intentions, expert developers often simply don’t have the capacity to take on a junior.
- Deadlines. Being in demand and working with junior team members, unfortunately, does not defer deadlines. This means that when seniors eventually get back to their desks, they are eager to finish the feature, often accelerating the pairing session or building it solo, and offering to walk the junior through the completed solution. The feature may get built on time, but at the expense of the junior’s learning.
- Sharing. One of the biggest causes of my frustrations as a junior was that my senior pairs were often reluctant to share. Keyboard, mouse, screen, space at the desk, even time to ponder over the task are the resources I often found hard to get or sustain. Eventually, this affected my ability to remain engaged throughout the session and hindered my learning.
- Mind reading. The difficulty of watching my senior pairs code in the solution was enhanced by the fact that they frequently did that in silence. That made it even harder for me to follow their trail of reasoning and resulted in stalling my learning.
With time, as I gained more technical expertise and started pairing in a role of a leader myself, I began seeing the perspective of the senior developer with regards to the above challenges and their causes. I too, become an occasional victim of organisational problems and guilty of the sharing sin. Here comes the confession.
- I occasionally lack the patience to allow the junior to arrive at the solution themselves, and give away the answer early.
- I can hold the keyboard for longer than I feel I ought to, although I am quick to recognise this and correct the situation.
- I sometimes assume that my junior pair have knowledge of systems and concepts of which in fact, they have none. However, I do my best at making my junior pair comfortable to stop and ask if I get carried away.
- I found it particularly tricky to break down my thought process into steps and walk the junior through them.
I found that the latter is in fact, a recognised psychological phenomenon called Expert Induced Amnesia. For the lack of better explanation, here is a definition I found online:
‘Expert-Induced Amnesia, is basically, describing the state of expertise when being able to usefully describe how something is done is no longer possible’.
For example, think about learning to drive. During the initial learning period, the new driver has to explicitly focus on the sequence of steps required to start up the car, change gear or perform a turn in the road. They can explain reverse parking step by step, down to minute details such as at which angle to engage the full lock of the steering wheel. They can easily recall which chapter of the test book covers mechanical details of vehicles required to pass the test. In all that detailed knowledge, most newbie drivers struggle to operate in challenging traffic conditions.
On the other hand, for an experienced driver (not a driving instructor) such level of detail won’t come naturally. Through acquired expertise, technicalities of driving became tacit knowledge, which can be hard to decode.
Research shows that we don’t merely forget the rules we followed to become experts. We eventually stop following rules at all. The more experience we gain, the more we act through intuitively, based on our previous experience in similar situations. Intuitive expertise cannot be expressed as rules that a beginner to follow, so an expert’s explanation of their decisions and actions can at best be an imperfect approximation of their thinking.
Expert-induced amnesia is the reason why many senior software engineers struggle to explain their decision making, precisely why they did what they did and how they did it. Which naturally leads to a number of questions, such as whether expert developers are the best candidates for working with newbies and whether technical expertise should be the only consideration when forming junior/senior pairs. And with that, how can we describe the dynamics of junior/senior pairing relationship in a way that promotes equal involvement and productive collaboration? I will talk about this in the next post.