Pair programming illuminated pdf


    5, November-December Cite this book review as follows: Charles Ashbacher: Review of “Pair Programming Illuminated”, in Journal of Object Technology. Download Citation on ResearchGate | On Jan 1, , L Williams and others published Pair Programming Illuminated. Read Online Now pair programming illuminated book by addison wesley professional Ebook PDF at our Library. Get pair programming illuminated book by.

    Language:English, Spanish, Portuguese
    Published (Last):14.06.2016
    Distribution:Free* [*Register to download]
    Uploaded by: KASIE

    63074 downloads 162268 Views 23.69MB PDF Size Report

    Pair Programming Illuminated Pdf

    Get this from a library! Pair programming illuminated. [Laurie Williams; Robert R Kessler]. Pair Programming Illuminated [Laurie Williams, Robert Kessler] on *FREE* shipping on qualifying offers. Pair programming is a simple. Pair Programming Illuminated by Laurie Williams, Robert Kessler The leap to pair programming for a variety of software development projects is Industrial Press Inc.| ISBN: | | Scanned PDF in 7z archive.

    We developed our software incrementally, using UML to capture designs, and held code inspections of programmers' work, but we struggled with effective knowledge sharing. Lack of dependency management - long compile times. Programmers using new language features purely to try them out without considering the impact on performance. Programmers who reported they were finished when they had done little or no unit testing. Programmers who kept code checked out for long periods. Since then I have become an XP practitioner and, in hindsight, I realise that these problems could have been avoided if we had applied the practice of pair programming. Pair programming environment In , I decided to follow Martin Fowler's advice: If you can't change your organization, change your organization! I went for a job interview as a developer at an XP company. The team had just moved into new offices and they were being fitted out to create a customised work environment to support the XP team. Large screens and convex desks were the order of the day. To start pair programming, as Ward Cunningham said, you need to "Arrange the furniture" [ Cunningham ]. Pair programming is not one person passively watching the other type. Each programmer needs to play an active role in determining the design, implementation and tests. The pair works together on the task in hand while passing keyboard control back and forth between them, writing code and tests as they go.

    In this chapter, we will go through these common misconceptions that we've heard about concerning pair programming. We'll also dig deeper into most of these myths in coming chapters. Managers say, "Pair programming increases the cost of development. We can't afford that! On Ward's Wiki we read, "Get two people programming in pairs, and they'll work more than twice as fast as one could have" Wiki , contributed by Paul Chisholm.

    We also read, "One of the rules of the Chrysler Comprehensive Compensation team is that all production code be written with a partner. As a testimonial, in the last six months before launching, the only code that caused problems was code written solo" Wiki , contributed by Kent Beck.

    Could that be true? If it is true, then the concerns of the manager and the software engineers mentioned earlier disappear. In addition to being academics, we both have been heavily involved in commercial software development, and so we could sympathize with the concerns. We were intrigued; we wanted to know if it was really true.

    To validate the anecdotal claims we were hearing, we ran a formal experiment with 41 students writing four programs over a week semester at the University of Utah. When these solo and pair programmers "competed" head-to-head, the pair programmers finished in about half the time as solo programmers, and there were fewer defects.

    For many, this myth alone is a stopper. If this is the case with you, we encourage you to flip to Chapter 4 for a full discussion on the economics of pair programming.

    Extreme Programmers XPers believe in pair programming so much that any production code done alone needs to be redone with a partner.

    Many practicing pair programmers take a more moderate approach to pair programming. We ran a survey that was advertised on pair programming and XP mailing lists. We also sent personal invitations to participate to every pair programmer we could think of.

    Only 22 percent of those who took the survey said they spent 75 percent or more of their day pair programming. A full 30 percent said they spend less than half their day pair programming. Pair programmers generally do work alone for a certain period each day. These survey results are consistent with developers in general. In Peopleware DeMarco and Lister , it was reported that software developers generally spend 30 percent of their time working alone, 50 percent of their time working with one other person, and 20 percent of their time working with two or more people.

    So, historically, developers have collaborated, and pair programming puts some structure around this collaboration. Pair programming is very intense—too intense for many to do all day every day—and there are schedule constraints to deal with—flex hours, sick partners, meetings, and so on. The advice we give is this: If you don't want to work together at all times, work together on the most complex tasks.

    At that time, everyone pairs, and no one interrupts. During other hours, work on less complex tasks, go to meetings, and return all the phone calls and e-mails you've been avoiding. Besides that, you might actually find that you can stand to work with someone else often. In "The Danger of Coding Alone" in Extreme Programming Applied Auer and Miller , Ken Auer describes when he lost quite a few minutes because he deleted what he believed was "superfluous" code while his partner stepped away.

    Fortunately there was a test case that revealed the problem. Actually many pair programmers do report that they really do feel somewhat uncomfortable working alone once they are conditioned to working with a partner.

    However, situations like a sick, busy, or vacationing teammate will make solo programming necessary. We've done it before; we can do it again. Actually, what we have found is that it will work well with most admittedly, not all partners. Other than that, people are able to work with almost anyone. One exception might be pairing an expert with a novice.

    The expert needs to be willing to take on the mentor role—for the good of the long term team performance—knowing that his or her own productivity will be impacted. If an expert does not have these nurturing instincts, it is best not to pair him or her with a novice, as we'll discuss in Chapter We'll be explaining more about pair rotation in Chapter 9.

    For now, we'll say that with pair rotation, people pair with different people all the time. Of those we surveyed, 83 percent said they rotate their pairs.

    We've heard of groups that practice pair rotation with their pairs sticking together for as short as a few hours to as long as a few weeks. However, you don't have to imagine spending the rest of the project shoulder-to-shoulder with one individual. In most cases, people who spend lots of time together even married couples can get on each other's nerves. There is certainly benefit to the apprentice relationship that can take place between a new person and an experienced person.

    However, pair programming is mutually beneficial to experienced programmers too. Part Three of this book explains the benefits and shortcomings of twelve different kinds of pairs and the contexts in which each kind of pair works best.

    Here's a preview of two of the twelve kinds of pairs we discuss in Part Three: If you pair two experts when you've got a really complex problem to solve, they will do the best job imaginable. Because each is probably an expert in a slightly or very different area, the synergy of their expertise will bring results. If you pair any two experienced programmers, they will fill in many of each other's knowledge gaps. Between the two of them, they can piece together the solution to almost any problem, including problems they would have struggled with alone.

    This is also a great knowledge management strategy— an excellent way to pass tacit knowledge around a team. Turn to Chapter 9 if you're particularly interested in pair programming and knowledge management. Recognition gets a bit more complicated when pair programming and pair rotation enter the picture. No longer can you say, "Didn't Kimberly do an excellent job on the storage manager? We'll approach this myth from two angles. First, things work best if each task has an owner.

    For example, let's say that Kimberly owns the storage man-ager and Christopher owns the heap. The owner "recruits" a partner to work with on various parts of the task. It works best if the partner has some related knowledge he or she can bring to the task. For example, when Kimberly is doing the part of the storage manager that interacts with the heap, it would be great if Christopher would work with her.

    He brings related knowledge to the table and leaves with knowledge about the storage manager. Ultimately, Kimberly can still feel great about her storage manger—partly because she recruited the right teammate to pair with her on the right task a skill in itself.

    But with pairing, much of our time is now spent on tasks we don't own. How can we feel good about that? How can Christopher get satisfaction from helping Kimberly with her storage manager? First, we need to transition to getting more satisfaction from our team succeeding. As with any team, including any sports team, individual success means nothing without team success. We need to realize that we are personally gaining from understanding the overall system much better, which helps us do our own tasks better too.

    Having said all this, we recommend that some form of peer evaluation scheme be developed. Peer evaluation can provide valuable feedback to the manager on how helpful the engineers are as partners so the manager has a better idea of whom to reward.

    Periodically engineers should write a short statement about those team members they have paired with and how effectively they feel the pairing has gone. This will be discussed further in Chapter True, a major benefit of pair programming is the continual code review; the navigator can find syntax mistakes as they are created although we strongly encourage you to give drivers more than a handful of nanoseconds to fix their own syntax mistakes.

    However, the job of the navigator is much more important and exciting than this. The navigator is holding the roadmap and is guiding the driver to the desired destination. Sometimes drivers can get so caught up with staying between the lines on a winding road especially on a snowy night , they forget where they are headed.

    The navigator can't go to sleep, or the driver might end up lost or worse—he might arrive safely at the wrong destination. Effective pairing relationships involve two very alert participants.

    Pair Programming Illuminated

    They brainstorm and discuss approaches continuoually, and, sometimes they find syntax mistakes in the process. In Peopleware, DeMarco and Lister describe mental flow: Flow is a condition of deep, nearly meditative involvement.

    In this state, there is a gentle sense of euphoria, and one is largely unaware of the passage of time…. There is no consciousness of effort; the work just seems to, well, flow…. Not all work roles require that you attain a state of flow in order to be productive, but for anyone involved in engineering, design, development, writing, or similar tasks, flow is a must.

    These are high-momentum tasks. It's only when you're in a flow that work goes well. DeMarco and Lister then explain that it takes at least 15 minutes of concentration to slowly "descend" to flow. They say, however, that you can be knocked out of flow by any interruption, such as a phone call or that ever-present e-mail ding. Every time you are interrupted, it takes another 15 minutes to get back into flow. People who have never pair programmed worry that they will never reach this euphoric flow state when working with another who, for example, just won't stop talking and whose job it is, in fact, to talk.

    However, many of those who have tried pair programming have experienced the "two heads are better than one" version of mental flow.

    The two operate as one intelligent organism and share an enhanced, joint flow. Together they explore more possibilities and revel in their joint successes. They know from minute to minute that they are achieving more together than they ever could alone, and this knowledge drives them deeper and deeper into flow. Pairs can also prevent each other from flowing down the wrong river by productively producing the wrong thing or low-quality code.

    When pairs work together, they do a much better job at deferring interruptions.

    They forward their phone to voicemail, they turn off their e-mail notification, and they don't take "surf the Web" breaks. When other people walk by and see them working, they often choose not to interrupt. Actually pairs also report that if they are jointly in the flow state and one of the pair is interrupted, the interrupted partner can quickly rejoin the flow of the partner who continued—without DeMarco and Lister's minute "descent" time.

    At the end of a session, they return to the real world and handle all the voice-mails, e-mail, and so on. The opposite of mental flow is mental block or distraction. Pair programming reduces this obstruction either because the pairs keep each other on track and are not distracted or because one of the pair is able to break through the mental block.

    Often, either one of the pair can at least start any task, no matter how impossible it seems initially. As we'll discuss in Chapter 4, almost all well over 90 percent of those surveyed say that they enjoy programming more and feel more confident in their work when they pair program.

    DeMarco, T. Peopleware, Dorset House Publishers. Kelley, R. The Seven Synergistic Behaviors of Pair Programming Two software engineers sit down at one computer and work on one task. They finish essentially twice as fast as if either one of them had done the task alone. And, they have higher quality work! How can this be? Is this some kind of voodoo magic?

    Are we exploiting some aspects of human nature? Pairing actually does make us work differently. Observing effective pairs, we've identified seven synergistic behaviors. These behaviors tend to happen "naturally" with pairs, as opposed to the habits of effective pair programmers in Chapter 27, which can take practice and concerted effort. Working together synergistically, we get our jobs done faster and better with these behaviors and without us feeling uptight about it.

    The more of these behaviors a pair allows to emerge, the more effective the pair will be. In fact, we could add an eighth behavior, pair fun. In our recent Web survey, we asked, "What have you found beneficial about pair programming?

    This pair pressure causes us to react in several ways. Programmers admit to working harder and smarter on programs because they do not want to let their partner down.

    We'll illustrate this phenomenon by comparing two scenarios. Your neighbor, who has center-court tickets only ten rows from the floor, took you to the game. In overtime, North Carolina State your team, and the underdog comes out on top; it was a nail biter!

    There's one small problem, though: after a couple of victory beverages, you don't get home until well after midnight, and you have to get up at the crack of dawn to take your son to swim practice before school. You get to work and chat at the coffee machine a bit too long razzing your UNC colleagues about the game, of course. When you finally make it to your desk, lack of sleep sets in. After several minutes of staring blankly at your screen, you decide to find out if it's going to rain on Saturday, you just have to send e-mails to all the rest of the UNC fans you know.

    You hit "send" on that one final note and then stare at the screen for a few more minutes. Just as you're starting up Visual Age, the phone rings. Happy Day! It's your college buddy, Danny, calling to plan your houseboat vacation on Lake Powell in southern Utah.

    Scenario Two: Last night, your best friend just announced he got engaged. He's the first one "to go. This morning you perform complex analysis on your alarm clock to figure out just how many times you could hit the snooze alarm and still get to work on time. You slowly walk from the parking lot to the building.

    As you walk down the hallway toward your cube, you see Chris walking toward you for your pairing session. He never stops smiling, does he? The two of you are scheduled to finish the print spooler before noon. As you unlock your desk, he's starting up the computer. Let the day begin! When you're working alone, you can intentionally or unintentionally hide in your cube and waste time on mindless tasks.

    Simply the presence of another can draw us out of our tired, disgruntled mood and cause us to get to work. As we'll discuss in the next chapter, Laurie has compared the results of her students who pair program and those who do not. Students who pair perform much more consistently and better than those who don't. We just don't want to let the person next to us down, or we're embarrassed to disappoint him or her or look like a slacker. When programmers meet with their partner, they both work very intensively because they are highly motivated to complete the task at hand during the session.

    They tend to cut phone calls short; they don't check e-mail messages or favorite Web pages; they don't waste each other's time" Wiki , contributed by Paul Chisholm. When we work alone, we can meander through the day. We can get ourselves into that mental state we call flow when we want; We can surf the Web when we want; We go to meetings and to lunch when we want.

    Things are different when we pair. When we pair, we need to coordinate schedules. This is something that some people don't like about pair programming. Your partner, Alex, needs to drop his kids off at school before coming in.

    You prefer to get in early so you can get to the gym in the afternoon before the mad rush. That leaves 9—3 as the only possible pairing hours, but, then there's lunch and a meeting or two.

    So, that leaves only 9—11 and 1—3. That leaves only four hours, and you need to have the socket code done by the end of the day. During these precious four hours, you're motivated to work intensively to get to the goal line by the end of the day.

    You know that Alex needs to pair with Chelsea tomorrow, and you won't have his expertise anymore. Parkinson's Law Parkinson helps to explain this phenomenon. This law states, "Work expands to fill the time available. When you work alone, you generally don't put such explicit, externally visible deadlines on yourself. If you could finish before lunch but don't have your afternoon planned out, your task might expand to take the whole day.

    Pairing continually provides explicit deadlines that motivate us to finish the task and not let it fill any "extra" time. We work very intently because we value our time with our partner. We purposely won't answer our phone or e-mails. Others see us already working with someone else, and they leave us alone. The net effect is that we have bigger blocks of uninterrupted time, which is good for our mental state and our progress. It also reduces task switching, which for some people generates a huge overhead.

    Are pairs the only ones that can turn off interruptions? Of course not! Many time management strategies, including that found in the Gold Collar Worker Kelley , will advise turning off the phone and ignoring the inbox to focus on the task at hand.

    It has been demonstrated DeMarco and Lister that programmers who have the ability to silence their phone and divert their calls and have fewer interruptions can be far more productive as much as eleven times faster. It's just that with a partner depending on us, we're less likely to "cheat. A benefit of pair pressure is improved adherence to procedures and standards. Due to human nature, pairs put a positive form of pressure on each other to follow the prescribed process.

    Agile processes Cockburn can have practices that are quite "lightweight" and minimal in order to maximize a team's ability to be responsive.

    If these minimal processes are ignored, things could fall apart. Together, pairs more consistently adhere to prescribed practices and, therefore, produce with higher quality results after all, the creators of the process include all the practices for a reason. Each partner expects the other to follow the prescribed development practices and acts as a conscience to the other. The intelligences revealed through these practices are distributed—across minds, persons, and the symbolic and physical environment…Knowledge is commonly socially constructed, through collaborative efforts toward shared objectives or by dialogues and challenges brought about by differences in persons' perspectives.

    Salomon The second of the pair programming behaviors we discuss is pair negotiation. We use the term pair negotiation to describe how two pair programmers arrive at the best solution together. Pair negotiation is grounded in an area of psychology called distributed cognition. Specifically, Flor and Hutchins studied the exchanges of two programmers working together on a software maintenance task. They correlated specific verbal and nonverbal behaviors of the two with known distributed cognition theories.

    When pairing is working at its best, Each brings to the pair partnership his or her own set of skills, abilities, and outlook. Both share the same goal for completing the task. They jointly approach a problem, each with a suggested alternative for attacking it.

    They must "negotiate" how to approach the problem jointly. In this negotiation, they evaluate more alternatives than either one would have considered alone; a person working alone tends to pursue his or her first approach. Together, the pair efficiently determines which is the best plan of attack, considering and including suggestions from both partners. They "high five" each other for being so smart and kicking butt on the task.

    We must admit we found nothing in the distributed cognition literature about this last step, but we know it to be true. Some people are concerned that the negotiation might lead to "worst of both worlds" compromises in implementation.

    Two studies investigate whether group decision making is superior to the decisions of the more knowledgeable member. Michaelsen et al. First, each completed each test individually; then the teams completed the test collaboratively. All groups outperformed their average member, and groups outperformed their best mem-ber. As a follow-up study, Watson et al. Finally, decision issues fall on a continuum from purely judgmental no correct answers exist to purely intellective those that have a demonstrably correct answer.

    Software correctness decisions are almost always intellective. Groups will generally form a consensus on judgmental decisions and will generally produce the correct answer to an intellective issue if any member of the group proposes it Hungerford and Hevner Therefore the synergistic effects arising from programming in pairs are partly due to one of the pair proposing the "correct answer" during the work time; this answer might not have been identified if one worked alone.

    Related to pair negotiation, collaborative teams consistently report that together they can evolve solutions to unruly or seemingly impossible problems. Pair brainstorming is the effect of having two people working to resolve a problem together. They share their knowledge and energy, chipping steadily away at the problem, evolving a solution to the problem. An effective brainstorming technique Morgan is to encourage people to build upon the ideas of others.

    A subtle difference though, is that the driver might actually be working out a design or implementing part of the problem, realizing that he or she may ultimately come to a dead end in the problem resolution. The navigator, while watching the driver's partial design or implementation, begins thinking about the next step.

    When the driver hits the dead end, the navigator is often prepared to take over and lead the way. Often, the cycle continues until the problem is resolved. You can say to each other, "Does this look right to you? As teachers, we witness this every day. If you give students a problem, ask them to solve it during class, and ask them for the answer, you'll be guaranteed to get a room full of blank stares with the same two or three hands raised.

    Most people will avoid sharing their answer because they don't want to look stupid if they are wrong. If you tell the students to work out the problem with their neighbor and then ask for input, nearly every pair will willingly share their answer. When we work with someone else, we can piece together enough knowledge to feel confident in what we're doing. And, if it looks right to me and it looks right to you—guess what—it's probably right! Strength in numbers!

    Pairing also gives us courage to admit when we don't know something. Developers by themselves tend to be embarrassed when they don't know something and will try to muddle through on their own rather than ask for help from their peers. A study done at the University of Cape Town revealed that 42 percent of developers are inclined to work on problems alone rather than ask for help.

    Interestingly enough, the more experience a developer has, the more likely he or she is to ask for help; novices are less likely to ask for help Allen When two people don't know something, there is a joint realization that it is time to seek help from their peers who may have experience in the problem area. Results from empirical studies Fagan consistently profess the effectiveness of reviews. However, most programmers do not find inspections enjoyable or satisfying. As a result, inspections are often not done if not mandated, and many inspections are held with unprepared inspectors.

    For example, an informal USENET survey conducted at the University of Hawaii found that 80 percent of 90 respondents practiced inspection irregularly or not at all Johnson The theory on why inspections are effective is based on the prominent knowledge that the earlier a defect is found in a product, the cheaper it is to fix the defect.

    With pair programming, this problem identification occurs on a minute-by-minute basis. Programmers, if left to their own devices, will ignore the most glaring errors in their output—errors that anyone else can see in an instant" Weinberg With pair programming, "four eyeballs are better than two," and a momentous number of defects are pre-vented, removed right from the start.

    These continual reviews outperform traditional, formal reviews in their defect-removal speed. Additionally, they eliminate the programmer's distaste for reviews since the reviews are implicit in what is typically an enjoyable pair-programming session. This will often cause you to explain the bug to yourself.

    Sometimes it takes no more than a few sentences, followed by an embarassed, "Never mind; I see what's wrong.

    Sorry to bother you. One university computer center kept a teddy bear near the help desk. Students with mysterious bugs were required to explain them to the teddy bear before they could speak to a human counselor Kernighan and Pike Others have cited the need just to have a cardboard cutout of their favorite guru Wiki or a rubber duck Hunt and Thomas When they have a problem, they must explain the problem to the cardboard cutout or rubber duck, often finding the flaw in their logic.

    Doubtless, it is better to have an animate person to debug with than a teddy bear, rubber duck, or cardboard guru. A person will ask questions and will likely cause you to do the explaining often. The questions and answer can lead to great revelations. Don Wells shares an experience. She was working on code I had never seen before on a system I had never seen before. She told me she had a dilemma and wanted to pair program to debug it. She had been working on it for a long time, and it had spoiled her demonstration that morning.

    She needed to fix the obvious flaw and release the code. I was a bit concerned that I didn't know anything but proceeded, assuming I would be her teddy bear. She explained the problem completely to me; no solution presented itself. So I began asking questions and formulating scenarios with her.

    We checked each out in turn, and in a few minutes we solved the problem and fixed the code. Let some teddy bear try that. The partners take turns being the teacher and the student. Even unspoken skills and habits cross partners Cockburn and Williams Lave and Wenger have studied various types of apprenticeship. They stress the importance of an apprentice to participate actively, to have legitimate work to do, and to work on the periphery, steadily moving toward some higher rank.

    The novice's work is initially simple and noncritical. Later work is more critical.

    Lave and Wenger stress the importance of the apprentice working within a "line of sight" of the expert. To further this, Alistair Cockburn, whose work includes examining practices and patterns that tend to lead toward project success or failure, created the "Expert-in-Earshot" project management pattern.

    Experts are put in the same workspace as novices so that the novices can learn by watching and listening while the expert does his or her usual work Cockburn and Williams In these contexts, pair programming is a much improved apprenticeship situation than a more traditional situation whereby a novice sits in his or her own workspace, working on simple code, while the expert creates complex code elsewhere.

    The continuous reviews of collaborative programming create a unique educational capability because the pairs are endlessly learning from each other. The learning that transcends these continual reviews prevents future defects from occurring—and defect prevention is more efficient than any form of defect removal. The continual reviews of collaborative programming, in which both partners ceaselessly work to identify and resolve problems, affords both optimum defect-removal efficiency and the development of defect-prevention skills.

    We'll talk more about pairs swapping with other pairs in Chapter 9, but for now we'll say that when pairs move around and everyone gets to work with everyone else, even more learning occurs, and it occurs at a higher pace. Kent Beck describes this: "When an important new bit of information is learned by someone on the team, it is like putting a drop of dye in the water. Because of the pairs switching around all the time, the information rapidly diffuses throughout the team just as the dye spreads throughout the pool.

    Unlike the dye, however, the information becomes richer and more intense as it spreads and is enriched by the experience and insight of everyone on the team. Those who program in pairs are developing for the good of the company, not just for themselves.

    Pair Programming

    Pairing allows them to open up to other people's knowledge and experience and to see that the end result is far better than anything they could have developed on their own. This in turn allows them to present their best ideas in a more open environment. If the makeup of the pairs is dynamic, developers get to know and trust all or many on their team. The trust that develops throughout the team is highly beneficial for the team itself. The results of the two together are greater than the results of each individually.

    And, as we said, the overwhelming sentiment is that it's a lot more fun! Cockburn, A. Succi and M. Marches, eds.

    Fagan, M. Flor, N. Hungerford, B. Hunt, A. Johnson, P. Kernighan, B. The Practice of Programming, Addison-Wesley. Lave, J. Michaelsen, L. Morgan, M. Parkinson, C. Salomon, G. Watson, W. Weinberg, G. Overcoming Management Resistance to Pair Programming Software development managers often have the knee-jerk reaction "Why in the world would I pay two programmers to do something that one programmer could do?

    In this chapter, we're talking to two distinct audiences. First, we're talking to programmers who would really like to get their team into pair programming.

    We'll give you some "ammunition" as you appeal to your manager's motivations. Second, we're talking to the managers who are trying to decide whether to give it a go. We aim to give you some data that you can use in making that decision. There are also two levels of pair programming: One is a very casual, noninvasive use of the practice. You and your peer work together a lot, and you both manage to get your job done.

    You seek out someone to work with you when you have something difficult to do. You offer to help your peers when they have a tough time. We're not going to address this casual use of pair programming in this chapter. Rather, we're addressing the prevalent use of pair programming throughout a team, where pairing is an integral part of the team dynamics and the team development practices—the kind of use that a manager would generally be aware of.

    Hopefully, the manager strives to have an "I don't care how you do it, just do it" attitude. But, we know that at the end of the day each manager has a set of objectives that needs to be met so the manager can be rela-tively assured of being able to feed his or her family.

    Managers need to know that pairing will help them achieve their objectives. You might be concerned that no matter what we say, it will double the amount of time you spend on a task, and you can't afford that risk. To you, our recommendation is to have a very small, minimal-risk pilot. Laurie was working with a development team at IBM.

    [PDF Download] Pair Programming Illuminated [Download] Full Ebook - Video Dailymotion

    She had already told them much of what is included in this chapter. Then she had a meeting with the manager and six of the employees in the department who were interested in trying pair programming. When it really came down to getting started, all were nervous. She encouraged them to pick only two from among them to pair program for only one week. Compilers can do that better than humans can anyway.

    Myth 7: The only time I ever get any real work done is when I'm alone. Now, I'll never get anything done! Pair programming would drive me crazy. I want to complete my projects on time with high-quality code. I want to reduce my risk of losing a key person.

    I want to reduce the amount of time it takes to train a new person. I want my teams to work well together and to communicate more effectively and efficiently with each other. Habit 7: Hone the Balance between Compromise and Standing Firm. Pearson offers special pricing when you package your text with other student resources. If you're interested in creating a cost-saving package for your students, contact your Pearson rep. Laurie Williams has applied the XP methodology to various projects.

    She is an organizer of the main XP conferences held thus far. Bob has founded a number of technology companies and is on the board of several others. We're sorry! We don't recognize your username or password. Please try again. The work is protected by local and international copyright laws and is provided solely for the use of instructors in teaching their courses and assessing student learning. You have successfully signed out and will be required to sign back in should you need to download more resources.

    Out of print. Pair Programming Illuminated. Laurie Williams Robert Kessler. If You're an Educator Additional order info. If You're a Student Additional order info. Description In Pair Programming Illuminated , Laurie Williams and Robert Kessler help you fight through the exceptions, gain collective acceptance of this approach, and experience remarkable success with it.

    Explores the operational aspects and unique fundamentals of pair programming - information such as furniture set-up, pair rotation, and weeding out bad pairs. Table of Contents Preface. Overcoming Management Resistance to Pair Programming. Pair Rotation: Communication, Knowledge Management, and Training.