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

Pair Programming Workshop - PhillyXP

Pair Programming Workshop - PhillyXP

Slides for Pair Programming Workshop - PhillyXP October 2017 meeting

Anthony Sciamanna

October 26, 2017
Tweet

More Decks by Anthony Sciamanna

Other Decks in Programming

Transcript

  1. Welcome to
    Anthony Sciamanna | @asciamanna

    View Slide

  2. THE ORGANIZERS…
    Heather Blair
    Nick Goede
    Anthony Palumbi
    Mark Schell
    Anthony Sciamanna
    @phillyxp

    View Slide

  3. TONIGHT’S TOPIC
    @phillyxp
    Pair Programming & TDD

    View Slide

  4. Pair Programming Misconceptions

    View Slide

  5. FEATURE FACTORIES
    @phillyxp
    “Two people doing the work of one?? That’s a waste of expensive resources!”
    An antiquated factory mindset where number of keystrokes per
    hour and 100% utilization of developers are the goals
    Image courtesy of @johncutlefish

    View Slide

  6. FEATURE FACTORIES
     If we measure the value we are delivering to
    customers there is a compelling argument for
    pairing
     Pairing often reduces the time to market for
    features
    @phillyxp

    View Slide

  7. SELECTIVE PAIR PROGRAMMING
    @phillyxp
    “Most development tasks aren’t worth pairing on. We only pair when
    it is appropriate.”

    View Slide

  8. SELECTIVE PAIR PROGRAMMING
     Developers only pair in very specific situations
     To onboard a new developer
     When someone gets stuck
     Effective pair programming is deceptively
    challenging
     The less you do it the less useful it is to you
    @phillyxp
    Sometimes pair programming doesn't "take" -- most
    frequently when it's framed as one programmer
    helping out another who's struggling.
    -Tim Ottinger, Agile Coach and Author

    View Slide

  9. SELECTIVE PAIR PROGRAMMING CATCH-22
    @phillyxp
    Developers think
    pairing all the time
    is too prescriptive
    Only pair for “special
    circumstances”
    Pairing occurs so
    infrequently
    developers never
    build pairing skills
    Without the skills to
    effectively pair
    developers fail to see
    its benefit in the day-
    to-day work

    View Slide

  10. WHY SHOULD WE PAIR PROGRAM?
     Encourages team collaboration and team based design and
    development
     Improves / Creates opportunities for mentoring
     Drastically reduces onboarding time
     Flattens learning curves
     Knowledge travels through team quickly
     Builds trust / Team building
     Reinforces collective code ownership
     Eliminates Towers of Knowlege
     When paired with TDD creates a powerful workflow
     Results in higher quality code
     Limits WIP
     Encourages Swarming
     JIT code reviews (non-blocking code reviews)
     Interruption blocker
     Social pressure not to get distracted / Pairs stay in flow longer
    @phillyxp

    View Slide

  11. @phillyxp
    Test-Driven Development Refresher

    View Slide

  12. 2. Write only
    enough
    production code
    to make the test
    pass
    1. Create a failing unit test
    (not compiling counts as a
    failing test)
    3. Refactor only when all unit
    tests are passing
    Ping Pong
    Pair
    Programmi
    ng
    @phillyxp

    View Slide

  13. Nick Anthony
    Writes a failing test Makes the test pass
    Writes the next failing test
    Makes the next test pass
    Only when all tests pass either person can refactor
    Continue until both people agree there are no more tests to write
    @phillyxp

    View Slide

  14. WORKSHOP
     Split up into pairs…
     Non-developers can pair with a developer or join a
    pair as a third person
    @phillyxp
    [When pairing] learning happens every minute of
    every day while actual work is being done.
    -Richard Sheridan, Author of Joy, Inc. and CEO of Menlo
    Innovations

    View Slide

  15. WORKSHOP REPOSITORY
     SSH - [email protected]:PhillyXP/pair-
    programming-workshop.git
     HTTPS - https://github.com/PhillyXP/pair-
    programming-workshop.git
    @phillyxp

    View Slide

  16. WORKSHOP DEVELOPMENT TASKS
     As a Bill Payer I want to pay my mortgage bill on the first
    business day that is on or after the due date
     As a Bill Payer I want to pay my water bill on the first
    business day that is on or before the due date
     As a Bill Payer I want to treat holidays as non-business
    days (external holiday service)
     As a Bill Payer I want to pay my electric bill on the first
    business day that is closest to the due date
    @phillyxp
    HINT TO GET STARTED:
    Create objects with public methods that take a date and
    return a modified date based on business rules

    View Slide

  17. IDEAL PAIRING WORKSTATION
    @phillyxp

    View Slide

  18. RESOURCES
     The Costs and Benefits of Pair Programming
     https://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF
     Ping Pong Pair Programming
     http://anthonysciamanna.com/2015/04/18/ping-pong-pair-
    programming.html
     These books are excellent resources on pair programming
    @phillyxp

    View Slide