However, one unexpected consequence of all this pairing was the mental and emotional exhaustion of our team. There is a huge difference between solving a problem alone and having to talk it through and implement it with another person. Writing code alone is a serene experience, and I really enjoy it, but it’s almost a different skillset than what’s needed to pair program. Yes, you still code when you pair, but pairing is much more about verbal communication and logical collaboration than it is about coding. You can’t just know what to do, and in your own non-linear way code up a story. Each step of the way is verbally discussed, alternatives that you never thought up of are introduced, and you proceed through the story in a completely different way.
The non-stop talking combined with the extra mental burden of not only dealing with your own thoughts, but also processing and integrating the other person’s thoughts is nothing short of exhausting. This is doubly true for introverts, which (from my experience) are more prevalent among programmers. This was brought to the forefront in our mini pairing retro two weeks ago, and we decided to make a few adjustments.
First, we decided to try and end pairing at 4pm. This would give us the bulk of the day to pair, but also let us rest our minds and be at peace for the last part of the day before we had to go home. Second, one of our consultants from Neo suggested we adopt an ‘Investment Fridays’ concept, which they do at Neo. Basically on Fridays you are not responsible for delivering stories, but you do have to learn or work on something relevant to what we are doing.
While none of these adjustments are set in stone, they feel right. More importantly, we as a team are constantly gauging what works for us, and what makes us most productive, and keeps our code quality high. Just like we iterate on our product, we are constantly iterating on our internal processes, and over time I think we’ve been getting closer and closer to getting it right on both fronts.