Gone are the days of ‘traditional’ programming practices, where teams of software developers might have restricted their communciation to once weekly meetings and worked towards yearly release dates; we are now accustomed to a far more iterative process: daily standups, TDD and continuous integration and/or deployment. This iterative process is of course part of the wider set of agile programming practices.
At Lambert Labs we take our agile programming practices seriously. As part of this we regularly use pair programming as a way to ensure that we are working efficiently and effectively as possible.
Pair Programming Workstation Setup
The workstation setup for pair programming is important. If two developers are around one workstation for significant periods of time, they might get uncomfortable. This is why we use ‘dual workstations’ for our pair programming. Our dual workstations are made up of two desks and four monitors, but only one computer – the two monitors on the desk with the computer are duplicated to the two monitors on the desk without the computer. This means that both developers can sit in comfort while pair programming!
Setting up our workstations requires HDMI splitters (we use something like this). Our current desk of choice is the IKEA Skarska Standing Desk.
Code exposure: pair programming helps developers of all levels of seniority get exposure to different parts of the codebase. This is really important because it helps developers understand the overall system that they are working on and also helps provide continuity when a developer with ownership of a section of the codebase is on holiday or otherwise engaged.
Code quality: if two developers are looking at the same piece of code during development then this is similar to having an extremely thorough review process (think how often a reviewer spends as long reviewing code as the developer spent writing it – very rarely!).
Focus: yes, pair programmers might have a chat and a giggle, but what they won’t do is things like check social media, check their emails and surf the net. In this case, working together brings more productivity.
Morale: working together is fun, and it boosts morale! The life of a developer can at times be unneccesarily quiet. Pair programming discourages deathly silences and encourages collaboration.
Fewer bugs: working as a pair means that fewer bugs creep into the code base. This reduces time spent debugging at a later stage.
Lack of ownership: developers don’t always feel that they have ownership of a section of the codebase, and feel as though they are getting pulled in multiple directions.
Lack of synergy: if two developers don’t ‘click’ when they are working together then the relationship might not be productive – in some cases this is just human nature!
At Lambert Labs we find that the benefits of pair programming hugely outweigh the drawbacks. It improves our productivity and standards, and we will stick with it moving forwards 🙂