pair programming and extreme programming technology sungkyunkwan university

28
SungKyunKwan University PhD Candidate JHKim [email protected] Pair Programming and Extreme Programming Technology SungKyunKwan University Software Engineering Laboratory PhD Candidate Jin Hong Kim [email protected]

Upload: sora

Post on 05-Jan-2016

22 views

Category:

Documents


0 download

DESCRIPTION

Pair Programming and Extreme Programming Technology SungKyunKwan University Software Engineering Laboratory PhD Candidate Jin Hong Kim [email protected]. Index. What is Pair Programming ? What is eXtreme Programming ?. Part I Pair Programming. What is Pair Programming ?. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Pair Programming and Extreme Programming

Technology

SungKyunKwan University

Software Engineering Laboratory

PhD Candidate Jin Hong [email protected]

Page 2: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Index

What is Pair Programming ?

What is eXtreme Programming?

Page 3: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Part I

Pair Programming

Page 4: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

What is Pair Programming ?

Two programmers working

side-by-side,

collaborating on the same design,

algorithm,

code or test.

Page 5: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

One programmer :: = the driverOne programmer :: = the driver

has control of the keyboard/mouse and actively implements the program.

The other programmer :: = the observer

continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction of the work.

On demand, the two programmers can brainstorm any challenging problem.

Because the two programmers periodically switch roles, they work together as equals to develop software.

What is Pair Programming ?

Page 6: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

"Pair programming is a simple, straightforward "Pair programming is a simple, straightforward concept.concept.

Two programmers work side-by-side at one computer,Two programmers work side-by-side at one computer,

continuously collaborating on the same continuously collaborating on the same design, design, algorithm,algorithm,

code, and testcode, and test. .

It allows two people to produce a higherIt allows two people to produce a higher

quality of code than that produced by the summation quality of code than that produced by the summation ofof

their solitary efforts."their solitary efforts."

Pair Programming

Page 7: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

vs.

PP or Not

Pair Programming Not

Page 8: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

What is Pair Programming ?

Does Pair Programming Really Work?Does Pair Programming Really Work?

Empirical study by Laurie Williams at the university of Empirical study by Laurie Williams at the university of UtahUtah

Practice: Summer 1999Practice: Summer 1999– 20 students (sophomore/junior)20 students (sophomore/junior)

• All worked collaborativelyAll worked collaboratively– Generated more anecdotal/qualitative evidence Generated more anecdotal/qualitative evidence

Solo vs. pair: Fall 1999Solo vs. pair: Fall 1999– 41 students (junior/senior)41 students (junior/senior)

• 28 worked collaboratively28 worked collaboratively• 13 worked individually 13 worked individually

– Software development process was controlledSoftware development process was controlled• The only experimental variable: pair-programmingThe only experimental variable: pair-programming

– Quantitative: time, quality, enjoyment, confidenceQuantitative: time, quality, enjoyment, confidence

Page 9: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Post Development Test Cases Passed

0.0%10.0%20.0%30.0%40.0%50.0%60.0%70.0%80.0%90.0%

100.0%

Program 1 Program 2 Program 3 Program 4

Individuals

Collaborators

What is Pair Programming ?

Quality

Page 10: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

What is Pair Programming ?

Elapsed Time

0.0%

20.0%

40.0%

60.0%

80.0%

100.0%

120.0%

Program 1 Program 2 Program 3

One Individual One Collaborator

Time

Page 11: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Enjoy the Work More Because of Pair Programming

0%

20%

40%

60%

80%

100%

PROF SUM1 SUM2 SUM3 FALL1 FALL2 FALL3

Agree Disagree

What is Pair Programming ?

Enjoyment

Page 12: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

What is Pair Programming ?

More Confident in our Work When Pair-Programming

0%

20%

40%

60%

80%

100%

PROF SUM1 SUM2 SUM3 FALL1 FALL2 FALL3

Agree Disagree

Confidence

Page 13: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

What is Pair Programming ?

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-ThinkDistributed 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-RelayingEach, in turn, contributes to the best of their knowledge and abilityThen, sit back and think while their partner fights on

Page 14: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

What is Pair Programming ?

Pair-ReviewsContinuous design and code reviewsUltimate in defect removal efficiencyRemoves programmers distaste for reviews

80% of all (solo) programmers don’t do them regularly or at all

Debug by describingTell it to the Furby

Pair-LearningContinuous reviews learn from partners techniques, knowledge of language, domain, etc.“Between the two of us, we knew it or could figure it out”ApprenticeshipDefect prevention always more efficient than defect removal

Page 15: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

What is Pair Programming ?

Pair Rotation

Page 16: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Expected Benefits of Pair Programming

Higher product quality

Improved cycle time

Enhanced learning

Pair rotation

Ease staff training and transitionKnowledge management/reduced product risk Enhanced team building

Increased programmer satisfaction

Page 17: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Part II

eXtreme Programming

Page 18: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

What is eXtreme Programming ?Key Features from my perspective:

Customer is an integral part of the development team (face-to-face)

Design based on stories developed with the customer

Small releases, many iterations, celebrate releases

Have a good coding standard

Simplicity, always do the simplest thing possible.

Pair Programming

Write tests first, test anything that can fail

Collective ownership of code base

Automate testing

Refactor the code (simplify)

Aggressiveness (Fearlessness)

Page 19: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Agile methodology

Working in small development groups

Two roles:

CustomerDeveloper

Everybody participate in design, programming and test

Iterative development

Iterations not more than 2 – 3 weeks

Create executable code every night

What is eXtreme Programming ?

Page 20: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Key Process Areas

Communication

Simplicity

Reduce risk

Feedback

Continuous system improvement

Accept Changes

Low threshold to changes

Continuously specify, design, code and test

What is eXtreme Programming ?

Page 21: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Testing

Automated testing

Create test before coding - Test Driven Design

The test will document requirements

Daily Build and Test - Unit Test, Integration Test and System Test

What is eXtreme Programming ?

Page 22: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

eXtreme Programming

Communication Teams

Democratic Teams

Chief Programmer Teams

Modified Chief Programmer Teams

Synchronize and Stabilize Teams

Extreme Programming Teams

Page 23: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

eXtreme Programming

Page 24: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

eXtreme Programming

Page 25: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

eXtreme Programming

Researched by New York Times

Page 26: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

XP is based upon 4 core values

Communication

Simplicity

Feedback

Courage

eXtreme Programming

Page 27: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

12 Practices

eXtreme Programming

Planning Game Small Releases Metaphor Simple Design Testing Refactoring Pair Programming Collective Code Ownership Continuous Integration Sustainable Pace Onsite Customer Coding Standards

Page 28: Pair Programming and  Extreme Programming Technology SungKyunKwan University

SungKyunKwan University PhD Candidate [email protected]

Thank You