Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Pair Programming
Ruby User Group Linz, May 2015
Peter Kofler, ‘Code Cop’
@codecopkofler
www.code-cop.org
Copyright Peter K...
Peter Kofler
• Ph.D. (Appl. Math.)
• Professional Software
Developer for 15 years
• “fanatic about code quality”
• Freelan...
Training
on the
Job?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Yes, some but...
●
only what is already there
●
Trial & Error not po...
I help development teams with
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Professionalism
●
Quality and
Produc...
Mentoring
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
●
Pair Programming
●
Programming Workshops
●
Deliberate Pr...
Pair Programming
Pair Programming
●
Two programmers
●
work together
●
on the same thing
●
at one workstation.
Pair programming is a dialogu...
Enterprise CTO
not impressed by
pair programming.
“We often have hundreds
of developers working
on the same thing.”
(Hacke...
What are the benefits?
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Benefits
●
most immediate feedback
●
maintained self-discipline
●
we keep each other honest
●
improved code quality, less ...
“One disadvantage of
pair programming: you
have to go the toilet in
pairs too :-)”
(Zsolt Fabók)
Pairing Roles
Driver
●
Writes code
●
Takes the decisions
●
Consults with the Navigator
●
Focuses on short term actions
●
Verbalizes all ...
Navigator
●
Looks ahead for strategy
●
Rechecks facts of the Driver (review)
●
Remembers facts to the driver
●
Asks meanin...
The Rules
You Pair For...
●
Writing Production Code (XP Rule)
●
Any development on the mainline of
delivery (writing code, writing t...
Pairing is Useful For...
●
Tasks that need focused energy,
brainstorming, problem solving,
continuous design, mentoring an...
When Not to Pair
●
Non-mainline tasks like spiking
(prototyping), research, admin.
●
Tasks which call for quiet, steady fo...
How Long
●
70% of time, not more than 5 or 6 hours
●
Breaks!
●
Shift partners often
●
every hour to every couple of hours
...
Workstation
●
Partners sit comfortably side-by-side.
●
Level 0: Basic Pairing
●
Level 1: Good Pairing - two keyboards
●
Le...
Mob Programming
●
All the brilliant people
●
working at the same time,
●
in the same space,
●
at the same computer,
●
on t...
Human Aspects
Breaking the ice
●
Difficult to start pairing
●
The first sessions are awkward
●
Pairs open themselves one to the other
●
...
Behave Well
●
Personal hygiene is important.
●
Take a shower (1st
Rule of Pairing)
●
Use chewing gum
●
Be polite!
●
Have p...
“In pair programming
wait 15 seconds before
you point out mistakes.
Give your pair a chance
to find it first.”
(J. B. Rain...
Communicate Freely
●
Focus on the code
●
Ask questions
●
Express things (even to a newbie)
●
Talk about the code
PETER KOF...
Anti Patterns
●
Do not focus on typing/coding
●
Do not hug the keyboard
●
Do not dominate your pair
●
Do not zone out (mob...
Not for everyone
●
Do I want to sit next
to this person every day?
●
In doubt raise your voice
(don’t risk the project)
PE...
Getting Started
Learning Pair Programming
●
by doing
●
first in safe place outside work
●
Coding Dojo
●
Code Retreat
PETER KOFLER, CODE-CO...
Practice Pair Programming
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
Constraint: Ping-Pong
●
A writes a test and sees that it fails.
●
B writes the code needed to pass the test.
●
A or B refa...
Selling Pairing to Management
1. Pairing on or critical defects/problems
(Problem Pairing)
2. Pairing on important busines...
Moar Pair Programming!!1!
When you work alone
●
#PairWithMe, http://www.pairprogramwith.me/
●
Remote Pairing, e.g.
https://www.softwerkskammer.org/g...
“Don’t be afraid of pair-
programming - you’re
not as good as you think,
but you’re not as bad as
you fear.”
(Ron Jeffries)
Peter Kofler
@codecopkofler
www.code-cop.org
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
CC Images
●
driver http://www.flickr.com/photos/48694743@N00/517658329/
●
Hamster http://www.flickr.com/photos/zebrapares/...
Pair Programming (2015)
Upcoming SlideShare
Loading in …5
×

Pair Programming (2015)

648 views

Published on

Talk at Ruby User Group Linz (RUGL) Meetup #14 20.5.2015

Published in: Technology
  • Be the first to comment

Pair Programming (2015)

  1. 1. Pair Programming Ruby User Group Linz, May 2015 Peter Kofler, ‘Code Cop’ @codecopkofler www.code-cop.org Copyright Peter Kofler, licensed under CC-BY.
  2. 2. Peter Kofler • Ph.D. (Appl. Math.) • Professional Software Developer for 15 years • “fanatic about code quality” • Freelance Code Mentor PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  3. 3. Training on the Job?
  4. 4. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Yes, some but... ● only what is already there ● Trial & Error not popular in production ● no practice - only production ● time pressure
  5. 5. I help development teams with PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Professionalism ● Quality and Productivity ● Continuous Improvement
  6. 6. Mentoring PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY ● Pair Programming ● Programming Workshops ● Deliberate Practice, e.g. Coding Dojos, Code Retreats ● Code Reviews, Architecture Discussions
  7. 7. Pair Programming
  8. 8. Pair Programming ● Two programmers ● work together ● on the same thing ● at one workstation. Pair programming is a dialogue between two people simultaneously programming (and analysing and designing and testing) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  9. 9. Enterprise CTO not impressed by pair programming. “We often have hundreds of developers working on the same thing.” (Hacker News Onion)
  10. 10. What are the benefits? PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  11. 11. Benefits ● most immediate feedback ● maintained self-discipline ● we keep each other honest ● improved code quality, less defects ● knowledge sharing ● higher team bus number ● mentoring junior team members. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  12. 12. “One disadvantage of pair programming: you have to go the toilet in pairs too :-)” (Zsolt Fabók)
  13. 13. Pairing Roles
  14. 14. Driver ● Writes code ● Takes the decisions ● Consults with the Navigator ● Focuses on short term actions ● Verbalizes all the performed actions ● Less-informed pair member is driving PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://www.slideshare.net/adibolb/sherlock-holmes-and-pairing-wlidcard-conference-2013-09-13
  15. 15. Navigator ● Looks ahead for strategy ● Rechecks facts of the Driver (review) ● Remembers facts to the driver ● Asks meaningful questions ● Verbalizes agreement or disagreement ● Supports driver's decisions ● Does not cross the Driver's comfort zone PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  16. 16. The Rules
  17. 17. You Pair For... ● Writing Production Code (XP Rule) ● Any development on the mainline of delivery (writing code, writing tests, build engineering, documentation) ● Works well for web applications PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  18. 18. Pairing is Useful For... ● Tasks that need focused energy, brainstorming, problem solving, continuous design, mentoring and motivation. ● Pair by default and work solo by exception. (Novice Rule) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  19. 19. When Not to Pair ● Non-mainline tasks like spiking (prototyping), research, admin. ● Tasks which call for quiet, steady focus. ● Don’t insist on pairing for every task. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  20. 20. How Long ● 70% of time, not more than 5 or 6 hours ● Breaks! ● Shift partners often ● every hour to every couple of hours ● Pair Marriage is bad ● Need quiet work time. ● When interrupted, the negative impact is doubled. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  21. 21. Workstation ● Partners sit comfortably side-by-side. ● Level 0: Basic Pairing ● Level 1: Good Pairing - two keyboards ● Level 2: Great Pairing - mirrored screen ● Level 3: Awesome Pairing - eye contact ● Level 4: “Pair”-adise - extra laptop PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://www.nomachetejuggling.com/2011/08/25/mechanics-of-good-pairing/
  22. 22. Mob Programming ● All the brilliant people ● working at the same time, ● in the same space, ● at the same computer, ● on the same thing. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://mobprogramming.org/
  23. 23. Human Aspects
  24. 24. Breaking the ice ● Difficult to start pairing ● The first sessions are awkward ● Pairs open themselves one to the other ● Afraid of criticism PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  25. 25. Behave Well ● Personal hygiene is important. ● Take a shower (1st Rule of Pairing) ● Use chewing gum ● Be polite! ● Have patience! ● Be honest! PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  26. 26. “In pair programming wait 15 seconds before you point out mistakes. Give your pair a chance to find it first.” (J. B. Rainsberger)
  27. 27. Communicate Freely ● Focus on the code ● Ask questions ● Express things (even to a newbie) ● Talk about the code PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY http://www.slideshare.net/angelaharms/pair-programming-10082278
  28. 28. Anti Patterns ● Do not focus on typing/coding ● Do not hug the keyboard ● Do not dominate your pair ● Do not zone out (mobile phone etc.) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  29. 29. Not for everyone ● Do I want to sit next to this person every day? ● In doubt raise your voice (don’t risk the project) PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  30. 30. Getting Started
  31. 31. Learning Pair Programming ● by doing ● first in safe place outside work ● Coding Dojo ● Code Retreat PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  32. 32. Practice Pair Programming PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  33. 33. Constraint: Ping-Pong ● A writes a test and sees that it fails. ● B writes the code needed to pass the test. ● A or B refactors the code as needed. ● B writes next test and sees that it fails. ● A writes the code needed to pass the test. ● And so on. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  34. 34. Selling Pairing to Management 1. Pairing on or critical defects/problems (Problem Pairing) 2. Pairing on important business features 3. Pairing more often (Regular Pairing) 4. More often, etc. PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  35. 35. Moar Pair Programming!!1!
  36. 36. When you work alone ● #PairWithMe, http://www.pairprogramwith.me/ ● Remote Pairing, e.g. https://www.softwerkskammer.org/groups/remotepairing ● maybe substitutes ● invite friend for review ● use static code analysis PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  37. 37. “Don’t be afraid of pair- programming - you’re not as good as you think, but you’re not as bad as you fear.” (Ron Jeffries)
  38. 38. Peter Kofler @codecopkofler www.code-cop.org PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
  39. 39. CC Images ● driver http://www.flickr.com/photos/48694743@N00/517658329/ ● Hamster http://www.flickr.com/photos/zebrapares/4529836138 ● Bruce http://www.flickr.com/photos/sherpas428/4350620602/ ● pairing http://www.flickr.com/photos/dav/94735395/ ● wants you http://www.flickr.com/photos/shutter/105497713/ ● rules http://www.flickr.com/photos/mc_sensei/3935815039/ ● learn http://www.flickr.com/photos/83633410@N07/7658268052/ ● sign http://www.flickr.com/photos/hugosimmelink/2252095723/ ● ignition https://www.flickr.com/photos/billselak/391759360/ ● dojo http://www.flickr.com/photos/49715404@N00/3267627038/ ● Ping Pong https://www.flickr.com/photos/jasperfields/2442146122 PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY

×