Introduction

This article will give you the clear and knowledge about the concept of “Pair Programming." We may hear this terminology of pair programming, however due to some resource constraints and other factors of cost and time related stuff, we avoid this methodology.

Why people don’t want to take up pair programming, is all due to the myth they have or the lag of clear statistical data.

In our daily life we have crossed the concept of pair programming and also realized the success factor ratio of the same, even when it comes to software development process we are not taking things to the next level.

In this article I have explained the benefits, a few sample of successful pair programming not only in software industry but also in the other industries and also recommended the same.

Please go through my thoughts and share your views, let’s make things better.

What is “Pair Programming”?

This is a new scenario. Just imagine that a developer of any technology is working along with the Tester side by side in a single computer. Both the technologists are working together for achieving the same task having the motto of the target achieved with one person developing the code, while the otheris reviewing each line of code [LOC] as it is coded by the developer to make a bug free quality application development.
 

Do you have any Examples?

The Tester and the Developer are collaborating on the same design, pattern, algorithm, coding and quality analysis to make a better software production, this activity is called "Pair Programming".

Yes! It’s the common thought that itches your brain, How is this possible and will this be achieved in my project where we work on an adhoc basis of production bugs and enhancements?

 

(Source: buzzfeed.com)

The answer for your question is YES, this type of Pair programming is achievable and this is also followed by some of the organizations who are more concerned about the Best of Quality [BOQ] and also Time is a valuable constrain where a good practice of pair programming will sure increase the quality and reduce the developer time for Re-work and Tester time in getting knowledge about the product to be tested.

Wher did this concept of “Pair Programming” come from?

Pair Programming is an agile methodological software development technique in which the different background persons, i.e. Programmer and Quality Assurance Team member, work in a single workstation. This approach of programming with a tester is definitely a productive approach and it supports the Tester to understand what is being coded by the developer and how he is logically approaching solutions to solve the issues in a better manner, so the Tester has rights and alsoin the early stages can  suggest for some approaches which may avoid the vulnerabilities during the coding stage itself.

When a Tester works simulta
neously it will help him to drive the developer along with his test cases and scenarios that are to be tested and this will definitely help to spot bugs at the earliest possible stage of development.

How will this help me or my project?

This kind of programming makes you feel that it has great hurdles. Tester is ignorant of Technology used to develop or the Code based knowledge, so the inputs from a Tester would be very minimal. It's not necessary that all testers should have fair knowledge in the Technology or coding standards however the tester has the tendency to contribute for perfect development at the early stage who can think in all scenarios and possibly break down uncertain code that is developed by the programmer. This will surely help for the better possible approach andis an easy way of testing and confirming the functionality is approached as expected.

When I just discussed this with a few of the developers and Testers about this approach of Pair programming, it made them feel that it would not only enhance the ability to code for a Tester but also guide the developer to code in such a way that it passes and doesn't break for any negative scenarios of Testing.

This methodology brings the collaboration between two poles of the software industry together and achieves the target as a Team, which will be more interesting, a new experience of knowledge sharing and also understanding the clear picture of real happenings in the surface.

It will make the development process more stable, process oriented, having the other person for parallel review which may help to solve the bugs/problems instantly , avoid rework and also understanding the issues on fixing them first hand before the QA cycle. When the code is justified as consistent and durable the amount of time spent in testing and fixing issues will be drastically reduced in Pair Programming.

On the other hand, someone looking over the shoulders and posting questions at necessary places will actually confirm that what is intended to do is going correctly, which will assure the better successful solution based approach.

In most of the projects, once the development phase is completed the codes are integrated to QA server and Tester will start testing based on the client requirement documents or get the knowledge and QA support from the Business Analyst or Developer Team when they cannot understand the exact functionalities and approaches defined in the documents.

This kind of process is followed mostly where it also works well in most scenarios, there are some drawbacks in these cases because the developer has coded having some understanding from the documents supplied along with the clarifications discussed in their Team or with the client. Tester will also be driven in the same thought of the developer which may leadthem  to miss out on a  few of the occurrences which may cause codeto  break down in real time scenarios and this breakthrough is surely going to affect both the development Team and Testing team and this can be avoided in pair programming.

The developer and Tester have different thought process and experience also differs, so when we group them at the early stage of development they both work together in same thought process and this helps surely for the better productivity to project.

In Agile process, it is told that a Programmer can work as a developer and vice versa, which means that the dependency of the team members is reduced. In this model the daily scrum call will really help to get the fair knowledge of what is happening in the project both on development and testing phase where the developer, QA personality and other team members are the main participants of the daily call.

In some Projects for better Agile methodology and maintaining code consistency, the developer is working with Tester simultaneously and the Tester prepares the Test Cases and the developer will code as if that application match the requirements and also satisfy all the test cases of the Tester and then integrated to server for QA cycle, where the "Fail" rate of this approach is really minimized to the extreme and quality is increased.

Will this really work? I doubt it!

I respect your thoughts, because no one is ready to invest even a single resource or minute of time and take risks, however now the industry is looking for the “Full Stack Developer”, who can do everything right from the role of Business Analysist [BA], Architecture Designing, Development, Testing and even deployment and support, Why to use two resource in the single task or process.

I have some scenarios which I would like to share as the best outcomes in the other industries, and then it’s your wish to try the PILOT of this pair programming in your project.

When one time my doctor, who is also my friend, needed to do an Open Heart surgery for his patient who was very critical, even though he was very confident about the experience and result of the operation, he also had one more surgeon who was supporting him during surgery, since the critical illness and also the value of the operation is more compared to the other things. When the operation was successful what they explained was not just the part of one surgeon alone, it’s really they both worked together to make it a success.


(Source: theguardian.com)

Even every time when I travel in a flight, I will thinkthat even though the technology has gone to its peak and also there are auto pilot modes available in the air craft, even then the air industry needs to have two pilots always, where the co-pilot has less responsibility than main pilot, which I have heard from some people. Once when there was some turbulence due to bad weather it was both pilots who landed the flight without damage to any traveller’s or the aircraft and its crew.

 
(Source: buzzfeed.com)

If you feel this pair programming is just a waste of Time & Cost, then you are missing something, yes missing something called “Best Quality” of software [This is purely my point of view], I also suggest this concept will improve productivity which is dependent on the project, Product/Application and client.

What are all Hurdles of taking up “Pair programming”?

The Pair programming approach also has some practical difficulties, where the intelligent programmers may use the code reusability and make the available assemblies to achieve their task with much fewer lines of codes, which may confuse the Tester and also have to depend on the developer to get clarification over it. If not the developer may be on his track where the Tester feels  buggy code and gets confused,  but when the actual implementation is done both will have a clear view over the development and also on all possible scenarios that are achieved. 

Conclusion

I in my personal thought and also from the views of both Development and QA Teams feel this kind of process will be different and also increase the productivity and minimize the repeated Bug Fixing and Re-Testing process. Pair Programming will be better suited for the agile methodology and also for Traditional Water Fall model. 

Is your project using Pair Programming? Let me know about your experiences by commenting below.

Next Recommended Readings