Banner Image
Taking Paired Programming to the Next Level

Taking Paired Programming to the Next Level

Rich Sheridan
Menlo Innovations
January 16, 2024

In the realm of software development, practices that foster collaboration, creativity, and code excellence are worth their weight in gold. One such practice, paired programming, has emerged as a transformative approach. Paired programming refers to a style of software development where two programmers share a single computer and develop together. It is not widespread in the programming industry, but it has started to catch on and become more common. At Menlo Innovations, we have not only embraced it, but elevated it to touch most aspects of our practice, our culture, and our thinking.

The roots of paired programming at Menlo Innovations trace back to my early career as a programmer, right out of college and then graduate school. In my early jobs, I loved the mental challenge of programming, but I found that I kept falling off cliffs in my projects. The teams I was part of kept missing deadlines and delivering poor quality, and the only ones who could fix the inevitable bugs were the programmers who originally wrote the problem code. This led to long nights for many of us. I became concerned that perhaps I wasn’t cut out for this profession. I decided there was something fundamentally wrong with the way the work was organized and I became determined to find a better way. I started reading books on systems thinking and organizational design.

Eventually, I came across a book called Extreme Programming Explained, by Kent Beck. He was a programmer who had faced similar challenges as me, and so he set out on a journey to try to understand why. He realized that in the most crucial moments in his work, which also stood out as some of the best, he often did something unusual – he called over another programmer to watch him work and help him talk through his process, to ensure he was avoiding mistakes. As programmers, we’ve all had those experiences here and there, but it’s not the norm. His idea was, if collaboration like that works well in moments of stress and high pressure, what if we worked that way all the time? The idea of paired programming was born.

At that point, in about 1999 or 2000, I wasn’t sure if this was just a theory or if anyone had started to practice it, but I can tell you that since that day, the teams I have led have practiced it continuously.

Outside of my personal fulfillment issues, what other problems did this solve? For one, it solved the Tower of Knowledge problem. When one person is writing code, no one else knows what they are doing or how they have worked their way through the build. If they are great, they might be a hero programmer, but this is impossible to scale. This often leads to bottlenecks, communication breakdowns, and limited knowledge sharing, as well as tired programmers pushing through a project, even if they are too exhausted to do their best work. This model hinders both individual growth and project outcomes.

Shifting to paired programming helped with all of the above. It has allowed us to scale, to produce more consistently good work, to innovate faster and more creatively, and to enjoy happier, more fulfilled employees.

In 2001, Menlo officially adopted paired programming as a core practice, transforming our landscape. Thanks to Beck’s work, paired programming is not unknown in our industry, but we have taken it to a new level. We pair programmers up every week, and then at the end of the week, we switch the pairs. Each person from the first week’s pairing has to bring their new partner up to speed on the project, or be brought up to speed, and thus the tower of knowledge is shattered. As they create together, they naturally share ideas and write different – and better– code than either one would have written alone. And one of them can go on vacation without causing the whole project to shut down!

Because we are an Evergreen® company, we are equally interested in workplace culture and the employee experience. The impact of our paired work has happily extended far beyond its initial anticipated benefits. Teams working in pairs naturally cultivated mentorship dynamics, with senior developers guiding their junior counterparts. The continuous exchange of ideas sparked innovative solutions that solo work might not have uncovered.

Beyond programming, we have found that paired work is effective at nearly all levels within the company. Our tech people and our quality assurance people all work in pairs. Project managers are a little more loosely coupled, but they do work together. And then in areas like payroll, accounting, and tax preparation, we use pairing strategically, rather than every minute of every day. This extends into leadership; my co-Founder James and I are CEO and COO and we are absolutely paired. We sit next to each other every day, right in the same room as everyone else, and the team expects to see that from us. It’s just who we are at Menlo.

The company’s office space itself reflects our ethos. With no cubicles and an open workspace design, developers sit side by side, working on a single screen. This encourages constant interaction, the sharing of insights, and immediate problem-solving.

Pairing has worked so well and become so fundamental to who we are that we have extended the practice into the recruiting and interviewing processes. Prospective employees are paired during interviews, working together on tasks together. We watch them work together and then switch the pairs up every 20 minutes. We instruct them that their job is to ensure that their partner gets a next interview. It’s unusual, and some people don’t like it; this culture is not for everyone. But we find out right away, as this practice provides firsthand experience of Menlo’s collaborative environment and ensures that new hires are being taught the company’s values from day one.

As technology continues to evolve, and as new methodologies emerge, one lesson remains clear: the greatest solutions often arise when brilliant minds come together, bridging gaps, and creating pathways to success. Menlo’s journey with paired programming is a wonderful example of this, reminding us that the future of development is collaborative, innovative, and unlimited in its potential.

Subscribe to the Evergreen Journal