I had a job interview the week before and I enjoyed the possibility of participating in a mock job day last week. This day was really interesting for me. I could learn a lot about agile methods. In particular I noticed how difficult it was for me to interact in pair programming work.
After that I looked more into agile methods to try to see what I was missing and what I could have done better. The following article: All I Really Need to Know about Pair Programming I Learned In Kindergarten gives some tips on how to work with pair programming. It also states that pair programming needs a little adaptation
I summed up in the following paragraphs the positive and negative aspects of pair programming.
Positive Aspects
- More structured: Pairs usually choose to code at more appropriate positions and have shorter breaks.
- Better Code: during pair programming, programmers come less into dead ends and achieve a better quality.
- Better distributed Flow: Pair programming has another kind of Flow: a programmer can choose to communicate to his partner the current state and let the partner resume coding at that place. Stops in the coding can be thus better minimized. Fun Working: Pair programming is often more thrilling and interesting as lone development.
- Distribution of Project Knowledge: When Pair programming is used, and partners are changed frequently, programmers obtain a better knowledge of the whole code base. Preventing the loss of knowledge assets when programmers go.
- Mentoring: Every one has knowledge that others do not. Pair programmierung distributes knowledge and skills.
- Team consolidation: people learn to know each other better, which improves the collaboration in the team.
- Less Break: Pairs are less frequently disturbed as people working alone.
Disadvantages
- Cost: Advantages such as better quality and efficience need a number of iterations to be able to work correctly, therefore the cost in early phases are higher.
- Finding Team Elements : not every programmer can be used together and getting used to pair programming may need some time
- Autority problem: Who decides the solution to use when the solution are contradicting each others?
- Time pressure: programmers may require more time because of mentoring tasks or to adapt to different code styles and strategies
- Code copyright: it is not always clear who is the real owner of the code.
- accountability: when mistake or copyright violations occur, it may be difficult to decide who is accountable.
- Team size: it is more difficult for larger teams to decide what and how the code should be solved, therefore pair programming is more efficient for smaller teams
- Knowledge requirements: if different types of tasks need to be performed, programmers need to know more.