SlideShare una empresa de Scribd logo
1 de 30
Pair Programming
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Pair Programming ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Pairing Developer  (Driver) Developer  (Co-Driver) Business Analyst The best way to pair program is to just sit side by side in front of the monitor. Slide the key board and mouse back and forth. Both programmers concentrate on the code being written.
is an agile software development technique in which two programmers work together at one work station.
Driver & Strategist Rotate positions Rotate pairs Pairing Concepts One types in code while the other reviews each line of code as it is typed in. The person typing is called the  driver . The person reviewing the code is called the  observer  (or  navigator ). The two programmers switch roles frequently (possibly every 30 minutes or less).
Pairing Concepts While reviewing, the observer also considers the strategic direction of the work, coming up with ideas for improvements and likely future problems to address. This frees the driver to focus all of his or her attention on the "tactical" aspects of completing the current task, using the observer as a safety net and guide.
Pairing Analogy OF WHETHER IT IS BETTER TO DRAW WITH COMPANIONS OR NOT.  I say and insist that drawing in company is much better than alone, for many reasons.  The first is that you would be ashamed to be seen behindhand among the students, and such shame will lead you to careful study.  Secondly, a wholesome emulation will stimulate you to be among those who are more praised than yourself, and this praise of others will spur you on.  Another is that you can learn from the drawings of others who do better than yourself; and if you are better than they, you can profit by your contempt for their defects, while the praise of others will incite you to farther merits.
According to  The Economist , "Laurie Williams of the University of Utah in Salt Lake City has shown that  paired programmers are only 15% slower than two independent individual programmers ,  but produce 15% fewer bugs . (N.B.: The original study showed that 'error-free' code went from 70% to 85%; it may be more intuitive to call this a 50% decrease of errors, from 30% to 15%.) Since testing and debugging are often many times more costly than initial programming, this is an impressive result.“ The Williams et al. 2000 study showed an  improvement in correctness of around 15% and 20 to 40% decrease in time , but between a  15 and 60% increase in effort . Williams et al. 2000 also cites an earlier study (Nosek 1998) which also had a  40% decrease in time  for a  60% increase in effort . A study (Lui 2006) presents a rigorous scientific experiment in which novice–novice pairs against novice solos experience significantly greater productivity gains than expert–expert pairs against expert solos. A larger recent study (Arisholm et al. 2007) had  48% increase in correctness for complex systems, but no significant difference in time , whilst simple systems had 20% decrease in time, but  no significant difference in correctness . Overall there was no general reduction in time or increase in correctness, but an overall  84% increase in effort . Lui, Chan, and Nosek (2008) shows that pair programming outperforms for design tasks. Scientific studies
Pair Programming Misunderstandings ,[object Object],[object Object],[object Object]
Pair Programming Misunderstandings ,[object Object]
Pair Programming Misunderstandings ,[object Object]
Pair Programming Misunderstandings ,[object Object]
Pair Programming Misunderstandings
 
Pairing Practices       
Ping pong pair programming the observer writes a failing unit test, the driver modifies the code to pass the unit test(s), the observer writes a new unit test, and so on. This loop continues as long as the observer is able to write failing unit tests. The technique can result in the driver role switching as often as a few minutes or less.
Chess Clock Pair Programming (Kitchen Clock) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
10-second rule ,[object Object]
Think Out Loud ,[object Object]
Remote Pair Programming
Remote pair programming , also known as  virtual pair programming  or  distributed pair programming , is the practice of pair programming where the two programmers comprising the pair are in different locations, working via a collaborative real-time editor, shared desktop, or a remote pair programming IDE plugin. Remote pair programming might be useful to do pair programming with offshore teams or in open source projects with distributed contributors. Some teams have tried VNC and RealVNC with each programmer using their own computer. Others use the multi-display mode (-x) of the text-based GNU screen. Apple Inc. OSX has a built-in Screen Sharing application. Also of notice, IDEs like Eclipse (Eclipse Communication Framework comes with the Cola plugin, another option is Saros) and NetBeans (NetBeans Collaboration Project) offer their own solutions. Other alternatives for product such as Visual Studio are wave-vs.net commercial or free Version Add-In, able to enable Pair Programming for Visual Studio, (internally relays on Google Wave Federation Protocol to enable collaborative editing), or beWeeVee for Visual Studio, still in concept phase.  Remote Pair Programming
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Skills to be successfully while Pair Programming
Design quality:   Shorter programs, better designs, fewer bugs. Program code must be readable to both partners, not just the driver, in order to be checked in. Pairs typically consider more design alternatives than programmers working solo, and arrive at simpler, more-maintainable designs, as well as catch design defects very early. Reduced cost of development:   With bugs being a particularly expensive part of software development, especially if they're caught late in the development process, the large reduction in defect rate due to pair programming can significantly reduce software development costs. Learning and training:   Knowledge passes easily between pair programmers: they share knowledge of the specifics of the system, and they pick up programming techniques from each other as they work. New hires quickly pick up the practices of the team through pairing.
Overcoming difficult problems:   Pairs often find that seemingly "impossible" problems become easy or even quick, or at least possible, to solve when they work together. Improved morale:   Programmers report greater joy in their work and greater confidence that their work is correct. Decreased management risk:   Since knowledge of the system is shared among programmers, there is less risk to management if one programmer leaves the team. Fewer interruptions:   People are more reluctant to interrupt a pair than they are to interrupt someone working alone.
Increased discipline and better time management:   Programmers are less likely to skip writing unit tests, spend time web-surfing or on personal email, or other violations of discipline, when they are working with a pair partner. The pair partner "keeps them honest". Resilient flow:   Pairing leads to a different kind of flow than programming alone, but it does lead to flow.Pairing flow happens more quickly: one programmer asks the other,  "What were we working on?"  Pairing flow is also more resilient to interruptions: one programmer deals with the interruption while the other keeps working. Decreased risk of RSI:   The risk of repetitive stress injury is significantly reduced, since each programmer is using a keyboard and mouse approximately half the time they were before.
Drawbacks of pair programming Work preference:   Some developers prefer to work alone. Intimidation:   A less experienced or less confident developer may feel intimidated when pairing with a more experienced developer and participate less as a result. Egos and potential conflict:   Personality conflicts can result in one or both developers feeling awkward or uncomfortable. Differences in coding style may result in conflict.
Drawbacks of pair programming Cost:   There are varying opinions as to whether two developers can be as productive when working together as when working separately (see  "Scientific Studies"  below). Tutoring cost:   Experienced developers may find it tedious to tutor a less experienced developer. Experienced developers working alone may be capable of producing code that is clean and accurate at the outset, and the benefits of pairing might not be worth the cost of an additional developer in some situations. This may apply more especially when producing more trivial parts of the system.
Conclusion: The benefits of pairing far outweigh the drawback of having one developer typing at the keyboard in pairing, because the latter only constitutes a small proportion of time in a seasoned developer’s day .   Pair programming  is not is mentoring      Pair programming is a social skill that  takes time to learn    The best pair programmers know when to say  "let's try your idea first."  
References: http://en.wikipedia.org/wiki/Pair_programming http://www.extremeprogramming.org/rules/pair.html http://xprogramming.com/Practices/PracPairs.html http://martinfowler.com/bliki/PairProgrammingMisconceptions.html www.pairprogramming.com http:// c2.com/cgi/wiki? PairProgramming

Más contenido relacionado

La actualidad más candente

Introducing Agile Scrum XP and Kanban
Introducing Agile Scrum XP and KanbanIntroducing Agile Scrum XP and Kanban
Introducing Agile Scrum XP and KanbanDimitri Ponomareff
 
Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템Youngtaek Oh
 
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)AgileKoreaConference Alliance
 
Design Thinking and Agile?
Design Thinking and Agile?Design Thinking and Agile?
Design Thinking and Agile?Tathagat Varma
 
Scrum Simulation with LEGO, Agile Game
Scrum Simulation with LEGO, Agile GameScrum Simulation with LEGO, Agile Game
Scrum Simulation with LEGO, Agile GameStanislaw Eysmont
 
Everything you need to know about design system.pdf
Everything you need to know about design system.pdfEverything you need to know about design system.pdf
Everything you need to know about design system.pdfKoru UX Design
 
使用Azure Boards實現Scrum.pdf
使用Azure Boards實現Scrum.pdf使用Azure Boards實現Scrum.pdf
使用Azure Boards實現Scrum.pdfDerek Chen
 
DevOps Transition Strategies
DevOps Transition StrategiesDevOps Transition Strategies
DevOps Transition StrategiesAlec Lazarescu
 
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 jbugkorea
 

La actualidad más candente (20)

Introducing Agile Scrum XP and Kanban
Introducing Agile Scrum XP and KanbanIntroducing Agile Scrum XP and Kanban
Introducing Agile Scrum XP and Kanban
 
Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템Python과 Git으로 만드는 모바일 게임 패치 시스템
Python과 Git으로 만드는 모바일 게임 패치 시스템
 
DevOps introduction
DevOps introductionDevOps introduction
DevOps introduction
 
Scrum Process
Scrum ProcessScrum Process
Scrum Process
 
Scrum In 15 Minutes
Scrum In 15 MinutesScrum In 15 Minutes
Scrum In 15 Minutes
 
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)
[AKC2021] 힐링페이퍼의 애자일 전환(고찬혁 / 김종우)
 
Scrum Process
Scrum ProcessScrum Process
Scrum Process
 
Design Sprint
Design SprintDesign Sprint
Design Sprint
 
Design Thinking and Agile?
Design Thinking and Agile?Design Thinking and Agile?
Design Thinking and Agile?
 
Scrum Simulation with LEGO, Agile Game
Scrum Simulation with LEGO, Agile GameScrum Simulation with LEGO, Agile Game
Scrum Simulation with LEGO, Agile Game
 
Scrum in 5 Minutes
Scrum in 5 MinutesScrum in 5 Minutes
Scrum in 5 Minutes
 
Everything you need to know about design system.pdf
Everything you need to know about design system.pdfEverything you need to know about design system.pdf
Everything you need to know about design system.pdf
 
Introduction to CI/CD
Introduction to CI/CDIntroduction to CI/CD
Introduction to CI/CD
 
使用Azure Boards實現Scrum.pdf
使用Azure Boards實現Scrum.pdf使用Azure Boards實現Scrum.pdf
使用Azure Boards實現Scrum.pdf
 
DevOps Transition Strategies
DevOps Transition StrategiesDevOps Transition Strategies
DevOps Transition Strategies
 
Conversational AI: What's New?
Conversational AI: What's New?Conversational AI: What's New?
Conversational AI: What's New?
 
The Future of Product
The Future of ProductThe Future of Product
The Future of Product
 
맛만 보자 액터 모델이란
맛만 보자 액터 모델이란 맛만 보자 액터 모델이란
맛만 보자 액터 모델이란
 
What is UX?
What is UX?What is UX?
What is UX?
 
Scrumban
ScrumbanScrumban
Scrumban
 

Similar a Pair Programming Presentation

Why pair programming is a good idea
Why pair programming is a good idea Why pair programming is a good idea
Why pair programming is a good idea Designveloper
 
Effective Collaborative Programming3
Effective Collaborative Programming3Effective Collaborative Programming3
Effective Collaborative Programming3Xebia IT Architects
 
Test-Driven Developments are Inefficient; Behavior-Driven Developments are a ...
Test-Driven Developments are Inefficient; Behavior-Driven Developments are a ...Test-Driven Developments are Inefficient; Behavior-Driven Developments are a ...
Test-Driven Developments are Inefficient; Behavior-Driven Developments are a ...Abdelkrim Boujraf
 
DevOps - Continuous Integration, Continuous Delivery - let's talk
DevOps - Continuous Integration, Continuous Delivery - let's talkDevOps - Continuous Integration, Continuous Delivery - let's talk
DevOps - Continuous Integration, Continuous Delivery - let's talkD Z
 
Xp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationXp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationMuaazZubairi
 
Pair Programming Explained By Shrikant Vashishtha
Pair Programming Explained  By Shrikant VashishthaPair Programming Explained  By Shrikant Vashishtha
Pair Programming Explained By Shrikant VashishthaShriKant Vashishtha
 
Effective Collaborative Programming3@March 19th 2009
Effective Collaborative Programming3@March 19th 2009Effective Collaborative Programming3@March 19th 2009
Effective Collaborative Programming3@March 19th 2009guest5d31a5
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
It Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingIt Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingAndy Melichar
 
Prototyping for tiny fingers
Prototyping for tiny fingersPrototyping for tiny fingers
Prototyping for tiny fingersJulio Pari
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
Pair Programming: overview and concepts
Pair Programming: overview and conceptsPair Programming: overview and concepts
Pair Programming: overview and conceptsLior Kirshner-Shalom
 
HP's ALM11 Guides Companies Through Shifting Landscape of Application Develop...
HP's ALM11 Guides Companies Through Shifting Landscape of Application Develop...HP's ALM11 Guides Companies Through Shifting Landscape of Application Develop...
HP's ALM11 Guides Companies Through Shifting Landscape of Application Develop...Dana Gardner
 
Inrotduction of Testing
Inrotduction of TestingInrotduction of Testing
Inrotduction of TestingPalash Ghosh
 
Periodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and PracticesPeriodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and PracticesJérôme Kehrli
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practicesjackcrews
 
Testing concepts ppt
Testing concepts pptTesting concepts ppt
Testing concepts pptRathna Priya
 

Similar a Pair Programming Presentation (20)

Put to the Test
Put to the TestPut to the Test
Put to the Test
 
Why pair programming is a good idea
Why pair programming is a good idea Why pair programming is a good idea
Why pair programming is a good idea
 
Effective Collaborative Programming3
Effective Collaborative Programming3Effective Collaborative Programming3
Effective Collaborative Programming3
 
Test-Driven Developments are Inefficient; Behavior-Driven Developments are a ...
Test-Driven Developments are Inefficient; Behavior-Driven Developments are a ...Test-Driven Developments are Inefficient; Behavior-Driven Developments are a ...
Test-Driven Developments are Inefficient; Behavior-Driven Developments are a ...
 
DevOps - Continuous Integration, Continuous Delivery - let's talk
DevOps - Continuous Integration, Continuous Delivery - let's talkDevOps - Continuous Integration, Continuous Delivery - let's talk
DevOps - Continuous Integration, Continuous Delivery - let's talk
 
Xp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentationXp(Xtreme Programming) presentation
Xp(Xtreme Programming) presentation
 
Pair Programming Explained By Shrikant Vashishtha
Pair Programming Explained  By Shrikant VashishthaPair Programming Explained  By Shrikant Vashishtha
Pair Programming Explained By Shrikant Vashishtha
 
Effective Collaborative Programming3@March 19th 2009
Effective Collaborative Programming3@March 19th 2009Effective Collaborative Programming3@March 19th 2009
Effective Collaborative Programming3@March 19th 2009
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
It Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair ProgrammingIt Takes Two - A Case Study in Pair Programming
It Takes Two - A Case Study in Pair Programming
 
Prototyping for tiny fingers
Prototyping for tiny fingersPrototyping for tiny fingers
Prototyping for tiny fingers
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Quality Software Development
Quality Software DevelopmentQuality Software Development
Quality Software Development
 
Ijetcas14 533
Ijetcas14 533Ijetcas14 533
Ijetcas14 533
 
Pair Programming: overview and concepts
Pair Programming: overview and conceptsPair Programming: overview and concepts
Pair Programming: overview and concepts
 
HP's ALM11 Guides Companies Through Shifting Landscape of Application Develop...
HP's ALM11 Guides Companies Through Shifting Landscape of Application Develop...HP's ALM11 Guides Companies Through Shifting Landscape of Application Develop...
HP's ALM11 Guides Companies Through Shifting Landscape of Application Develop...
 
Inrotduction of Testing
Inrotduction of TestingInrotduction of Testing
Inrotduction of Testing
 
Periodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and PracticesPeriodic Table of Agile Principles and Practices
Periodic Table of Agile Principles and Practices
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 
Testing concepts ppt
Testing concepts pptTesting concepts ppt
Testing concepts ppt
 

Último

A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 

Último (20)

A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 

Pair Programming Presentation

  • 2.
  • 3.
  • 4. Pairing Developer (Driver) Developer (Co-Driver) Business Analyst The best way to pair program is to just sit side by side in front of the monitor. Slide the key board and mouse back and forth. Both programmers concentrate on the code being written.
  • 5. is an agile software development technique in which two programmers work together at one work station.
  • 6. Driver & Strategist Rotate positions Rotate pairs Pairing Concepts One types in code while the other reviews each line of code as it is typed in. The person typing is called the driver . The person reviewing the code is called the observer (or navigator ). The two programmers switch roles frequently (possibly every 30 minutes or less).
  • 7. Pairing Concepts While reviewing, the observer also considers the strategic direction of the work, coming up with ideas for improvements and likely future problems to address. This frees the driver to focus all of his or her attention on the "tactical" aspects of completing the current task, using the observer as a safety net and guide.
  • 8. Pairing Analogy OF WHETHER IT IS BETTER TO DRAW WITH COMPANIONS OR NOT. I say and insist that drawing in company is much better than alone, for many reasons. The first is that you would be ashamed to be seen behindhand among the students, and such shame will lead you to careful study. Secondly, a wholesome emulation will stimulate you to be among those who are more praised than yourself, and this praise of others will spur you on. Another is that you can learn from the drawings of others who do better than yourself; and if you are better than they, you can profit by your contempt for their defects, while the praise of others will incite you to farther merits.
  • 9. According to The Economist , "Laurie Williams of the University of Utah in Salt Lake City has shown that paired programmers are only 15% slower than two independent individual programmers , but produce 15% fewer bugs . (N.B.: The original study showed that 'error-free' code went from 70% to 85%; it may be more intuitive to call this a 50% decrease of errors, from 30% to 15%.) Since testing and debugging are often many times more costly than initial programming, this is an impressive result.“ The Williams et al. 2000 study showed an improvement in correctness of around 15% and 20 to 40% decrease in time , but between a 15 and 60% increase in effort . Williams et al. 2000 also cites an earlier study (Nosek 1998) which also had a 40% decrease in time for a 60% increase in effort . A study (Lui 2006) presents a rigorous scientific experiment in which novice–novice pairs against novice solos experience significantly greater productivity gains than expert–expert pairs against expert solos. A larger recent study (Arisholm et al. 2007) had 48% increase in correctness for complex systems, but no significant difference in time , whilst simple systems had 20% decrease in time, but no significant difference in correctness . Overall there was no general reduction in time or increase in correctness, but an overall 84% increase in effort . Lui, Chan, and Nosek (2008) shows that pair programming outperforms for design tasks. Scientific studies
  • 10.
  • 11.
  • 12.
  • 13.
  • 15.  
  • 17. Ping pong pair programming the observer writes a failing unit test, the driver modifies the code to pass the unit test(s), the observer writes a new unit test, and so on. This loop continues as long as the observer is able to write failing unit tests. The technique can result in the driver role switching as often as a few minutes or less.
  • 18.
  • 19.
  • 20.
  • 22. Remote pair programming , also known as virtual pair programming or distributed pair programming , is the practice of pair programming where the two programmers comprising the pair are in different locations, working via a collaborative real-time editor, shared desktop, or a remote pair programming IDE plugin. Remote pair programming might be useful to do pair programming with offshore teams or in open source projects with distributed contributors. Some teams have tried VNC and RealVNC with each programmer using their own computer. Others use the multi-display mode (-x) of the text-based GNU screen. Apple Inc. OSX has a built-in Screen Sharing application. Also of notice, IDEs like Eclipse (Eclipse Communication Framework comes with the Cola plugin, another option is Saros) and NetBeans (NetBeans Collaboration Project) offer their own solutions. Other alternatives for product such as Visual Studio are wave-vs.net commercial or free Version Add-In, able to enable Pair Programming for Visual Studio, (internally relays on Google Wave Federation Protocol to enable collaborative editing), or beWeeVee for Visual Studio, still in concept phase. Remote Pair Programming
  • 23.
  • 24. Design quality: Shorter programs, better designs, fewer bugs. Program code must be readable to both partners, not just the driver, in order to be checked in. Pairs typically consider more design alternatives than programmers working solo, and arrive at simpler, more-maintainable designs, as well as catch design defects very early. Reduced cost of development: With bugs being a particularly expensive part of software development, especially if they're caught late in the development process, the large reduction in defect rate due to pair programming can significantly reduce software development costs. Learning and training: Knowledge passes easily between pair programmers: they share knowledge of the specifics of the system, and they pick up programming techniques from each other as they work. New hires quickly pick up the practices of the team through pairing.
  • 25. Overcoming difficult problems: Pairs often find that seemingly "impossible" problems become easy or even quick, or at least possible, to solve when they work together. Improved morale: Programmers report greater joy in their work and greater confidence that their work is correct. Decreased management risk: Since knowledge of the system is shared among programmers, there is less risk to management if one programmer leaves the team. Fewer interruptions: People are more reluctant to interrupt a pair than they are to interrupt someone working alone.
  • 26. Increased discipline and better time management: Programmers are less likely to skip writing unit tests, spend time web-surfing or on personal email, or other violations of discipline, when they are working with a pair partner. The pair partner "keeps them honest". Resilient flow: Pairing leads to a different kind of flow than programming alone, but it does lead to flow.Pairing flow happens more quickly: one programmer asks the other, "What were we working on?" Pairing flow is also more resilient to interruptions: one programmer deals with the interruption while the other keeps working. Decreased risk of RSI: The risk of repetitive stress injury is significantly reduced, since each programmer is using a keyboard and mouse approximately half the time they were before.
  • 27. Drawbacks of pair programming Work preference: Some developers prefer to work alone. Intimidation: A less experienced or less confident developer may feel intimidated when pairing with a more experienced developer and participate less as a result. Egos and potential conflict: Personality conflicts can result in one or both developers feeling awkward or uncomfortable. Differences in coding style may result in conflict.
  • 28. Drawbacks of pair programming Cost: There are varying opinions as to whether two developers can be as productive when working together as when working separately (see "Scientific Studies" below). Tutoring cost: Experienced developers may find it tedious to tutor a less experienced developer. Experienced developers working alone may be capable of producing code that is clean and accurate at the outset, and the benefits of pairing might not be worth the cost of an additional developer in some situations. This may apply more especially when producing more trivial parts of the system.
  • 29. Conclusion: The benefits of pairing far outweigh the drawback of having one developer typing at the keyboard in pairing, because the latter only constitutes a small proportion of time in a seasoned developer’s day .   Pair programming is not is mentoring     Pair programming is a social skill that takes time to learn   The best pair programmers know when to say "let's try your idea first."  
  • 30. References: http://en.wikipedia.org/wiki/Pair_programming http://www.extremeprogramming.org/rules/pair.html http://xprogramming.com/Practices/PracPairs.html http://martinfowler.com/bliki/PairProgrammingMisconceptions.html www.pairprogramming.com http:// c2.com/cgi/wiki? PairProgramming