Over the last two podcast episodes, respectively with Farhan and Kent, we talked a lot about pair programming.
In fact, pairing is one of the core practices advocated by Kent in extreme programming, and is widely adopted in Shopify, too.
This shouldn’t be surprising — all studies about pairing (which go back to the early 2000s) report overwhelming benefits across happiness, growth, code quality, and even overall productivity.
Yet, it is still kinda surprising, in 2024, to hear about teams and people pairing regularly.
Why is that?
Farhan argues that pair programming is the underhanded free throw of engineering. Underhanded free throws have been proven to be better than normal free throws at everything except one thing: they look stupid.
And pair programming does look stupid, to everybody:
💼 To managers, it feels like a waste — it's two devs working on the same code, when they could be doing two separate things.
🔨 To developers, it feels uncomfortable — social interaction is draining. And what about the sacred state of flow?
Nevertheless, several extremely successful companies pair regularly, or most of the time, or even all the time. In some cases, they have been doing so for decades, and they loudly advocate the case for it.
I wrote my first (and only) piece on pair programming in 2021, so it is time for a beefy update, which includes everything I learned over the past three years by talking with tens of tech leaders, trying new tools, and even consulting to companies who were into pairing.
So, this article is my best attempt to demystify pair programming and tell you everything you should know about it:
If you pair already, this is the piece you will send to your skeptical friends.
If you don’t pair, this is the piece that will make you a convert, or will at least make you try.
Here is the agenda:
🏆 Why you should pair program — let’s talk about productivity, knowledge, happiness, and soft skills.
📖 How to pair program — the most popular techniques and when to use them.
⏱️ How to plan for pair programming — what goes into a session and how to make it successful.
🔨 Tools for pair programming — please don’t pair on Zoom. A short list of the best tools to elevate the pairing experience.
❓ FAQs — a greatest hits of the most frequent questions I get about this, including how to allocate resources, whether should managers pair, should you pair remotely, and more.
📚 Resources — further guides, articles, and papers to learn more.
Let’s dive in!