$30 off During Our Annual Pro Sale. View Details »

Pair-programming from a beginner's perspective

Pair-programming from a beginner's perspective

In this talk I discussed the challenges faced by junior and senior developers when working as a pair. During the session I considered the learning needs of developers on both sides of the skill spectrum and suggested a set of techniques which can be used to overcome the challenges faced by both types when working together to achieve a productive and enjoyable pair-programming experience.

Irina Tsyganok

December 29, 2015
Tweet

More Decks by Irina Tsyganok

Other Decks in Programming

Transcript

  1. Pair programming from
    a beginner’s
    perspective
    Irina
    @irinabasrawi

    View Slide

  2. The beginner
    Associate Software Developer at YOOX Net-A-Porter Group (3 months)
    ● www.net-a-porter.com : purchase path & customer accounts
    Technology Graduate at Net-A-Porter Group (12 months)
    Test Automation
    UX
    Web Dev
    Java Dev

    View Slide

  3. WHY?

    View Slide

  4. Pair - programming is a social skill [extremeprogramming.org]
    Theory and practice of pairing could not be more different if they tried
    It is hard to pair, and it is harder to pair with a junior
    Fun facts

    View Slide

  5. Things to consider
    The needs of pairs with different skill levels
    The pain points of the junior dev
    The pain points of the senior dev
    Pairing vs mentoring?
    Key tips on pairing with juniors

    View Slide

  6. The Junior The Senior
    Inexperienced
    Lacking confidence
    Hesitates to make a suggestion
    Minimal knowledge of the
    codebase
    Focus of learning: codebase,
    terminology, architecture, IDE
    shortcuts
    Expert
    Confident
    Happily suggests solutions
    Knows the codebase very well
    Focus of learning: best
    practices, trends, system
    performance
    Personas

    View Slide

  7. Junior Senior
    Opportunity to try things out
    Permission to make mistakes
    Encouragement to experiment
    Constructive feedback
    Friendly disposition from their
    pair
    Deliver fast?
    The needs

    View Slide

  8. Pain points of the Junior
    I am slowing him down
    Sometimes I don’t understand what he is
    saying
    I ask questions all the time
    If don’t get to drive, I struggle to
    stay engaged
    If I disengage from the session
    regularly, I am not learning
    If I am not learning, I will remain a
    slow pair for a long time

    View Slide

  9. Pain points of the Senior
    He is slowing me down
    We’ve been discussing this for 10 minutes - it
    will take me just 2 seconds to type the thing in
    and move on
    This is a one-way conversation - I seem to talk
    and explain all the time
    What kind of pairing is this?

    View Slide

  10. Junior + Senior != pairing?
    “A teacher-student relationship feels very different from two
    people working together as equals even if one has significantly
    more experience...
    [extremeprogramming.org]

    View Slide

  11. Benefits
    Knowledge transfer
    Collaboration at the center of company culture
    Possible antidote to Bram’s Law

    View Slide

  12. Key tips on pairing with junior developers
    ● Acknowledge the fact you are pairing with a junior
    ○ they will require more support, patience and guidance
    ○ decide if you have the right attitude, enough time, experience in pair-
    programming
    ● Pick a suitable story to work on
    ● Reflect and adapt the way you work to suit you both
    ● Think out loud
    ● Feedback continuously and constructively
    ● Do the small talk

    View Slide

  13. Final thoughts
    ..Our willingness to
    work together could be the juice that will push computers forward. We will
    all have to master pair-programming (not just mentoring) to make this work.
    It will be awesome.
    Best regards. -- Ward
    [Ward Cunningham on Pair Programming to the pdxruby mailing list. Thu, 29 Nov 2012]

    View Slide

  14. How about children pairing to solve problems? (e.g.
    Code Club)
    They don’t have any knowledge of the domain
    But they are not shy to ask (snatch) a keyboard & mouse from each other.
    You will see them constantly leaning over each other, pointing at the screen and
    experimenting with solutions.
    (is it because they all feel equal? or maybe because they tend to choose their
    friends to pair with? as grown ups, what can we learn from their behaviour? do we
    need to try to work with people who we don’t naturally click with or do we just hope
    that there is always someone in the team who can fit our ‘perfect pairing partner’
    criteria?

    View Slide

  15. Mistakes made by some teams:
    pairing juniors with super experienced devs
    =busy, under pressure, been in the industry for too long.

    View Slide

  16. A good post on pairing with junior developers
    http://www.devmynd.com/blog/2015-1-pairing-with-junior-developers/
    @irinabasrawi
    irinabasrawi.com
    Thank you

    View Slide