Through my studies of professional pair programmers* I became fascinated with way that the pairs used tools created for solo use in new ways to assist their collaboration. Here we’ll look at the keyboard and mouse.
By necessity the keyboard is the primary token for ‘floor control’ – possession of the keyboard clearly signals who is the ‘driver’ or ‘navigator’. Having only a single keyboard is a very helpful constraint as complications from having both programmers simultaneously editing code are naturally avoided. In his studies of nautical navigators described in the wonderful book Cognition in the Wild, Ed Hutchins describes this as ‘the constraints being built into the tools’ .
Less obviously, the keyboard was often used to indicate an intention to swap roles. The driver often slid the keyboard over to the navigator (see Example 1 below – names changed). However, it is worth noting that whilst relinquishing the keyboard was acceptable, initiating control of the keyboard was very rare. This ‘pairing protocol’ was common across all of the pairs observed.
Example 1 (Anna is navigating, Ben is driving):
Anna: “If you…..go to….”
Ben: (sliding the keyboard over to her) “(You) drive….it’s easier”.
The keyboard also helped the pair communicate. The driver could highlight the object of their conversation without incurring the overhead of switching to the mouse. They could also ensure more accurate communication by highlighting text rather than describing what they were talking about. Finally, this allowed multi-modal pointing (the driver could highlight with the keyboard whilst the navigator pointed with their finger).
The mouse was used as a collaborative resource and control of the mouse was much less formal than the keyboard. It was not uncommon for the navigator to lean over and use the mouse to ‘point’ at something on the screen, rather than pointing with their finger or describing verbally (see Example 2). Presumably this was to avoid the time and cognitive load associated with verbally describing.
Example 2 (Anna is navigating, Ben is driving):
Anna: “….just test it…and that means you don’t have to start faffing about with this….(uses mouse to point at screen)”.
Ben: “Yeah…I know”.
In two of the sessions the pairs placed a wireless mouse between them and used this as a common resource to point at and highlight code during discussions and to position the cursor. I was fascinated by the fact that despite never once mentioning the mouse, these pairs never had any difficulties coordinating it. There was not a single occasion where they both reached for the mouse at the same time and had to negotiate its use.
Next time I will describe how the code (and the IDE) are like a ‘third person’ in pair programming conversations.
*In association with my fabulous supervisors Prof. Benedict du Boulay and Dr. Pablo Romero and with kind funding by the EPSRC.