pair programming 2 > 1 + 1

62
Pair Programming: 2 > 1 + 1 Neha Batra @nerdneha

Upload: neha-batra

Post on 19-Feb-2017

622 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Pair programming  2 > 1 + 1

Pair Programming:2 > 1 + 1

Neha Batra @nerdneha

Page 2: Pair programming  2 > 1 + 1

1. Intro2. Adapting pairing to your work3. The big picture4. Pairing techniques5. Resources on pairing

Pair Programming: 2 > 1 + 1

@nerdneha

(What/Why)(When)(Where)(How)(Says who [else]?)

Page 3: Pair programming  2 > 1 + 1

1. Intro (What/Why)2. Adapting pairing to your work3. The big picture4. Pairing techniques5. Resources on pairing

Pair Programming: 2 > 1 + 1

@nerdneha

Page 4: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 5: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 6: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 7: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 8: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 9: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 10: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 11: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 12: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 13: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 14: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 15: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 16: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 17: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 18: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 19: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 20: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 21: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 22: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 23: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 24: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 25: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 26: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 27: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 28: Pair programming  2 > 1 + 1

Credit: Onsi Fakhouri

Page 29: Pair programming  2 > 1 + 1

What does good Pairing look like?

➔ Distraction-free➔ Collaboration➔ Sustainability (“bus factor”)➔ Fewer rabbit holes➔ Constant communication➔ Teaching/Learning symbiosis

@nerdneha

Page 30: Pair programming  2 > 1 + 1

The Benefits of Pairing

➔ Productivity➔ Code Quality➔ Project Success

@nerdneha

Page 31: Pair programming  2 > 1 + 1

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

Page 32: Pair programming  2 > 1 + 1

My world of Pair Programming

@nerdneha

Page 33: Pair programming  2 > 1 + 1

1. Intro2. Adapting pairing to your work (When)3. The big picture4. Pairing techniques5. Resources on pairing

Pair Programming: 2 > 1 + 1

@nerdneha

Page 34: Pair programming  2 > 1 + 1

Best pairing conditions?

➔ Isolated team➔ Few interruptions/meetings➔ Buy-in to execute on priorities➔ PM/Design resources available

@nerdneha

Page 35: Pair programming  2 > 1 + 1

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

Page 36: Pair programming  2 > 1 + 1

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

Page 37: Pair programming  2 > 1 + 1

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

Page 38: Pair programming  2 > 1 + 1

1. Intro2. Adapting pairing to your work3. The big picture (Where)4. Pairing techniques5. Resources on pairing

Pair Programming: 2 > 1 + 1

@nerdneha

Page 39: Pair programming  2 > 1 + 1
Page 40: Pair programming  2 > 1 + 1
Page 41: Pair programming  2 > 1 + 1

The big picture at Pivotal Labs

@nerdneha

Client Pivotal

Page 42: Pair programming  2 > 1 + 1

The big picture at Pivotal Labs

@nerdneha

Team

Page 43: Pair programming  2 > 1 + 1

The big picture at Pivotal

@nerdneha

Test Driven Development

Pairadise

Page 44: Pair programming  2 > 1 + 1

The big picture at Pivotal

@nerdneha

Test Driven Development

Set Schedule (9am-6pm)Pairadise

Page 45: Pair programming  2 > 1 + 1

The big picture at Pivotal

@nerdneha

Test Driven Development

Set Schedule (9am-6pm)

Retros & Feedback

Pairadise

Page 46: Pair programming  2 > 1 + 1

RETROS BE LIKE

Page 47: Pair programming  2 > 1 + 1

The big picture at Pivotal

@nerdneha

Test Driven Development

Set Schedule (9am-6pm)

Retros & Feedback

Concise, independent, prioritized stories

Pairadise

Page 48: Pair programming  2 > 1 + 1

The big picture at Pivotal

@nerdneha

Test Driven Development

Set Schedule (9am-6pm)

Retros & Feedback

Few Meetings

Concise, independent, prioritized stories

Pairadise

Page 49: Pair programming  2 > 1 + 1

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

Page 50: Pair programming  2 > 1 + 1
Page 51: Pair programming  2 > 1 + 1
Page 52: Pair programming  2 > 1 + 1

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

Page 53: Pair programming  2 > 1 + 1

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

Page 54: Pair programming  2 > 1 + 1

1. Intro2. Adapting pairing to your work3. The big picture4. Pairing techniques (How)5. Resources on pairing

Pair Programming: 2 > 1 + 1

@nerdneha

Page 55: Pair programming  2 > 1 + 1

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

Page 56: Pair programming  2 > 1 + 1

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

Page 57: Pair programming  2 > 1 + 1

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

Page 58: Pair programming  2 > 1 + 1
Page 59: Pair programming  2 > 1 + 1

1. Intro2. Adapting pairing to your work3. The big picture4. Pairing techniques5. Resources on pairing (Says who?)

Pair Programming: 2 > 1 + 1

@nerdneha

Page 60: Pair programming  2 > 1 + 1

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 Kutnerhttps://pragprog.com/book/jkrp/remote-pairing

Pair programming productivity: Novice–novice vs. expert–experthttp://www.cs.utexas.edu/users/mckinley/305j/pair-hcs-2006.pdf

The effectiveness of pair programming: A meta-analysishttp://www.sciencedirect.com/science/article/pii/S0950584909000123

Evaluating Pair Programming with Respect to System Complexity and Programmer Expertisehttp://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=4052584

Resources on Pairing (on my blog, too!)

@nerdneha

Page 61: Pair programming  2 > 1 + 1

1. Intro2. Adapting pairing to your work3. The big picture4. Pairing techniques5. Resources on pairing

Pair Programming: 2 > 1 + 1

@nerdneha

(What/Why)(When)(Where)(How)(Says who [else]?)

Page 62: Pair programming  2 > 1 + 1

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