Pair Programming – Does it really work ?

             “Let’s do some pair programming!– this phrase may seem to be discouraging. If you believe that working solo is the best way to  achieve great focus in software development ,then you should change your opinion. You probably think about programming as a creative process – sadly this is not relevant for every task. What if you were working on bigger project? Interesting and creative core part gets completed quickly, but what is left is as boring and extremely repeatable.Pairing is not suitable in every situation . It works well in standard team software development,  it  produces good results and strengthens team spirit. 

          The most important argument is that pair programming gives us a lot of fun, knowledge sharing and motivation as in programming.  No coder should have to reinvent the wheel. But improving it is a whole other story. With a technique like pair programming, you can revolutionize how you collaborate and innovate while reducing errors. Every claim mentioned above is probably true. We can all agree with them. Now it’s time to ask yourself an extremely important question: Have I ever tried pair programming? If the answer is no – you should stop reading and try it.

 

Pair Programming

Pair Programming –  Descendent  of Agile Development

 

Agile

                           Pair programming is an agile development technique in which two programmers work together at one workstation.The Driver, writes code and the Observer or Navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.While reviewing, the observer considers the “strategic” direction of the work, coming up with ideas for improvements and future problems to address. This frees the driver to focus all of their attention on the “tactical” aspects of completing the current task, using the observer as a safety net and guide. Talking about Pair programming one should be familiar with its master “Agile Development” that is practised in almost every software development process.

                    “Agile Development” is an umbrella term for several iterative and incremental software development methodologies. The most popular agile methodologies include Extreme Programming (XP), Scrum, Lean Development and Feature-Driven Development (FDD). While each of the agile methodologies is unique in its specific approach, they all share a common vision and core values. They all fundamentally incorporate iteration and the continuous feedback that it provides to successively refine and deliver a software system. They all involve continuous planning, continuous testing, continuous integration, and other forms of continuous evolution of both the project and the software. The importance of agile  is that it  focuses on empowering people to collaborate and make decisions together quickly and effectively. Pair programming takes collaboration to the next level for developers.

Does It really work ?

                The process of pair programming has a great deal of advantages. Primarily, it is a smart way to share knowledge and bring together the expertise of different developers. The constant conversation between the developers ensures that they learn new concepts, and evolve in their thinking with each other’s influences . In the process, the developers increment personal growth. When a new developer joins the project and pairs with one of the old ones, the extent of knowledge transfer can be tremendous. Pair programming facilitates the best of expertise and the greater combination of multiple talents. It is an intensive process that allows both to think together until there is a solution in place.  Therefore, there is a strong degree of focus in one  place.

                It also seem to increase concentration at high levels.This isn’t particularly scientific, but it seems to me that, people working have a lesser tendency to procrastinate or get distracted. This results in shorter development times too.  It’s a good training ground for large software projects because only very little software is written by one person.

              Pair programming teaches you a lot of the soft skills you’ll need: tolerance, respect, understanding and responsibility. Review process comes builtin under development since errors are easily identified.  The ease of correcting errors, mistakes and bugs is at hand with pair programming. This is because,  a solo programmer may  face a block, and finds himself challenged with the lack of a solution. In pair programming, there is an obvious source of help ,  and hence the solutions are usually faster and easier . On the flip side, of course it is  not hunky dory.

Why doesn’t it work at times?

             Pair programming has some limitations. There are many disadvantages to pair programming. It is an intensive process and starts from a prior platform of minds meeting each other. The locking of horns owing to ego can be a dangerous thing to the task on hand. Ego may force the driver and observer dynamic to wither away, as the observer’s suggestions may not be taken in the right spirit. The horns owing to ego can be a dangerous thing to the task on hand. The availability of the individual programmers is another issue  related to pair programming.

The available time of both will not coincide. This leads to interruptions in the smooth flow of the process.Skill disparity  is one big potential problem. If the partners are of completely different skill levels, you might have one programmer doing all the work or constantly tutoring the other.When there is a switch between the observer and driver, there should be an approach of empathy in the new roles. Synchronization should exists between driver and observer.

Conclusion

           The end result in a pair programming development process really depends on the process itself. While it has its own advantages and produces results if it succeeds. Pair programming works very well when  programmers share great rapport . Ego has no room to play in a pair programming project, especially seeing as how there has to be some apparent form of cooperation in the process.Hence ,the adjustment period from solo programming to pair programming is like eating a hot pepper. You will not like it when you use it for the first time. However, the more you eat it, the more you like it.

References

  •  https://en.wikipedia.org/wiki/Pair_programming
  • http://www.extremeprogramming.org/rules/pair.html