The Pairing Diaries: Week 1
Four weeks. One tour.
This is the first of week of pairing with software crafters from the 8th Light LA office. A recap of my experiences thus far:
Monday, January 16th
Mob programmed with Matthew and Rob on a Java/Spring project. We’ve done this before with a Scala project so I felt comfortable with the dynamic. I liked how they first provided business context (white-boarding is helpful!) and then the purpose behind their story/task. It was probably the largest, most complex codebase I’ve ever seen. At a higher level, they were writing tests and editing a function such that any updates to the database required the creation of another database record. There were times that my head hurt. I think I could’ve been more verbal, but it was nice that I was able to contribute in some ways.
Tuesday, January 17th
Paired with Kirby on a Rails project. We worked on various tasks, including modifying the type of data we’re sending from the view to the controller, editing and saving text input from a custom field, and creating a modal for updating data for all users. We also talked through refactoring and troubleshooting when a custom integration test failed.
I have more first-hand experience with their app since I have QA’d a story of theirs. It was nice to be briefly back in the Rails world, to work on front and back-end issues, and just overall to pair with Kirby who is delightful. (I also learned about Vim Awesome).
Wednesday, January 18th
Thursday, January 19th
Friday, January 20th
This past week, I was focused on being a better pairing partner, one who is helpful and attentive, inquisitive yet respectful. I’m clearly getting a lot of meaningful experiences from pairing with people. I am learning about how people think programmatically, how they approach issues, how they use their tools and Git, etc. It has been helpful for both parties when I actively pay close attention, ask questions, and follow up for clarification (even if to reiterate what your pair has said).
It’s been challenging oscillating between the larger picture and the smaller task at hand, especially if there is a lot of complexity. Also, I’m acutely aware of how frequent I drink water and need to use the restroom. 😳
I’ve also been having a better idea of what pairing is and what it isn’t. And while it may seem evident, it surely wasn’t for me. The experience, coupled with reading more about pair programming from “Extreme Programming,” made me realize that the conversation is the crux of communication.
“Pair programming is a dialog between two people trying to simultaneously program (and analyze and design and test) and understand together how to program better. It is a conversation at many levels, assisted by and focused on a computer.”
I am highly interested in the dynamics between partners. One of the things that I was anticipating was feeling very inexperienced (and what’s great is that this fear of ____ was addressed by Beck as well). We’re all afraid of embarrassing ourselves, feeling inadequate, and not doing a good job. But this is natural, he insists. I am sure that my next three weeks of pairing will be varied based on the communication style and working style of my partner. I anticipate that personal energy levels throughout the day and external conditions such as deadlines will contribute to the session. But I will do my best to work through them.
With that in mind, Beck talks about the dynamic between two people from different experience levels. At first, it may seem like a tutoring session with the junior person asking a lot of question and typing not that much. (Sounds about right). However, the junior person will catch little mistakes; the senior person will notice the help. And over time, the junior partner will start to pick up larger patterns and give more substantive feedback. This generalized anecdote provided some semblance of comfort, as it may be the situation that I find myself in; this is what I hope to achieve, either over time or throughout the day.
Coding is often described as a language, a mechanism to communicate with computers. But I think the opportunity provided by pair programming helps humanize the software development process.