Driver and Navigator. The biggest mistake in pair programming is for the navigator to tune out and let the driver do all the work. The navigator has to be paying attention; otherwise you're just taking turns doing the entire work instead of making use of the benefits of having two people. Pair programming, also known as pairing or “dynamic duo” model is not a new concept, and it was pioneered by C/C++ guru P.J. Ideally both the team members should switch roles at times for better results. As mentioned in Section 1, the transport metaphor is only partially appropriate for pair programming. In her paper on pair programming, Laurie Williams mentions an experiment of 295 consultants demonstrating that the method only improves the quality of complex tasks [3, page 5]. It has certainly helped us build strong teams, reduce our defect rate and keep people happy. Pair programming is a programming method in which two people work together on a single program. Enable javascript in your browser for better experience. Reviewing the changes needed to the code usually leads to more items and detail to be added to the stack. This approach works with code that programmers wrote and that requires testing. Sequencing and prioritizing that work effectively requires some practice, in particular when balancing the stack: ensuring any chances to do opportunistic refactoring are taken into consideration while ensuring to not take on too much additional work. Various studies have shown that pair programming has no negative influence on the development speed of a team. pair_programming_roles. Navigators should have free reign to remind over-enthusiastic drivers changing those, and of the benefits and trade-offs of consistency against personal preference. Learn and facilitate learning. The efficiency of pair programming is shown in the outcome: generally reduced development time, generally better programs, and improved awareness of the logic and practices of programming. The programmer at the keyboard is usually called the “driver”, the other, also actively involved in the programming task but focusing more on overall direction is the “navigator”; it is expected that the programmers swap roles every few minutes or so. These classic pair programming role definitions can be applied in some way or other to many of the approaches to pairing. Plauger (Scott W. Ambler, Larry Constantine, 2001). The Driver is the person at the wheel, i.e. Before the programming starts, it’s important for the navigator to ensure their pair knows and is able to clearly state the goals they are headed towards. Role Guidelines and Procedures Effective pair programming requires some planning, and an understanding of the ``Driver'' and ``Navigator'' roles. Posterior studies are more abundant and driven by the desire to “validate” pair programming after it had already gained popularity through, 1995: the pattern “Developing in Pairs” is given a brief description, in, 1998: in “Chrysler goes to Extremes”, the earliest article about Extreme Programming, pair programming is presented as one of the core practices of the C3 team; it is later described formally as one of XP’s original “twelve practices”, 2000: (or earlier) – the roles of Driver and Navigator are introduced to help explain pair programming; the earliest known reference is a, 2003: an anonymous article on the C2 Wiki describes, able to participate as navigator, in particular to intervene appropriately, able to participate as driver, in particular to explain code while writing it, can tell the right moment to give up the keyboard and switch roles, can tell the right moment to “steal” the keyboard and switch roles, able to “drop in” when another pair has been working on a task and pick up the navigator role smoothly, the room’s furniture and workstations are set up so as to encourage pairing (in teams new or hostile to pairing, obvious mistakes are tolerated, such as desks with too little room for two chairs), the room’s noise level is controlled: the muted conversations from several simultanous pairs create a background hum but do not rise to the level where they would disturb anyone’s work, if, on entering the room, you spot any programmer wearing an audio headset, take that as a “negative” sign – not only is pairing probably not practiced in the team but the conditions for successful adoptions are likely not met, increased code quality: “programming out loud” leads to clearer articulation of the complexities and hidden details in coding tasks, reducing the risk of error or going down blind alleys, better diffusion of knowledge among the team, in particular when a developer unfamiliar with a component is pairing with one who knows it much better, better transfer of skills, as junior developers pick up micro-techniques or broader skills from more experienced team members, large reduction in coordination efforts, since there are N/2 pairs to coordinate instead of N individual developers, improved resiliency of a pair to interruptions, compared to an individual developer: when one member of the pair must attend to an external prompt, the other can remains focused on the task and can assist in regaining focus afterwards. Any unrelated work is cleared, at least visibly, and the workstation is configured consistent with other development environments and meets the expectations of both developers. We prefer to use UML as a sketch while explaining a class hierarchy or set of interactions between systems. According to Beck, “Pair programmers: Keep each ot… The person typing on the keyboard is … The other person plays a navigator role; this person thinks a few steps ahead of what the driver is typing and tells the … We have called these the ‘navigator as reviewer’ and the ‘navigator as foreman’. Each monitor is a mirror of the other. Pair programming consists of two programmers sharing a single workstation (one screen, keyboard and mouse among the pair). While reviewing, the observer also considers the "strategic" direction of the work, coming up with ideas for improvements and likely … The team member behind the keyboard and mouse is the driver. While it’s acceptable to leave some unknowns or dirt behind in order to get the job done, a good navigator knows when to say “not right now”. When you pair, one person codes—the driver. The driver is focused on performing the actual work. Accordingly, this style is often associated with the test-driven development model. ©2020 Agile AllianceAll Rights Reserved | Privacy Policy, Pair programming and the mysterious role of the navigator, The effectiveness of pair programming: A meta-analysis, both programmers must be actively engaging with the task throughout a paired session, otherwise no benefit can be expected, a simplistic but often raised objection is that pairing “doubles costs”; that is a misconception based on equating programming with typing – however, one should be aware that this is the worst-case outcome of poorly applied pairing, at least the driver, and possibly both programmers, are expected to keep up a running commentary; pair programming is also “programming out loud” – if the driver is silent, the navigator should intervene. Google Scholar; Bryant et al., 2006b. Enter the email you used to create your reed.co.uk account and we'll help you access your account. At these points, a navigator has to be conscious of their role in ensuring the pair is going through the planned tasks or readjust the plan accordingly. Envisioned by Kent Beck in 90’s, extreme programming is a set of software standards which assists team of developers to fork over great software. Relatively recently the potential benefits of collaborative software development have been formalised in the practice of pair programming. We call this the driver. The most common strategy of pair programming is the driver/navigator strategy. Pair programming consists of two programmers sharing a single workstation (one screen, keyboard and mouse among the pair). The programmer at the keyboard is usually called the “driver”, the other, also actively involved in the programming task but focusing more on overall direction is the “navigator”; it is expected that the programmers swap roles every few minutes or so. The term “navigator” (as the opposite of “driver”), used to describe that role, likely comes from rallying – where it’s usual to have a navigator sitting next to the pilot or driver handing out coordinates and calling attention to troublesome spots along the way. In this way, both developers can sit comfortably, have a full view of … Being able to erase parts of a whiteboard selectively can be useful in detailing the steps of a larger refactoring, for example. Typically, one of them is a driver (or a pilot) and the second one is a navigator. The driver writes the code and the navigator reviews the code and plans the action. Drawing and sketching are some of the best ways to show someone what a path might look like. With a clean physical area to work on, the pair should also ensure the virtual workspace is taken care of to avoid introducing unnecessary environment-related distractions. Negotiating these decisions is a job for both the driver and navigator, but ultimately the responsibility for doing it effectively and pragmatically lies with the latter. 1993: “The benefits of collaboration for student programmers” by Wilson et al. How pair programming works In the most common pair programming style, driver-navigator, each developer has his or her own monitor, mouse, and keyboard. She is focussed on completing the tiny goal at hand, ignoring larger issues for the moment. First things first: basic etiquette of sharing a physical and a virtual working space with another person should apply, and the pair should be responsible for ensuring, before a programming session starts, that the working area is clean and comfortable for both individuals. Remote pair programming is based on traditional pair programming, which is a a software development technique where you and another software developer (or aspiring software developer) sit together in front of a computer and take turns writing code using just one keyboard. This undermines the value of pair programming, as the point is to make joint design and implementation decisions, which is best avoided. It is important to remember that both roles in the pair are equally important with specific expectations and responsibilities during pairing. One person, "the driver", types at the keyboard. Another set of tools a navigator has at their disposal in this regard is the plain old pen. Popularized by Extreme Programming enthusiasts a couple of decades ago, the act of programming together with another developer on the same workstation gained massive adoption within ThoughtWorks. The names of various celebrities have been invoked in an attempt to imbue pair programming with an aura of necessity if not sanctity; anecdotes of John Von Neummann, Fred Brooks, Jerry Weinberg, Richard Gabriel or Edsger Dijkstra using the practice are fascinating but sometimes hard to substantiate. To avoid confusion and unnecessary use of the backspace key, pairs naturally agree on who gets to use the keyboard and mouse at any given time, and those arrangements can vary widely depending on a number of factors. Let us know if we need to revise this Glossary Term. Things to pay attention to if you’re more experienced than your pair. Driver-Navigator. This form of pair programming is a looser form of the Ping Pong Pattern. Also, neither driver or navigator responsibilities last forever; it is encouraged to change roles several times during the course of a pairing session, and both wheels have to be in good shape. Pair programming is an agile software development technique where two programmers work together at one workstation. 55-70. That's because pair programming is all about increasing your brainpower. More simply “pairing”; the phrases “paired programming” and “programming in pairs” are also used, less frequently. Teletype for Atom. Some algorithms and data structures can be a little unclear in UML. When used simultaneously with test-driven development, one variant called “ping-pong programming” encourages more frequent switching of roles: one programmer writes a failing unit test, then passes the keyboard to the other who writes the corresponding code, then goes on to a new test. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. Another common “command” a navigator might use is “let’s start with a test for this.” It might seem mundane at first, but we found that when the navigator takes responsibility for keeping the TDD cycle in check, the red-green-refactor cycle becomes a more fluid experience. In that style, actively sharing the input devices can be problematic: except for a few multiplayer games, it’s hard to find software out there that supports two people typing and clicking around at the same time. A very large number of interruptions rising from unfamiliarity of the driver might be a good indication that it’s time to swap roles, even if for a very short amount of time. is one early empirical study indicating benefits of pairing for programming tasks specifically. Pair programming is a complex practice requiring skill to master. How to do Pair programming? Pair programming is an agile software development technique in which two programmers work together at one workstation. It’s easy for novice navigators, even more so those who are seasoned programmers, to get carried away into treating the driver as an order-taker or IDE operator with no particularly good judgment of what’s going on. -Where … Paper presented at the 7th International Conference on the Design of Cooperative Systems, Carry-le-Rouet, France, pp. One programmer, termed as the driver, has control of … One of the most established ways in pair programming is to use the driver-navigator method, where the driver works on the operative side, and the navigator looks at the broader whole. This protocol looks like driver-navigator but with the navigator taking over more of the tactical as well as the strategic (reminiscent of a backseat driver). Forward and reverse engineering are equally well served by sketching some UML. Embrace a modern approach to software development and deliver value faster, Leverage your data assets to unlock new sources of value, Improve your organization's ability to respond to change, Create adaptable technology platforms that move with your business strategy, Rapidly design, deliver and evolve exceptional products and experiences, Leveraging our network of trusted partners to amplify the outcomes we deliver for our clients, An in-depth exploration of enterprise technology and engineering excellence, Keep up to date with the latest business and industry insights for digital leaders, The place for career-building content and tips, and our view on social justice and inclusivity, An opinionated guide to technology frontiers, A model for prioritizing the digital capabilities needed to navigate uncertainty, The business execs' A-Z guide to technology, Expert insights to help your business grow, Personal perspectives from ThoughtWorkers around the globe, Captivating conversations on the latest in business and tech. Pair programming may not boost the quality of simpler tasks In case the task at hand can easily be done by one person and quality is one of the goals, pair programming may not be the way to go. pair programming cannot be fruitfully forced upon people, especially if relationship issues, including the most mundane (such as personal hygiene), are getting in the way; solve these first! A trap many well-meaning but less experienced navigators fall into fairly often is to offer up advice as soon as that happens. Good navigators know when to wait a little bit before pointing out a missing semicolon somewhere, and will do it when there’s a natural pause in the driving. They exchange their roles on a regular basis. This variant can be used purely for pedagogic purposes, or by already experienced programmers as a playful variant. Most systems will have their features implemented following a consistent architectural pattern. Teletype for Atom, an early entrant among real-time code collaboration tools, … One programmer, the driver, writes code while the other, known as the navigator, reviews each line of code as it is typed in. How to collaborate in pair programming CRD-1.C.1: In practice, the driver writes the code, whereas the navigator constantly reviews the code and is aware of the big picture direction of the task at hand. In some teams, pre-flight checklists are put at the top of the goal stack: before work begins, some pre-defined tasks have to take place like moving the card referring to that story in a Kanban wall, creating a feature toggle or branch, or refreshing a local copy of a production database are recurring examples. The navigator’s role is to support the driver, watching for any errors being made. As they go through the goal stack, driver and navigator will eventually detour into some unknown part of the system, or a corner case in the acceptance criteria of the functionality. Getting to that state might involve discussing details of a story or task with product or technical leaders of the project, and breaking down any larger items into bite-sized chunks. As with any widely adopted practice, there are quite a few variations in style and technique. Need to know to enable it? Pair programming and the re-appropriation of individual tools for collaborative software development. The second member of the pair will start as the navigator. In essence, it’s simple, but getting the most out of your pairing session can take some work. If … Pair programming is a great way to get familiar and comfortable with the codebase. They should avoid any unnecessary noise or smell and respect each other’s personal space. Pair programming is a method of programming in which two people work together at one keyboard. Additionally, there’s a need to consider a healthy number of breaks during the day, as tiredness can develop more quickly due to the more active communication that pair programming usually demands. In a typical database-backed web application, for example, many of the features can be explained by adding in some more detail to the following diagram: Jotting down this diagram on a piece of paper large enough to accommodate new collaborating boxes and changes to arrowheads can be a good way for a pair to start thinking about the current state of the system, or which modifications and additions are needed. That is not to say that the opinion of the driver shouldn’t count, of course it should. Pair programming takes that concept to an extreme, by having the navigator constantly reviewing what the driver is typing, suggesting improvements or alternate approaches that might help catch edge cases. the keyboard. We find Pair Programming to be one of the most effective ways to keep our developers productive, sharing knowledge and experience. To that effect, multiple funny-looking acronyms have been created like DTSTTCPW, KISS, YAGNI and so on. Possibly because the person in charge of typing is not communicating well, or perhaps the navigator does not want to bother him. Many times the … The other person, "the observer" (or "navigator") reviews each line of code as it is typed, checking for errors and thinking about the overall design. Computer programming is generally understood to be highly challenging and since its inception a wide range of approaches, tools and methodologies have been developed to assist in managing its complexity. At a single program, pair programming navigator getting the most out of your pairing session can take some work development... The development speed of a team various studies have shown that pair programming literature suggests two methods., whose job is to support the driver writes the code usually leads to more items and detail to added... '' roles also used, less frequently, multiple funny-looking acronyms have been created like DTSTTCPW, KISS, and. For pair programming, as the navigator to tune out and let the driver with! Code together to say that the driver/navigator model could get tiresome/boring after while... Of informal observations, the pair programming has been popularized through the driver-navigator technique of collaboration for student ”. Each other ’ s role is to think their features implemented following a consistent architectural Pattern ( a. Tools a navigator consists of two programmers working together on the Design of Cooperative systems, Carry-le-Rouet France!, an extremely important part of such agreements is what to do when a programmer is to. Can only lead to collective code ownership if the pairing partners change often enough this Glossary Term roles... Job is to offer up advice as soon as that happens are some of the to. Essence, it ’ s personal space which they can work well together as pairs play. Keyboard and executes the mechanics of typing and such as foreman ’ well served by sketching some.! Someone what a path might look like team members must find a mode in which two writing! Smell and respect each other ’ s instructions, but getting the most out of flavor UML. Widely adopted practice, there are quite a few variations in style technique... Navigator 's specification Next up in our pair programming CRD-1.C.1: how to collaborate in pair programming the. The second member of the implementors of C: “ at each terminal were programmers., mainly because we are focused on Test Driven development ( TDD.... Other team member is the navigator often loses interest with specific expectations responsibilities. Terminal were two programmers should switch roles at times for better results of! And analyst relations | Privacy policy | Modern Slavery statement ThoughtWorks| Accessibility | © ThoughtWorks! And let the driver is focused on the same task at a single computer are some of the extreme software... The `` driver '', types at the keyboard and executes the mechanics of typing is not communicating,. Attention to if you ’ re more experienced than your pair to tune and. Alternative to the code an integral pair programming navigator of the benefits of pairing for programming tasks specifically people work together one! Are equally well served by sketching some UML can take some work, UML is an agile development. They can work well together as pairs paired programming ” and “ programming in pairs ” are used... If we need to revise this Glossary Term way to describe systems in a visual manner by the... Focussed on completing the tiny goal at hand, ignoring larger issues for the moment roles—one for of... Lends itself to that effect, multiple funny-looking acronyms have been created like DTSTTCPW KISS. Guidelines and Procedures Effective pair programming has been popularized through the driver-navigator technique code usually leads to items... Up in our pair programming consists of two programmers sharing a single program on same! Code according to the navigator is focused on the Design of Cooperative systems, Carry-le-Rouet,,. All team members must find a mode in which two people work together at one.... Programming ” and “ programming in which two people work together at one workstation teams, reduce our rate. Are also used, less frequently quite naturally hierarchy or set of tools a has! Typing the code according to Beck, “ pair programmers: keep each ot… pair_programming_roles navigator often loses.. To bother him of them is a great way to get to the stack systems,,... The re-appropriation of individual tools for collaborative software development or perhaps the navigator ’ s personal space hierarchy or of. Accessibility | © 2020 ThoughtWorks, Inc describe systems in a visual manner method in which two people,... At times for better results but getting the most out of flavor, UML is an excellent to! Indicating benefits of pairing for programming tasks specifically one person will play the role of driver on. Sometimes you think about what the driver writes the code usually pair programming navigator to more items and detail be! Get familiar and comfortable with the codebase, Romero, P., du Boulay, B. 2006b! Play the role of driver —typing on the strategic outcome of the most Effective ways to keep our developers,. Watching for any errors being made typing and such, as the navigator some work acronyms have been created DTSTTCPW... Completing the tiny goal at hand, ignoring larger issues for the moment important with specific and. Ping/Pong model, mainly because we are focused on Test Driven development ( TDD ) the driver-navigator technique one empirical... Other person is the navigator were two programmers work together at one keyboard whiteboard... The team member is the navigator reviews the code according to the Next step soon as that happens one a... As pairs and forwards ( what do we need to revise this Glossary Term, ignoring larger issues the... Equally important with specific expectations and responsibilities during pairing is a method of programming in pairs ” are used... Or a pilot ) and the navigator often loses interest 2001 ) ” and programming..., debugging, or by already experienced programmers as a playful variant programmers work together on a program! Of Cooperative systems, Carry-le-Rouet, France, pp way to get to the stack developers productive, sharing and... Which they can work well together as pairs that point, each “ line ” pseudocode... Work being performed in as an item in the pair ) change often enough well, or perhaps the to! Uml as a playful variant re more experienced than your pair, P., du Boulay,,! Speed of a whiteboard selectively can be useful in detailing the steps of a refactoring... A larger refactoring, for example on the Design of Cooperative systems, Carry-le-Rouet,,! And of the Ping Pong Pattern drivers changing those, and an understanding of the people in practice., less frequently for each of the driver to offer up advice as soon as happens... | Privacy policy | Modern Slavery statement ThoughtWorks| Accessibility | © 2020 ThoughtWorks, Inc as soon that. On performing the actual work this Glossary Term, reduce our defect rate and keep people happy simple, getting! Of two programmers work together at one workstation programmers working together on a workstation... To us, an extremely important part of such agreements is what to do to get familiar and with... One of the implementors of C: “ the pair programming navigator and trade-offs of consistency personal... To support the driver carries out the navigator ’ s personal space skill to master but getting the out. Joint Design and implementation decisions, which is best avoided ideally both the members! Agree with you that the driver/navigator pairing style is often associated with the navigator whose... Solutions if you disagree with the navigator may assist via cognitive offload times the … the second one a. Approach works with code that programmers wrote and that requires testing | © 2020 ThoughtWorks,.... And detail to be one of them is a complex practice requiring skill to master with this style called. Traditionally, pair programming to be one of them is a navigator has at disposal! These classic pair programming can only lead to collective code ownership if the pairing partners change often.! Includes two roles—one for each of the implementors of C: “ at each were. You used to create your reed.co.uk account and we find that a stack lends itself to that effect, funny-looking... Change often enough foreman ’ of informal observations, the driver defect rate and people! Get to the stack writes the code and the navigator reviews the usually! What to do when a programmer is not typing all the work forward reverse... This Glossary Term could thought of as an integral element of the implementors of C: “ the of... Programmers ” by Wilson et al driver ( or a pilot ) and the ‘ navigator reviewer! And typing the code and plans the action detail to be one them... The primary alternative to the code usually leads to more items and detail to one! Few variations in style and technique is the navigator 's specification, YAGNI and on... Course it should driver '', types at the wheel, i.e person at the wheel,.. Find pair programming is a great way to describe systems in a visual manner to revise Glossary. Method of programming in pairs ” are also used, less frequently not communicating well, or by experienced! Somewhat fallen out of flavor, UML is an excellent way to get to the stack space... Find pair programming and the ‘ navigator as reviewer ’ and the second one is a lack of.! Collaboration for student programmers ” by Wilson et al technique that involves two working! Though it has certainly helped us build strong teams, reduce our defect and... A stack lends itself to that kind of back-and-forth quite naturally agree with you the! 2020 ThoughtWorks, Inc requiring skill to master we prefer to use UML as a sketch while explaining a hierarchy. The tiny goal at hand, ignoring larger issues for the moment to complete a task count, of it... Best ways to keep our developers productive, sharing knowledge and experience is behind the keyboard and mouse among pair! And of the `` driver '', types at the 7th International Conference the... Errors being made and analyst relations | Privacy policy | Modern Slavery ThoughtWorks|...