Yeah, you read that title right. I’ve tried to do it many times over the past few years, and I’ve just never felt like it was helpful or enjoyable. I don’t feel like I’ve learned much from it - certainly not as much as if I’d spent that time just working independently - and I find it exhausting. I frequently also find it frustrating if someone I’m pairing with can’t keep up with me when I’m really “in the zone” while working. And, to be totally honest, I really like listening to music while I code, and I can’t do that with a pair.
But this is in direct conflict with dozens of people who I trust and respect that all universally sing the praises of pair programming. They say it’s nothing short of magical, and yet I find it to be largely frustrating and unenjoyable. I really want to enjoy pairing, and yet I don’t - so what’s up? I’ve been thinking about it, and there are a couple possible reasons.
Maybe I’m doing it wrong
Pairing is a skill like any other, and it’s entirely possible that I’m just not good at it. I’ve tried pretty hard to get better at it (read a lot about it, watched videos, paired with lots of people, etc.), but so far I’m still feeling the same way I have pretty much always felt. Given the evidence I have available to me, which is mostly the opinions of people I trust and respect, this seems like the most likely case.
Maybe I just haven’t been pairing with the right people
So the thing that I’ve noticed the most as a point of frustration while pairing is that I need to slow down to work with someone else. I really like that feeling of flow while I’m working, and to have to break that to explain something to someone can be annoying. In almost all of the pairing I’ve done I’ve been the more experienced developer in the pair. It could be possible that I’d enjoy the experience more if that weren’t the case. Also, it could be possible that while pairing with less experienced developers, I’m just going to have to trade that thing I like a lot (being in flow) for some other benefits, and that those other benefits aren’t clear enough to me to enjoy that tradeoff.
Maybe it’s just not enjoyable for everyone - like me
I have to consider this as an option. It’s likely that even though a strong majority of the people I respect in the industry enjoy pairing, that maybe I’m just different from them and won’t enjoy it. The problem here, though, is that since the virtues of pairing have become a sort of fait accompli in the industry, being one of the people who just won’t enjoy it will put me at a significant disadvantage over the long term. Since many teams use someone’s enjoyment of pairing as an indicator of how well that person will fit in with a team, if I don’t enjoy pairing, then that leaves me as the odd man out. I really hope this isn’t the case, but I can’t rule it out.
An exception - helping others
So one thing that’s different is that I really do like pairing when it’s for the express intent of helping someone else learn about something or solve one of their problems. I spent a couple months as a mentor at Dev Bootcamp 2 years ago, and I really loved that experience, actually. I would go in for like 2 hours after work a couple days a week and just show their students cool Ruby tricks and help unblock them on some of their gnarlier problems. I also really like playing this same role at work with some of the less experienced developers. I guess it’s just when I’m pairing on stuff that I’m responsible for delivering, that’s where I start to feel like it’s not so fun.
Ok, so I still trust and respect those dozens of people who sware by pair programming as one of the great things a programmer can do. I just really want to enjoy it as much as others seem to. So, here’s what I’m asking: if you have ideas as to how I can get better at pair programming or how I can enjoy it more, please share them with me!
Also, if you would like to pair with me remotely on
some open source Ruby or Elixir stuff, I would love to do that! I use Screenhero
for remote pairing, but if someone wants to do one of those terminal sharing
things like I know some folks do, I’d be up for it! Like the XP folks say, if
something hurts, do it more! So, please do either email me at
devon.c.estes at gmail or message me on twitter (@devoncestes) if you’d like
to pair! Finding a time that works for both folks might be a little tricky
considering I now have an infant at home, but I think I can make it work.
And one special note - if you or someone you know are in Africa, I would especially like to pair! I’ve been hearing some great things about the community there, and I know almost nothing about that part of the world, so I’m hoping to broaden my horizons a bit.