What is Pair Programming?

Pair-programming is a software development approach that is being adopted in both industry and the educational field. There is emerging evidence that the output of a pair is superior to the sum of the outputs of two individuals. That is 1+1 > 2.

How does it work?

Pair-programming is two programmers working side-by-side, collaborating on the same design, algorithm, code or test. One programmer, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the navigator, directs the work of the driver by identifying tactical (syntactic, spelling, etc.) defects and thinking strategically about the direction of the work. Because the two programmers regularly switch roles, they work together as equals to develop software. On demand, the two programmers can brainstorm on any challenging problem.

What benefits does it provide?

In the educational field there are many benefits. There are several research projects studying the effectiveness of pair-programming for introductory programming courses. Students involved in the research say that they are more confident in the quality of their finished work and that they have had more fun in the process [1]. This enjoyment accounts for the increase in the retention rate of students in the course. In one study, the percentage of students that completed the course increased from 75.9% to 92.4% when pair-programming was introduced [2]. In addition, instructors report that students’ communication skills improved as a result of discussing their design and their opinions with their partner. This formal research is largely confirmed by informal surveys at University of Waterloo.

Concerns You May Have

“What if my partner isn’t at the same ability-level as me?”

The pairing algorithm we use takes ability into account, tending to match students with similar abilities. However, as this is not the only criteria and ability is an inexact measure, you may be paired with someone with a different ability level.

You might think that different ability levels in a partnership will prevent pair-programming from being effective. For example,
“I’m a strong student and I don’t want to be held back by a weaker partner.”
“I’m a weak student and I don’t want a stronger partner because he/she will take over and leave me out of the process.”
“I’m a weak student and I don’t want a stronger partner because I will let him/her down.”

These are valid concerns. However, both members of these partnerships have something to gain from pair-programming. In one of the research projects, the average assignment mark increased by 20% when incorporating pair-programming [2]. Even when they took the top 50% of the marks from the non-pairing group, the pair-programming group still had an 8% higher average on the assignments. The point was to show that even in the case where the strongest 50% of the students paired with the weakest 50% of the students, the marks for the pair-programming group were still higher.

There are other benefits to an unequal pairing. It is very advantageous to have partners with different backgrounds and views contributing to the work. The work produced will incorporate the best of both perspectives. For the stronger student, he/she will gain a more solid understanding of the material by answering the questions of his/her partner. For the weaker student, it may provide an environment where he/she feels more comfortable asking questions that were not asked during lecture.

For these benefits to occur, it is very important that both members of the pair stay engaged, actively following the work of the other.

How will pair-programming affect my exam performance?

This is really up to you. If you adopt pair-programming as we have described, the research shows that it will have a positive impact on your exam performance. The initial statistics in one research project showed similar final exam averages for the paired versus non-paired groups [2]. However, the researchers noted that since the withdrawal rate had significantly decreased, there would be final exam marks for students in the paired group whose counterparts in the non-paired group had dropped out. To take that into account, they took the final exam marks of the top 75% of the paired group and the result was an increase of 8% over the non-paired students.

However, if you do not fully participate in the described approach, you could be putting yourself in jeopardy when it comes to exam performance. If one person of the group completes the assignments or the assignments are split in half for each to do some work, you will be missing important learning which will be evident when it comes to writing the exam. Do not sell yourself short!

References

There are numerous sources of additional information on this topic. The following papers are excellent introductions. There are also several websites on the topic including http://www.pairprogramming.com. If you have additional questions, ask any course staff.

How to Avoid Problems

There are problems that may arise in a team situation. Statistics show that up to 25% of teams have some problems. Many team problems can be avoided by discussing important issues early on. Other techniques for successful team work are presented below.

Be open

Be willing to praise each other. When criticism is necessary, frame it as constructively as possible.

Communicate

Listen carefully, don't interrupt, ask for clarification if you don't understand, and feel free to disagree.

Get to know each other

Discover each person's likes and dislikes, strengths and weaknesses, work habits, and motivation.

Encourage participation

Elicit the opinion of a silent member. Often team members have opinions — they just want to be asked!

Compromise

Make decisions by consensus, not unanimous consent; this involves compromise.

Stay on schedule

This puts less pressure on the team. Where there is less tension, there is less conflict.

Make time

Schedule times to meet and work together. Block out the time in your schedule.

Common Problems and Suggested Solutions

In spite of your efforts to avoid problems, you may still find some difficulties working with your team. Some very common problems are listed below, along with a number of possible solutions.

If you encounter any problems with your team members, you must not hesitate to discuss them. If you don't discuss small problems right away, they only become larger problems later on.

Problem : One team member is late for a meeting, or does not arrive at all.
Solutions: Talk about the situation at the earliest possible moment. Find out why they weren't there — they may have had a very good reason.
  Proceed with your part of the work as scheduled.
  Confirm meetings the day before the scheduled meeting.
  Reschedule the meeting if time is inconvenient for the other team member.
  Explain that team members should call if they cannot attend.
  Schedule an additional meeting as soon as possible — don't let the work suffer.
  If one team member has an answering machine, use that as a central repository for messages.
  Remind them that if they don't show up, their participation mark will suffer.
Problem: Team members can not seem to agree.
Solutions: Determine if the decision is important enough to argue over.
  Make decisions by consensus, not unanimous consent; this involves compromise.
  Resort to third party arbitration; consult other students or instructors.
Problem: A team of passive people may have problems making decisions.
Solutions: Take turns at decision-making. For example at today's meeting I will make decisions (as long as you don't strongly object).
Problem: Brighter students do all the work because they can do it quicker.
Solutions: The other students should explain that they want to do it and want to learn. They should not let the others take over.
  The brighter students must be willing to accept a delay (tolerable within your schedule) in order to allow the other members to learn the concept.
Problem: One team member is too critical of your work.
Solutions: Review the rights and responsibilities of delegation of work with your partner.
  Consider the possibility that the other person's criticisms are valid! Get a third person's opinion.
  Decide if you have followed guidelines set out.
  For the future, discuss interfaces and guidelines more explicitly.
  The problem may be a result of a communication problem. Make sure that everyone is clear. You may use a technique such as, "I tell you, you repeat it back to me" to make sure that everyone is clear.
Problem: One team member is not doing their share of the work.
Solutions: The member may be overloaded. Review the delegation of work and possibly assign more to the other partners.
  Discuss the situation with the course instructor.
  Remind the team member that they will be assessed on their participation in the team effort.

Administrative Details

Pair Assignments

Students will be assigned to pairs in Practicum. For weeks 1 and 2, these pairs will be used only in Practicum; labs and assignments will be done individually. Starting with Practicum 3, students will be paired for practicum, lab and assignments. Pairings will generally be for one week.

Peer Evaluation

Students must complete an evaluation of their partner for each assignment. The evaluation will be web-based and linked from the assignment web page. It must be submitted by the assignment due date/time. Failure to complete an evaluation of your partner will result in a mark of zero for your own peer evaluation.

Absences

If a student's partner is missing from practicum:

Students will not be repaired. Those without a partner will work with the others at their table or other partner-less students during practicum so that they are not working alone on the problems. Any pairings that may occur at this time, so that students are not working alone, are unofficial.

If a student's partner shows up to the lab after missing the practicum:

The students will complete the assignment using the pair programming process. Each partner will evaluate the other.

If a student's partner is missing from the lab:

Students will not be repaired. The partnership is officially split and both the present and absent partner will complete the assignment individually. The student who was absent for lab will receive no mark penalty provided he/she presented a valid excuse to the ISC. See below for the description of a valid excuse. Neither partner will evaluate the other.

Excused Absences:

An excused absence is for co-op interviews, illness, and similar unavoidable circumstances. An absence is not excused unless the ISC (Carrie Howells) and the partner receive e-mail notification before the absence occurs.

There will not be a mark penalty for either partner.

Unexcused Absences:

Unexcused absences result in mark penalties for the partner who is away.

Pair Programming Peer Evaluations:

You peer evaluation mark for each assignment is based on whether you completed the evaluation or not and is not based on what you wrote in the evaluation. This is to encourage you to answer honestly so that you end up working with someone on the next assignment who is more like yourself.

Peer evaluation marks will not be posted due to confidentiality reasons. However, we will post whether or not you have qualified for peer evaluation marks (i.e. you submitted an evaluation for your partner).

Submissions

It is the responsibility of both you and your partner to submit the work that you created. It is a good idea that as soon as you complete the assignment to submit your files and not leave this task up to your partner. If you are ever required to submit work on paper, it is also a good idea for both of you to walk over to the drop box together to submit your assignment. Leaving submitting your work up to your partner is not a good idea and ultimately, if your partner does not follow through, you will both be penalized.

Acknowledgments

The material on avoiding problems was developed by Jack Rehder with the assistance of Bill Shalinsky and the other members of the TRACE office.