Have you ever thought about the people behind your favorite application or website? Developing a whole site takes an entire team that is dedicated to collaboration, open communication, and well-written code. Once designers and strategists brainstorm and come up with ideas, it is the job of the developers to make those ideas come to life.
As you may know, pair programming is an agile development methodology in which two developers work together on the same workstation. As both developers focus on the same line of code, one is responsible for coding while the other one reviews it, and then regularly switching roles. It is similar to flying a plane, in which one person is the pilot and the other is the co-pilot, who ensures the pilot is always steering in the right direction.
Here at Manning, we are big believers in the agile development methodology. Our developers team up and program in pairs during initial code, or to resolve development issues or application bugs. Pair programming is a practice that is gaining popularity amongst coders, but we’ll explain what it entails and how beneficial it is for the projects that we are working on.
Pros vs Cons of Pair Programming
There is a lot of speculation about pair programming and if the advantages outweigh the disadvantages. Because pair programming may not be fit for every development project or scenario, here are a list of advantages and disadvantages:
- Productivity – pair programmers spend approximately 15% more time programming than they would alone
- Quality – small bugs are caught quicker and issues are resolved faster
- Satisfaction – developers are more confident in the code written with someone versus if they wrote it alone
- Learning – different ideas and knowledge are shared between the two developers
- Collaboration – pair programing enables team members to resolve problems as they code instead of going back through the issues
- Cost – even though it’s typically more efficient, having two developers coding together is more expensive
- Socializing – developers can easily get into socializing instead of programming
- Distraction – developers get distracted easier working under the pressure while someone is watching them code
- Skill Set – sometimes developers are not good matches as they have different skill sets
- Getting Along – sometimes coders work differently and putting aside egos can be tough
As you can imagine, it is difficult to translate those bullet points into a real world situation since every developer is different, and dependent upon every project they’re working. We find pair programing useful in more complex cases where thinking through a solution is needed, and we often find that the best solutions require input from more than one developer.
Variations of pair programming
Because one advantage of pair programming is the opportunity for learning, here are a few variations in the types of developers:
- Expert-Expert – this is the obvious choice for highest performance and great results
- Expert-Novice – this pair is set up for learning possibilities or training
- Novice-Novice – least optimal for results, but much better for learning and having two novices working together rather than an individual
Real world usage of pair programming
Numerous tech companies like Pivotal Labs, Hashrocket, Braintree, Facebook, Square, Twitter and Groupon have implemented this agile development practice. They use pair programming to secure stability of their code as well as improve quality and efficiency. Instead of revising the code all at once, there are two people working on it to ensure that it is written correctly—it is sometimes safer to trust two developers rather than one.
Pair programming is also well known in IT-focused universities. Professors usually pair their students for either individual tasks or full semesters. Similar to working in a group, they want to take full advantage of the learning benefits from pair programming.
Nowadays, you could also observe smaller boutique studios, like Manning, using pair programming to provide their clients with better results. Our in-house development team would rather work together on harder issues in order to be more efficient. This is beneficial for clients because it usually expedites the process of creating web sites or applications, and lessens the time spent on fixing programming snags. Especially in a profession where you constantly need to be practicing your coding skills, we prefer pair programming because it allows our staff to keep each other informed on best practices.
We believe that the best solution is to give freedom of choice to developers. They don’t have to be forced to pair program, but they have that option if it is necessary to do so. Our team of developers typically knock out all the simple coding tasks alone, but when challenges or issues come, they usually team up to get better results—which translates to better value for our clients. Let us know if you’re interested in using us to develop your next website!