Pairing-with-Greg Fridays: Experiments in Paired Software Development

A pair of snow covered trees against the background of a green aurora sky.

Jonathan Tucker Photography

On most Fridays I engage in an ongoing experiment in virtual pairing using test driven development (TDD).  During the week leading up to the session, I update a page in my Confluence space, which anyone in our unit can access, with links to story cards that will serve as the focus of the two-hour session that I run from 10am-noon (EST) by sharing my computer screen via BlueJeans, our cloud-based video conferencing system.  When 10 o’clock on Friday rolls around I drop the BlueJean link in our Slack channel for everyone to see as an invitation to come navigate while I drive, trusting in the red-green-refactor change-one-line-at-a-time rhythm of the TDD discipline to steer us to a solution. The sessions are open for anyone in our division to join and learn from each other, working together on the problem at hand. At least, that is how things are supposed to happen.

What really has been happening varies from week to week.  Some Fridays come close to the TDD ideal, others stray far off course, some go by unnoticed, and others fail spectacularly.  What I have come to realize over the past three months of running this experiment is: yes, there is an interest in pairing and TDD, but an interest isn’t enough to sustain the practice of pairing and TDD.  What is needed is investment, and by investment I mean personal investment, and by personal investment I mean an overwhelming, rock-solid justifiable reason to spend two hours every week on practicing pairing and TDD on Fridays.  That, my friend, is one tall order and one that I concede is impossible for me to fill all by myself.

So when faced with the impossible I always look to the possible.  What is possible is that I am dead wrong and what is really needed is a bit more experimentation.  So I have extended this experiment until mid-year and made a few changes that I believe will create consistency and a stronger adherence to the red-green-refactor change-one-line-at-a-time rhyme.  For consistency I’ll be working my way through the computer assignments from GENETIC ALGORITHMS in Search, Optimization and Machine Learning by David E. Goldberg.  It is a topic I’ve been meaning to explore, and the two hours I spend every Friday pairing are obviously hours well spent on learning and professional development (LPD) ;).  Individuals gaining professional development is great, but what excites me more are the cultural benefits that come from spending time solving problems together.  As for adherence to the rhyme, well, it is just a matter of time and self-discipline. I’m counting on you-all to cry foul when I attempt to cut corners while leading sessions on Friday for there is nothing like external motivation to strengthen ones resolve to follow the “flocking rules”.

So by now you’ve figured out I’m plugging these “Pairing with Greg Fridays” for our internal folks and encouraging everyone to conduct your own experiments attempting paired programming in your own setting. Just having an interest isn’t enough to sustain a change you really have to make a conscious effort and explicitly set aside time to practice for a change to take root.  Let me know what you find that works or doesn’t work. Hopefully we can learn from each other as we try to become better as individuals and as groups. I’d also like to give Shout-outs for other internal  opportunities that make our library environment one that engages in and promotes a learning, collaborative environment: Noah Botimer for Code Yoga, to Matt LaChance for Code Lectures, and Meghan Musolff for the LIT Learning & Training Program.

“Be the change that you wish to see in the world.”

-Mahatma Gandhi