Saturday, September 30, 2017

Pair Programming

Pair Programming is an agile technique of software development involving the artistry of two programmers working closely together in order to facilitate knowledge transfer between them and increase the software quality in the process. Both parties have distinct responsibilities such that when one code, the other party acts as an observer and counter checks the coding.



Various Pair Programming styles include:

The Grant: Commander or Backseat driver; the process operates such that the junior pair is the driver while the much informed colleague would either take the commander or backseat.

The rally: Both the pair members have good technical know-how and a deep understanding of the programming processes. They know each other well and work in tandem, much like a rally driver works together with his navigator.

The tour: One pair takes control of the whole process guiding the other on several programming aspects. It can be related to a driver guiding a navigator who has lost control of the navigation.

Disconnected pair: One pair proceeds even after the other one is on a complete shutdown, such that, while the team might have started on the right foot, somewhere on the way one of them could lose focus and the other will hence assume the driver and navigator’s role to complete the programming process based on his expertise to do so. 

Benefits of Pair Programming

Previous studies indicate that amongst the most effective ways for improving the quality in programming is the coding review methodology. The quality check is often conducted before, during and after the coding. As a result, quality attainment is achieved by removal of operational impediments such as logical errors. Furthermore, the process infers a chance to generate better application software. The pair can also explore other prospects which could lead to new solutions. 

On the other end, individual programmers operate by using the codes devised by other experts. Thus, they may not have an opportunity to do a thorough audit of the systems either for lack of expertise or any other reasons. 

Information is essential to humanity. Bert Markgraf explains that the exploitation of information at organizational levels should be exploited from different perspectives. 

My take on pair programming is that, through the process, the pair programmers will be able to learn from each other in terms of technical skills and work experiences. Some of the exchanges the team may acquire from the process include domain operations, code basing or structuring, coding frameworks such as (usage, discovery, and common code contributions from either the third party or internal sources), and also the programming language and standards. In this perspective, programmers are versed with both new and additional skills which hence boost their work efficiency.

Considering that the pair tactic facilitates a trust working environment, it would be easy to attain teamwork through team building. The team building aspect is orchestrated with a consideration that the pair consistently works together. 

Setbacks of Pair Programming

Regardless, of its benefits, some software developers still don’t take it as a good idea. Some programmers prefer working independently as opposed to being in a group with the excuse being they don’t enjoy conceptualizing a loud or rather they require some time to go through the codes and also reason by themselves.  

The underlying challenge is ordinarily with those programmers with poor communicational skills. Thus adoption of this method could negatively impact on quality of the end product. Additionally, constant communication breakdowns could lead to loss of time, and also undermine team building or teamwork. For the solo programming, a balance can be bridged to enable a teamwork environment, through activities such as labor distribution or understanding one’s field of specialization.

Considering that pair programming requires a good synchronization of the pair members, whereby they have to begin and stop engaging within and at the same moment, and have a break together including the day-offs together, the absence of either party to the pair would startle the process. Moreover, the replacement of the missing partner may result in a lot of time wastage since the replaced partner would require some training and adjustments to relate with the existing partner. 

How companies can leverage Pair Programming for knowledge transfer

In this aspect, the concern of companies relying on pair programming to influence the transfer of knowledge between developers remains relevant. The process of Pair Programming by itself entails an interaction between two developers of an organization. As deduced from a review by Franz Zieris and Lutz Prechelt, Pair programming’s dependability is highly inclined on the viability to promote the comprehension of technical know-how on attaining certain aspects in application development such as code sequencing. 

Gerardo Canfora and his team acknowledge that companies can achieve a strategic fit by sharing the Software engineering process knowledge amongst its developers. Regardless, team Gerardo underlines that the biggest impediment to the whole process would only emanate from personal abilities or attitude to undertake in the exercise. The fact that either party has to conversely explain to each other, shifts this whole conversation to the scopes of the success of the entire process of knowledge transfer which is mainly built on effective communication acclamations. On that note, the leverage on pair programming to deliver knowledge transfer amongst developers should be considered on presumption such that the process can act as training, information sharing, and team building affairs for the involved pairs. 

Conclusion

Pair Programming presents an interesting approach to increase software quality and knowledge transfer between developers. Both parties need to trust each other’s abilities and must be able to communicate with each other at an equal level in order to leverage the full potential of this technique.

Sources