Pair Programming is in our DNA
By Dumitru Lupanciuc
At TribalScale there are many processes put in place that help us uncover the best solutions to the challenges we tackle every day and excel in our work. We are always coming up with new ideas, trying, implementing, and iterating on them, and as a result, we drive innovation in every aspect of our work.
“But we don’t just pair our engineers, we pair our designers, we cross-pair, we pair with entrepreneurs”
We practice Extreme Programming (XP) methodologies at TribalScale, and pair programming is at the core of our engineering process. Below, I share some of the key aspects of pair programming and explain why it is so important to us:
Quality of the Code
Quality of code is a very important aspect of any project. Poor code quality increases both the time to market and product maintenance costs, it reduces performance, and therefore overall user satisfaction.
One of the biggest advantages of pair programming is that it allows developers to achieve much better code quality. Collaboration between two engineers allows them to think out loud, share ideas, and come up with the best possible solution. Often, during this process, engineers start with two different ideas and after discussing each in detail, they end up with a third and better solution. By challenging each other’s ideas, we can come up with the best solution as a team, and as a result, our code quality is that much better. Pair programming also helps us come up with solutions that require less code which in the end, makes the project less error-prone, less complex, and more maintainable.
At first sight, pair programming may seem to be less efficient. However, in the long run, it proves to be the opposite. Paired engineers start and end the workday at the same time, which creates discipline as developers strive to be on time so that their pair is not left alone. During the work day, engineers tend to work harder, they avoid Internet browsing, reading the news, or accessing social networks that usually interfere and take up development time. Our pairs also frequently switch between the driver and navigator roles, which allows us to maintain high development speed and great product quality.
With pair programming, the work never stops, even if one pair member leaves for a meeting.
Flexibility and Maintenance Through Rotation
As mentioned, part of the process is pair rotation. This helps engineers roll on and off a project without greatly disturbing the development speed, which as a result, helps decrease the costs of switching developers. As there are typically multiple projects going on at once, rotating engineers between projects allows for knowledge transfer, and engineers can develop extensive background context on each project. On the company level, pair programming gives more flexibility for the management team to allocate resources in an efficient way.
Working as a team and tackling challenges together increases happiness and overall satisfaction of the engineers. Engineers look forward to coming into the office and working together on new challenges. Numerous studies also confirm that engineers are happier and more confident in their solution when they pair. Pair programming is also less tiring as the driver and the navigator can switch throughout the day.
Communication is a great feature of pair programming. Both engineers are continuously discussing their work and the solutions they apply throughout the day. All of this back and forth discussion helps improve the communication skills of the engineers. I have heard, and on many occasions, clients and product managers compliment TribalScale engineers for their abilities to communicate and express themselves.
Pair programming and rotation allows the engineers to learn from each other. This helps spread development best practices and patterns across the organization, and the whole engineering team will grow together. It also helps the engineering team, in a relatively short period of time, achieve higher levels of knowledge, which translates to results. Pair programming improves onboarding of new employees and brings them up to speed in a shorter time too.
As a result, if practiced right, pair programming brings enormous benefits to the development and engineering practice of an organization, which is why it’s so core to TribalScale.
But we don’t just pair our engineers, we pair our designers, we cross-pair, we pair with entrepreneurs through our Venture Studios, and we pair them with Fortune 500s. Pairing is simply in our DNA, even our name is a pair: TribalScale. Now, we’ve rebranded and have a bold, fresh brand identity that fits with our paired approach to innovation.
Dumitru is an Agile Software Engineer at TribalScale with an extensive background in Android development. In his previous roles, he was Lead Android Engineer for Video on Demand apps at Bell Media and an Agile Engineer at Pivotal Labs.