CPE 103 Pair Programming Administration
Rules and Procedures

Basic Procedures

Remember, you are being allowed to complete your programming assignments and labs with a partner ONLY as long as you do it following the principles of “pair programming” as described in the Fun with Pair Programming video. Each partner should take the “driver” role roughly 50% of the time the pair is working together. The object is to work together, learning from each other, not to divide the work into two pieces with each partner working on a different piece.

This rule is inviolable: You may not touch the code without your partner.   This means you can't alter a single character of your program unless you are working as a pair.   If you are caught working alone on your code you will be given a zero for the assignment.

You may read the problem description individually.  You may think about how to attack the problem when you are alone.  But you may not write down anything or do any work on the computer unless you are both working together.  This means two people sitting at one computer.

You are free to select any other student from your class to be your partner. Make sure that both names appear on all work submitted by the pair.  You only need to submit your work under one person's username.

You should make a reasonable attempt to remain with the same partner for the entire class. Research studies have shown that it can take several weeks for a pair to “jell” and begin working well together. Changing partners interferes with this jelling process.

Partner Coordination

You will choose or be assigned a partner to work with on the course projects.  This work is to be completed outside of class, so it is your responsibility to schedule adequate time when you can meet to work on the assignment together.  The instructor suggests you write down all scheduled meeting dates/times/places in your lab notebook so there is documented evidence in the event someone flakes out. 

If someone decides in advance they want to work solo on a particular assignment, inform the instructor and he will try to find a partner for the other person.

Coordination Breakdowns

If your partner doesn't show up to a scheduled programming session you have a coordination breakdown.  In most cases you should wait for the tardy partner, perhaps delaying, postponing, or rescheduling the meeting.  But if you are up against a deadline, you may be in a situation where there is no other time remaining and the only way to complete the assignment is to finish it alone.  If you decide to proceed alone, you have abandoned pair programming and the assignment becomes a solo assignment for you, with all the restrictions that implies.  If your partner arrives late ... too bad.  You must proceed solo! 
Otherwise you MUST reschedule with your partner at a later time.  Unfortunately this may mean you suffer a late penalty. 
If you feel you have been abandoned and decide to go solo, be sure to save a copy of the team's work at the time of the breakup.  This way your partner has something they can submit that documents the work they contributed to.

If you decide to break up the pair, obtain a new programming log and cross out "Pair" and write "Solo."  Then proceed to complete the log as usual.


Success Tips

When first starting to work with a new partner, have a discussion about how you like to work, your personal problem solving style, introvert/extrovert, etc.  Try to come to agreement about how to make pair programming a success.

If the navigator starts to get bored, swap and let them drive.

Compromise.  The solution doesn't always have to go your way.  If you never consider your partners ideas, you're not pairing.

Discuss alternatives rationally.  If you think one approach is best, argue for it rationally by listing the strengths and weaknesses.  Then evaluate other approaches in the same manner.  Don't just raise your voice and say "I know this will work!"

Talk a lot.  Talk about what you are doing as you drive the entire time.  If 60 seconds goes by without saying anything, you aren't talking enough.

Ask.  If you are navigating and you don't understand what the driver is doing you must ask.  You can't navigate if you don't know what's going on. Think: "If I was handed the keyboard right now, would I be able to continue immediately?"  You are helping to make the work more collaborative, so you have to contribute. 

Find a favorite breath mint.

The navigator can keep a "design rationale" in your notebook.  This will record important design decisions you made so you can refer to it if you get confused.

Balance!  Share driving.  Talk a lot. Ask questions. Be patient while your partner catches up.  If you're confident, practice humility.  If you're shy, practice assertiveness.

Take breaks.  Frequently.

Stay engaged.  Both partners own everything.  Be alert and questioning.  If your partner replies "Trust me, this will work", that's not an adequate response.  Insist that everything is crystal clear to both people.