The benefits of pair programming are well-known but enabling it is hard. It is clear that incorporating it into the workplace sustainably requires a fundamental shift in culture. After working at 2 startups who implemented different versions of pair programming, I came to Pivotal Labs with my own stories and preconceived notions. Pivotal Lab's engineers (and sometimes designers and product managers) pair program 8hours/day every workday and help enable other companies to practice it with us. It seems impossible but after spending a year fully immersed, the trends in having a sustainable pair programming culture have started to surface. Hear from someone who is a newfound believer in pair programming on the structure Pivotal Labs has put in place to enable it, war stories, and lessons learned.
1 of 95
Downloaded 10 times
More Related Content
Further together: Curated Pairing Culture @Pivotal
42. @nerdneha
#furtherpairingtogether
#qconsf
Whats particularly unique about our culture
Pivots are well-equipped and willing to:
Be vulnerable
Be fearless
Go slower in the short term for long term gain
Trust that others will do the right thing
Eliminate code and emotional silos
Do the right thing for the team
43. @nerdneha
#furtherpairingtogether
#qconsf
How did we build this culture?
TDD
Set Schedule
Retros & Feedback loops
Well-written stories
Fewer meetings
Hiring for good pairs
CI & CD
Taking our Mission seriously
61. @nerdneha
#furtherpairingtogether
#qconsf
The big picture at Pivotal Labs
Pairadise
Test Driven Development
Set Schedule
Retros &
Feedback
Few Meetings
Concise,
independent,
prioritized stories
CI & CD
Hiring for
good pairs
Pairadise
69. @nerdneha
#furtherpairingtogether
#qconsf
Im exhausted, talking so much is tiring
Wont the team move half as fast?
I dont get much value out of it
[X activity] isnt pair worthy
I dont like the inflexible schedule
Im always being watched
Hard to work with someone when you disagree
Its the blind leading the blind
Prepair. Know the opposition
70. @nerdneha
#furtherpairingtogether
#qconsf
1 computer, 2 monitors, 2 mice, 2 keyboards
Mirror screens
Increase your font
Git duet-commit
Good IDE
Keycastr to see shortcut keystrokes
Pairing setup hardware/software
71. @nerdneha
#furtherpairingtogether
#qconsf
Remote pairing: GET GOOD HARDWARE
Good Headphones
Good Internet connection
Set schedule, procedures, and expectations
More explicit back & forth (ex: ping pong pairing)
Check-in more
Take time to build rapport
Try for some in-person pairing at the beginning IF possible
72. @nerdneha
#furtherpairingtogether
#qconsf
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
The intangibles of Pairing
77. @nerdneha
#furtherpairingtogether
#qconsf
Imbalanced Levels in Pairing
For the more experienced pair. You want to pair because:
Fewer repeated questions
Freeing you up for more complex work
You wont be called up on vacation
For the less experienced pair. You want to pair because:
Learn more/faster
Get reasoning behind methods & business context
81. @nerdneha
#furtherpairingtogether
#qconsf
Built project in Go but dont know Go
Learned React
Enable clients to transition to software engineer roles
Rapid prototyping-user testing
Accomplishments because of Pairing culture
84. @nerdneha
#furtherpairingtogether
#qconsf
Tool chest to prevent & mitigate issues as
they come up
SWOT Analysis: what is your teams combined profile?
Personal Goals: what do we each want out of the project?
Inception
Set schedule/cadence
85. @nerdneha
#furtherpairingtogether
#qconsf
Tool chest to prevent & mitigate issues as
they come up
SWOT Analysis: what is your teams combined profile?
Personal Goals: what do we each want out of the project?
Inception
Set schedule/cadence
Provide feedback opportunities at multiple levels
Provide safe haven to get work done free from scope changes
Have a way to collect concerns and dedicated time to discuss them
86. @nerdneha
#furtherpairingtogether
#qconsf
Tool chest to prevent & mitigate issues as
they come up
SWOT Analysis: what is your teams combined profile?
Personal Goals: what do we each want out of the project?
Inception
Set schedule/cadence
Provide feedback opportunities at multiple levels
Provide safe haven to get work done free from scope changes
Have a way to collect concerns and dedicated time to discuss them
Talk in person
Write down conversation/context
Find a way to align first (ex: TDD + Pairing or discussing high-level)
Daily retros
88. @nerdneha
#furtherpairingtogether
#qconsf
What was surprising about pairing after 1 year
Pair Programming is like making friends, it takes time
You will need an extra hour or more of sleep per night
Have patience with yourself and others
You can code/ramp up with anything now
90. @nerdneha
#furtherpairingtogether
#qconsf
Why does Pair Programming stick at Pivotal?
Enablement-focused
Nature of our projects
Shared-accountability
Same backlog
IPMs point stories but emphasis on low volatility, not high velocity
No silos
91. @nerdneha
#furtherpairingtogether
#qconsf
Why does Pair Programming stick at Pivotal?
Enablement-focused
Nature of our projects
Shared-accountability
Same backlog
IPMs point stories but emphasis on low volatility, not high velocity
No silos
Empowered coworkers
Setting the tone during Onboarding, Inception, and through Management
No singling out (always as pairs that change daily)
No question is stupid
Empathetic coworkers
94. @nerdneha
#furtherpairingtogether
#qconsf
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: Novicenovice vs. expertexpert
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 (blog: nerdneha.tumblr.com)