Format: Pair Programming Style


Pair-programming style

Participants pair up to boost their productivity, efficiency and quality, to learn, and to have more fun at work.  Can a remarkably useful format for software developers work as well for other professionals?

Work tasks it's good for: Software development.  Possibly: writing/editing, creation/rehearsal of speeches/presentations, architecture, accounting, audio production, video production, law, design, art, cooking, others?

Long description: The session is broken into three parts: an introduction period and two work periods (Phase 1 and Phase 2).  After briefly saying what they're working on, people team up in pairs and spend Phase 1 with person A taking the role of "driver," cranking out his/her work and focusing on the tactical minutiae of the work; person B is "navigator:" observing, catching errors, making suggestions, helping, and thinking about the strategic direction of the work. They switch roles for Phase 2.  (This makes more sense for some disciplines, tasks and industries than others.  It's best for software engineers experienced with this style of work, but can we experiment with it among designers, architects, writers, chefs, artists, accountants?)

[Moderator guidelines] 

    Pre-session preparation: If possible, choose pairs of participants who are already working on the same project, or who can be assigned to the same project throughout the session.  This might be also used in cases where each participant is working on a separate project, but it's probably more effective to have each pair on a single project.

        Each participant, or pair of participants, should come to the session with a work project (or portion of a project) on hand that can be worked on productively for at least 25 minutes or (for a preassigned pair who are working on the same project together) 50 minutes.  Any tools and materials necessary for this work should be made available at the venue.

      Materials necessary (beyond basic kit and these moderator and participant documents): Varies based on type of work and participants.  Some Pair Programming sessions will require no further materials.  Most will require participants to bring at least one laptop per pair.

        Session timeline:

            (:10) Introduction: Participants assemble. Welcome, introduction. If appropriate: One participant at a time briefly describes what he/she has brought to work on. Participants pair up, select roles for first phase.

            (:25) Phase 1: "Drivers" crank out the detailed tactical work, "navigators" think through the bigger picture and guide and error-check the drivers.

            (:25) Phase 2: (Same as Phase 1, but each pair's roles are reversed)

    Special note: This format will vary substantially from session to session based on the people taking part in this and what sort of work they're doing.  Please adapt the script accordingly, and please note any surprises or lessons learned that we might apply to future sessions.

[Participant guidelines]

    [Participant guidelines: Everyone]  Welcome. Here's an overview of what will happen:

            (:10) Introduction: The moderator will explain the process, help you choose a partner, and assign you a role for Phase 1: either "driver" or "navigator."

            (:25) Phase 1: "Drivers" crank out the detailed tactical work, "navigators" think through the bigger picture and guide and error-check the drivers.

            (:25) Phase 2: (Same as Phase 1, but each pair's roles are reversed)

    [Participant guidelines: Driver]  Work and think tactically. Focus on the details.  For example: If you're developing software you're the person typing out the code character by character and thinking through the details of the code line by line. [NOTE: If possible, before any given session add an example here that's as specific as possible to the participants and work at hand.]

    [Participant guidelines: Navigator]  Work and think strategically.  Focus on the big picture.  Observe the driver's workflow, point out errors, make suggestions and ask helpful questions, all the while thinking about the goal you're both aiming for, and how to improve your progress towards that goal.  [NOTE: If possible, before any given session add an example here that's as specific as possible to participants and work at hand.]

[Moderator Script]

        (0:00 - start) Welcome and thanks for coming. This format is borrowed from the world of software development, where it has been proven to significantly increase work efficiency, to reduce errors, to increase the learning of on-the-job knowledge and to boost the amount of fun that developers report having on the job. 

            [Long Session description repeated here]

            [Any session-specific introduction/instructions that apply to the people and work at hand here]

        (10:00 - start of Phase 1) Phase 1. Begin.

        (33:00) - We'll finish Phase 1 in two minutes.  

        (35:00 - start of Phase 2) Please switch places and roles.  If you were just "driver," you're now "navigator," and vice-versa. Phase 2. Begin.

        (58:00) - We'll finish up in two minutes.

        (1:00:00 - end)

[Background / reference materials] For further background about this format see:

    –"Pair Programming" Wikipedia entry: http://en.wikipedia.org/wiki/Pair_programming

    –Lorem ut perspiciatis unde omnis iste natus error sit voluptatem.  http://foo

    –Sed ut perspiciatis et quasi architecto beatae vitae dicta sunt explicabo. http://bar