Pair Programming: Why Have Two Do the Work of One from Laurie Williams North Carolina State University.

Slides:



Advertisements
Similar presentations
The Use and Reuse of Materials: The OLI Statistics Course Caren McClure Professor of Mathematics - Santa Ana College Candace Thille Director, Open Learning.
Advertisements

Group Projects Across the Curriculum Karen Anewalt, John Beidler, Jennifer Polack-Wahl, and Debra Smarkusky.
Extreme Programming Programming Practices Object Mentor, Inc. Copyright  by Object Mentor, Inc All Rights Reserved Portions of this material.
Employee Engagement Readiness Name Department. Purpose / Objectives To help us prepare for the Employee Engagement (EE) Survey by ensuring a common understanding:
CS 3500 L12pp - 1 The Benefits of Pair Programming Robert Kessler School of Computing University of Utah Special thanks to Laurie Williams North Carolina.
1 Estimating Software Development Using Project Metrics.
Problem Solving and Algorithm Design
William H. Bowers – Understanding Users: Qualitative Research Cooper 4.
Gild Project – Explorations….. CSc 115/160 (S01) Pair Programming.
March 25, 2002R McFadyen a lightweight approach to software development. about 5 years old has been used at: Bayerische Landesbank, Credit Swiss.
Important concepts in software engineering The tools to make it easy to apply common sense!
Ch 4 The Process page 1CS 368 Building Software is Difficult often delivered late often over budget always with errors must be a custom solution complexity.
Pair Programming Two Programmers sit at one workstation Two Programmers sit at one workstation.
Pair Programming Collaboration in Software Development Process.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
COMP4710 Senior Design Software Development Process.
Software Process and Product Metrics
MANAGING YOUTH VOLUNTEERS. AGENDA 5 Elements of Volunteer Management Planning your youth volunteer program Recruiting youth Orienting and training youth.
Bill Sorel Training& Development Portfolio Founder and Senior Advisor of TriQuest LLC.
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Case Studies Instructor Paulo Alencar.
Pair Programming Testing 2, October 14, Administration  Project due Monday 2PM SHARP  Remember all parts of documentation (list of tests, project.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
CMM Level 3 KPA’s CS4320 Fall Organizational Process Focus (Goals) Software process development and improvement activities are coordinated across.
IGCSE Business Studies Conference, March, 2010.
Lero© 2010 Software Quality & Process Improvement Dr. Ita Richardson Lero – the Irish Software Engineering Research Centre and Department of Computer Science.
Quantitative Research in Education Sohee Kang Ph.D., lecturer Math and Statistics Learning Centre.
Linda Werner.  Learn about using pair programming to 1. promote learning 2. increase students’ confidence 3. Increase students’ enjoyment  Leave with.
Generalization through a series of replicated experiments on maintainability Erik Arisholm.
1 Advanced Computer Programming Project Management: Methodologies Copyright © Texas Education Agency, 2013.
Experiences using SPARK in an Undergraduate CS Course Dr. Anthony S. Ruocco Roger Williams University Attendance made possible through.
4-1 Project Management from Simple to Complex. 4-2 This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported.
Student Success – From the Starting Gate to the Finish Line Education Trust, November 2011.
Diploma in Statistics Design and Analysis of Experiments Lecture 1.11 Diploma in Statistics Design and Analysis of Experiments Lecturer:Dr. Michael Stuart,
1 Nassau Community CollegeProf. Vincent Costa Acknowledgements: An Introduction to Programming Using Visual Basic 2012, All Rights ReservedAn Introduction.
CS 1308 Computer Literacy and The Internet Software.
 2009 Pearson Education, Inc. All rights reserved. 1 Pair Programming Most slides courtesy of Ms. Stephany Coffman-Wolph Some slides with minor modification.
Project Management Bob Carson Bob Carson Modified by Joe Law September 5, 2006.
Pair Programming (PP). What Is Pair Programming [1] XP (Extreme Programming) practise ”Two programmers working side-by-side, collaborating on the same.
Coaching for Development. Coaching What: Encourage improved capability How: Goal oriented self improvement.
1 CSC 221: Computer Programming I Fall 2005 See online syllabus (also accessible via Blackboard): 
Leadership Challenge Leadership Practices Inventory Sue Soy – February 2008.
CIS 112 Exam Review. Exam Content 100 questions valued at 1 point each 100 questions valued at 1 point each 100 points total 100 points total 10 each.
Everyone Communicates Few Connect
CS 110: Introduction to Computer Science Introduction to Collaborative Learning and Programming Practices.
Chapter 7 The Practices: dX. 2 Outline Iterative Development Iterative Development Planning Planning Organizing the Iterations into Management Phases.
Implementation Phase CS4311 – Spring 2008 References: Shach, Object Oriented and Classical Software Engineering E. Braude, Software Engineering, an Object-Oriented.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Data Structures Using C++ 2E
Empirical Studies in Test-Driven Development Laurie Williams, NCSU
CS4042 / CS4032 – Directed Study 28/01/2009 Digital Media Design Music and Performance Technology Jim Buckley Directed Study (CS4042.
Protection Poker James Walden Northern Kentucky University.
P51UST: Unix and SoftwareTools Unix and Software Tools (P51UST) Version Control Systems Ruibin Bai (Room AB326) Division of Computer Science The University.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
Another Person’s Eye Gaze as a Cue in Solving Programming Problems Randy Stein Susan Brennan Stony Brook University.
Chapter 5: Software effort estimation
Pair Programming in the Classroom Mark Sherriff University of Virginia July 16, 2009 Some material courtesy of Laurie Williams, NCSU Tapestry 2009.
Mark Hehl (c)2010 Mark Hehl, all rights reserved.
Present by Monvorath Phongpaibul “Molly”
Software Maintenance PPT By :Dr. R. Mall.
A “Sure Fire” Way to Ensure Schedule Performance!
Pair Programming in the Classroom
Analysis of Software Usability Evaluation Methods
Chapter 5: Software effort estimation
Extreme Programming Iterative programming Agile programming
Pair Programming.
Machine Learning for Actuaries
Extreme Programming Extreme programming is "a lightweight methodology for small-to-medium-sized teams developing software in the face of vague or rapidly.
Introduction to Collaborative Learning and Programming Practices
Think about your view of QA
Extreme Programming (and Pair Programming)
Presentation transcript:

Pair Programming: Why Have Two Do the Work of One from Laurie Williams North Carolina State University

Pair Programming

Agenda  Research/Findings  Colocated Pairs  Distributed Pairs  Pair Interactions  Sample Pairings  Pair Rotation  Summary

Empirical Study for Validation  Practice: Summer 1999  20 Students (Sophomore/Junior)  All worked collaboratively  Generated more anecdotal/qualitative evidence  Solo vs Pair: Fall 1999  41 Students (Junior/Senior)  28 Worked Collaboratively  13 Worked Individually  Software development process was controlled  The only experimental variable: pair-programming  Quantitative: Time, Quality, Enjoyment, Confidence

Boxplot of Program Quality

Boxplot of Student Time

Collaboration by Phase

Distributed Pair Programming  Net Meeting  Yahoo Messenger  Graduate Object-Oriented class at NCSU  5-week project  132 students  34 distance students  Teams of 2-4 students  Colocated non-pairs (9 groups)  Colocated pairs (16 groups)  Distance non-pairs (8 groups)  Distance pairs (5 groups)

Productivity

Quality

Satisfaction with Working Arrangement Very good GoodFairPoor Non-pair colocated46%40%11%3% Pair colocated62%28%10%0% Non-pair distributed45%37%18%0% Pair distributed83%17%0%

Satisfaction with Communication Very good GoodFairPoor Non-pair colocated57%26%11%6% Pair colocated58%28%12%2% Non-pair distributed41% 14%4% Pair distributed67%33%0%

Research Findings to Date  Strong anecdotal evidence from industry “We can produce near defect-free code in less than half the time.”  Empirical Study –Pairs produced higher quality code »15% less defects (difference statistically significant) –Pairs completed their tasks in about half the time »58% of elapsed time (difference not statistically significant) –Most programmers reluctantly embark on pair programming »Pairs enjoy their work more (92%) »Pairs feel more confident in their work products (96%) –Distributed pair programming is a viable alternative (worthy of much more research)

How does this work?  Pair-Pressure  Keep each other on task and focused  Don’t want to let partner down  “Embarrassed” to not follow the prescribed process  Parkinson’s Law “Work expands to fill all available time.”  Pair-Negotiation  Distributed Cognition: “Searching Through Larger Spaces of Alternatives”  Have shared goals and plans  Bring different prior experiences to the task  Different access to task relevant information  Must negotiate a common shared of action  Pair-Relaying  Each, in turn, contributes to the best of their knowledge and ability  Then, sit back and think while their partner fights on

How does this work (part two)?  Pair-Reviews  Continuous design and code reviews  Ultimate in defect removal efficiency  Removes programmers distaste for reviews  80% of all (solo) programmers don’t do them regularly or at all  Debug by Describing  Tell it to the Furby  Pair-Learning  Continuous reviews  learn from partners techniques, knowledge of language, domain, etc.  “Between the two of us, we knew it or could figure it out”  Apprenticeship  Defect prevention always more efficient than defect removal

Vending Machine Program: Responsibility Assignment UI Mary Buy Drink Joe Data Structures Charlie Machine Maintenance Sue

Pair Rotation TaskOwnerPartner UI for ‘Buy Drink’MaryJoe UI for ‘Add Inventory’MarySue UI for ‘Add Recipe’MarySue Input Coins/Return Coins JoeMary Select DrinkJoeCharlie Ingredient Data Structure CharlieSue Recipe Data StructureCharlieSue Add IngredientsSueCharlie Customer AnalysisSueMary UI Mary Buy Drink Joe Mach Maint. Sue Data Struct. Charlie

Expected Benefits of Pair- Programming  Higher product quality  Improved cycle time  Increased programmer satisfaction  Enhanced learning  Pair rotation  Ease staff training and transition  Knowledge management/Reduced product risk  Enhanced team building

The Benefits of Pair Programming Robert Kessler School of Computing University of Utah Special thanks to Laurie Williams North Carolina State University

What Is Pair Programming? "Pair programming is a simple, straightforward concept. Two programmers work side-by-side at one computer, continuously collaborating on the same design, algorithm, code, and test. It allows two people to produce a higher quality of code than that produced by the summation of their solitary efforts."

This Is Pair Programming

This is NOT Pair Programming

Pair Programming Has Been Around For a LONG TIME! … John von Neumann, recognized his own inadequacies and continuously asked others to review his work. Fred Brooks and many others are pair programming, though they don’t know there is a name for it.

Does Pair Programming Really Work? l Empirical study by Laurie Williams at the university of Utah l Practice: Summer 1999 –20 students (sophomore/junior) »All worked collaboratively –Generated more anecdotal/qualitative evidence l Solo vs. pair: Fall 1999 –41 students (junior/senior) »28 worked collaboratively »13 worked individually –Software development process was controlled »The only experimental variable: pair-programming –Quantitative: time, quality, enjoyment, confidence

Findings #1 - Quality

Findings #2 - Time

Findings #3 and #4 – Enjoyment and Confidence

How Does This Work? l Pair-Pressure –Keep each other on task and focused –Don’t want to let partner down –“Embarrassed” to not follow the prescribed process –Parkinson’s law “work expands to fill all available time.” l Pair-Think –Distributed cognition: “searching through larger spaces of alternatives” »Have shared goals and plans »Bring different prior experiences to the task »Different access to task relevant information »Must negotiate a common shared of action l Pair-Relaying –Each, in turn, contributes to the best of their knowledge and ability –Then, sit back and think while their partner fights on

How Does This Work (Part Two)? l Pair-Reviews –Continuous design and code reviews –Ultimate in defect removal efficiency –Removes programmers distaste for reviews »80% of all (solo) programmers don’t do them regularly or at all l Debug by describing –Tell it to the Furby l Pair-Learning –Continuous reviews  learn from partners techniques, knowledge of language, domain, etc. –“Between the two of us, we knew it or could figure it out” –Apprenticeship –Defect prevention always more efficient than defect removal

Research Findings to Date - 1 l Strong anecdotal evidence from industry –“We can produce near defect-free code in less than half the time.” l Empirical study –Pairs produced higher quality code »15% less defects (difference statistically significant) »Observed – pairs produced smaller (LOC) programs –Pairs completed their tasks in about half the time »58% of elapsed time (difference NOT statistically significant) –Most programmers reluctantly embark on pair programming »Pairs enjoy their work more (92%) »Pairs feel more confident in their work products (96%)

Research Findings - 2 l Several educational studies underway –University of California, Santa Cruz; North Carolina State University –What about pair learning? »Anecdotal says that it works well –What are the long-term issues? »If you learn as a pair, can you work as a solo? l Distributed pair programming studies underway –North Carolina State University; University of North Carolina- Chapel Hill –Early results: distributed pair programming is viable –My experience: »Need to meet and know your pair »Need a good tool like VNC and telephone »Video not important

Issues: Workplace Layout Bad Better Best

Issues: Partner Picking Principles Expert paired with an Expert Expert paired with a Novice Novices paired togetherProfessional Driver ProblemCulture

Issues: Pair Rotation l Ease staff training and transition l Knowledge management/Reduced product risk l Enhanced team building

Issues: Process l Used in eXtreme Programming l Used in the Collaborative Software Process l Pair programming can be added to any process

Expected Benefits of Pair Programming l Higher product quality l Improved cycle time l Enhanced learning l Pair rotation –Ease staff training and transition –Knowledge management/reduced product risk –Enhanced team building l Increased programmer satisfaction

More Information l Bob Kessler l Laurie Williams l l