Pair programming is and has been the "buzz" concept for software for good reason: the sum is greater than its parts. But what actually goes into making pairing work for a project or even for the rest of your career? Hear from someone crazy enough to accept pairing for the rest of her career and actionable tips on how to make it go well and how to avoid it going horribly.
2. 1. Intro
2. Adapting pairing to your work
3. The big picture
4. Pairing techniques
5. Resources on pairing
Pair Programming: 2 > 1 + 1
@nerdneha
(What/Why)
(When)
(Where)
(How)
(Says who [else]?)
3. 1. Intro (What/Why)
2. Adapting pairing to your work
3. The big picture
4. Pairing techniques
5. Resources on pairing
Pair Programming: 2 > 1 + 1
@nerdneha
29. What does good Pairing look like?
➔ Distraction-free
➔ Collaboration
➔ Sustainability (“bus factor”)
➔ Fewer rabbit holes
➔ Constant communication
➔ Teaching/Learning symbiosis
@nerdneha
30. The Benefits of Pairing
➔ Productivity
➔ Code Quality
➔ Project Success
@nerdneha
31. The Benefits of Pairing
➔ Productivity
➔ Code Quality
➔ Project Success
◆ Easy temperature on team
◆ Easy to help/understand what’s going on
➔ Happiness
➔ Skill growth/sharing
➔ Career Success @nerdneha
33. 1. Intro
2. Adapting pairing to your work (When)
3. The big picture
4. Pairing techniques
5. Resources on pairing
Pair Programming: 2 > 1 + 1
@nerdneha
34. Best pairing conditions?
➔ Isolated team
➔ Few interruptions/meetings
➔ Buy-in to execute on priorities
➔ PM/Design resources available
@nerdneha
35. Tips and Tricks to get bu -in
➔ Select team with “all hands on deck” feature
➔ Introduce concept as an experiment
➔ Loop in product owner frequently
➔ Release early, often, and iterate
@nerdneha
36. Prepair: Know the opposition
“I’m exhausted, talking so much is tiring”
“Won’t the team move half as fast?”
“I don’t get much value out of it”
“[X activity] isn’t pair worthy”
“I don’t like the inflexible schedule”
“I’m always being watched”
“Hard to work with someone when you disagree”
“It’s the blind leading the blind” @nerdneha
37. Imposter Syndrome, defined
When it comes to your work life, it’s
not a sprint, it’s a marathon. Pair to
groom, grow, and share the
knowledge in your team.
@nerdneha
38. 1. Intro
2. Adapting pairing to your work
3. The big picture (Where)
4. Pairing techniques
5. Resources on pairing
Pair Programming: 2 > 1 + 1
@nerdneha
47. The big picture at Pivotal
@nerdneha
Test Driven Development
Set Schedule
(9am-6pm)
Retros &
Feedback
Concise,
independent,
prioritized stories
Pairadise
48. The big picture at Pivotal
@nerdneha
Test Driven Development
Set Schedule
(9am-6pm)
Retros &
Feedback
Few Meetings
Concise,
independent,
prioritized stories
Pairadise
49. The big picture at Pivotal
@nerdneha
Test Driven Development
Set Schedule
(9am-6pm)
Retros &
Feedback
Few Meetings
Concise,
independent,
prioritized stories
CI & CD
Hiring for
good pairs
Pairadise
50.
51.
52. Reflections from a pairing noob
Feelings
● Uncertainty
● Worried about being a waste of time
● Felt dumb
● Relief that I wasn’t making decisions that are harshly
evaluated on “judgement day” (aka code review)
● Felt smarter!
@nerdneha
53. Reflections from a pairing noob
What Helped
● Structured predictable breaks
● Feedback at EOD
● Positive specific feedback on how I was helpful
● Talking about what we’re doing first explicitly (ex: via
TextMate)
@nerdneha
54. 1. Intro
2. Adapting pairing to your work
3. The big picture
4. Pairing techniques (How)
5. Resources on pairing
Pair Programming: 2 > 1 + 1
@nerdneha
55. Pairing setup: hardware/software
➔ 1 computer, 2 monitors, 2 mice, 2 keyboards
➔ Mirror screens
➔ Increase your font
➔ Git duet-commit
➔ Good IDE
➔ Keycastr to see shortcut keystrokes
@nerdneha
56. Pairing setup: the intangibles
➔ Take turns - try ping-pong pairing or Timeout
➔ Take breaks -
◆ Bonding: ping pong, cards (set)
◆ Time apart: catch up on emails/personal life
➔ Expairiment - mobbing
➔ Keep an open mind
@nerdneha
57. Imposter Syndrome, defined
Pairing is like making a new friend: it
isn’t always easy
but with patience and an open mind,
it can be worthwhile.
@nerdneha
58.
59. 1. Intro
2. Adapting pairing to your work
3. The big picture
4. Pairing techniques
5. Resources on pairing (Says who?)
Pair Programming: 2 > 1 + 1
@nerdneha
60. Extreme Programming Explained:
http://www.amazon.com/exec/obidos/ASIN/0321278658/extremeprogrammi
Pairing is more productive than soloing:
http://collaboration.csc.ncsu.edu/laurie/Papers/ieeeSoftware.PDF
Stanford Study on pairing, when and why it works: http://hci.stanford.edu/publications/2005/pairs/PairProgramming-
WhenWhy.pdf
Remote Pairing: Collaborative Tools for Distributed Development is a book by Joe Kutner
https://pragprog.com/book/jkrp/remote-pairing
Pair programming productivity: Novice–novice vs. expert–expert
http://www.cs.utexas.edu/users/mckinley/305j/pair-hcs-2006.pdf
The effectiveness of pair programming: A meta-analysis
http://www.sciencedirect.com/science/article/pii/S0950584909000123
Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise
http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4052584
Resources on Pairing (on my blog, too!)
@nerdneha
61. 1. Intro
2. Adapting pairing to your work
3. The big picture
4. Pairing techniques
5. Resources on pairing
Pair Programming: 2 > 1 + 1
@nerdneha
(What/Why)
(When)
(Where)
(How)
(Says who [else]?)
62. Prepair: Know the opposition
“I’m exhausted, talking so much is tiring”
“Won’t the team move half as fast?”
“I don’t get much value out of it”
“[X activity] isn’t pair worthy”
“I don’t like the inflexible schedule”
“I’m always being watched”
“Hard to work with someone when you disagree”
“It’s the blind leading the blind” @nerdneha