Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Two heads are better than one

Two heads are better than one

Learn how to pair effectively, considering the psychological mindset when pairing, pairing etiquette, techniques, ideal desk setup...

Elle Meredith

July 26, 2017
Tweet

More Decks by Elle Meredith

Other Decks in Programming

Transcript

  1. T W O H E A D S A R E
    B E T T E R T H A N O N E
    E L L E M E R E D I T H » @ A E M E R E D I T H » B L A C K M I L L . C O

    View Slide

  2. W H AT G E T ' S I N T H E
    WAY I S F E A R

    View Slide

  3. C O N F I D E N T H U M I L I T Y
    – A N G E L A H A R M S

    View Slide

  4. “It’s about… having the courage to say, “I don’t
    know what’s going on”. And so we need to do this
    again or figure it out or talk about it. Courage to
    grab the keyboard [or] give it up… whether you are
    junior or a senior, it’s your job to take the lead into
    teaching the other person how to collaborate
    because collaboration is a beautiful thing but most
    people don’t know how to do it.’’

    View Slide

  5. Psychological safety is ‘‘a sense of confidence that
    the team will not embarrass, reject or punish
    someone for speaking up… It describes a team
    climate characterized by interpersonal trust and
    mutual respect in which people are comfortable
    being themselves.’’

    View Slide

  6. B E N E F I T S
    • Improves code design quality
    • Reduces bugs
    • Enhances technical skills (become a better programmer)
    • Improves transfer of technical skills
    • Improves team communications
    • Improves diffusion of knowledge among the team
    • Reduces staffing risk
    • Improves focus

    View Slide

  7. B E N E F I C I A L S K I L L S
    • Prefer talking over thinking
    • Listening
    • Being friendly
    • Being gentle
    • Being curious, not passive

    View Slide

  8. T O M A K E Y O U R PA I R I N G S E S S I O N
    S U C C E S S F U L , F O C U S O N T H E C O D E

    View Slide

  9. W H E N PA I R S A R E E N G A G E D , F U L LY
    C O L L A B O R AT I V E , N O T D I S T R A C T E D
    = > g o o d p a i r i n g s e s s i o n

    View Slide

  10. B E F O R E H A N D
    • Establish a communication channel if remote pairing
    • Personal check-in
    • Work approach check-in
    • Agree on tools
    • Discuss Git workflow
    • Agree on technique
    • Communicate your expectations so that you’re on the same
    page

    View Slide

  11. A F T E R WA R D
    • Hold a retrospective

    View Slide

  12. PA I R I N G E T I Q U E T T E
    • Share everything equally: no keyboard hogging
    • Turn off notifications/close apps to remove distractions
    • No social surfing, checking Twitter, Facebook, or email
    • Stop when you’re tired - take many breaks
    • When you see someone make a typo, wait
    • When talking about code, always refer to line number and
    file name
    • When disagreeing, talk in terms of benefit
    • When you're the navigator, don't dictate the code

    View Slide

  13. T E C H N I Q U E S
    • Driver-Navigator
    • Active participation and constant communication is crucial
    • Tip: switch roles throughout the session
    • Potential pitfall: navigator stops paying attention, and the
    driver starts doing their own thing

    View Slide

  14. T E C H N I Q U E S
    • Ping pong
    • Especially effective when writing tests
    • Tip: control can be passed back and forth frequently ,but in
    order to target what each person needs in their learning, it
    requires communication
    • Potential pitfall: not setting expectations ahead of time
    could make it more difficult to decide who is doing what

    View Slide

  15. T E C H N I Q U E S
    • Distributed Pairing (remote)
    • Tips: invest in a good headset; Become more comfortable
    with the tools; Be more vocal about when to switch driver
    and navigator roles
    • Potential pitfall: technical issues are common, so test your
    tools ahead of time!

    View Slide

  16. I D E A L D E S K S E T U P
    • 2 monitors, 2 keyboards, 2 mice/trackpads, 1 computer
    • Lowest denominator text editor
    • Shared `.vimrc`

    View Slide

  17. R E M O T E PA I R I N G T O O L S
    • tmate.io (+ Skype or Google Hangouts)
    • `brew install tmate`
    • `tmate`
    • `ctrl d` to stop session
    • Screen Hero

    View Slide

  18. PA I R I N G W I T H J U N I O R S
    • Don't type
    • Let them make decisions and mistakes
    • Take breaks
    • Be prepared to say “I don’t know”
    • Find what they can teach you

    View Slide

  19. PA I R I N G W I T H A R O C K S TA R
    As a junior you are still providing value and
    it is your job to teach them how to collaborate
    and communicate better. You should ask heaps of
    questions. You should ask to type.

    View Slide

  20. C O M P R O M I S E D E X P E C TAT I O N S
    • Paired project fallacy
    • I’m not as good as my partner
    • Developer’s ego
    • Ego is what prevents us from asking for help, learning, and
    collaborating

    View Slide

  21. B R O K E N E X P E C TAT I O N S
    • Check your reaction
    • Silence, avoidance, passive aggressive, sarcasm, anger,
    personal attacks, fundamental attribution error…
    • Humanise the situation:
    • Why did this happen? is there a deadline? How do I
    contribute to the problem?
    • Facilitate a conversation

    View Slide

  22. TA K E A WAY S
    • Confident humility
    • Learn from each session
    • Take breaks
    • Talk a lot! even more when remote pairing
    • Pay attention
    • Switch roles often
    • Be complimentary
    • Whoever knows least should do most of the driving
    • Every session with a new person will be different
    • Pairing does not replace code reviews

    View Slide

  23. R E S O U R C E S
    • https://devchat.tv/ruby-rogues/049-rr-agile-communication-with-angela-
    harms
    • https://www.agilealliance.org/glossary/pairing/
    • http://www.pairprogramwith.me
    • https://content.pivotal.io/blog/pairing-like-a-pivot
    • https://www.devmynd.com/blog/2015-1-pairing-with-junior-developers/
    • https://www.thoughtworks.com/insights/blog/pair-programming-hard-
    talk-your-team
    • Does Pair Programming have to suck? by Angela Harms, https://
    www.youtube.com/watch?v=OQXEzwXtzJ8
    • https://www.nytimes.com/2016/02/28/magazine/what-google-learned-
    from-its-quest-to-build-the-perfect-team.html?_r=0
    • http://www.fatosmorina.com/ego-enemy-software-developers/

    View Slide

  24. T H A N K S !
    E L L E M E R E D I T H » @ A E M E R E D I T H » B L A C K M I L L . C O

    View Slide