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

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. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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?
  8. 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]
  9. 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
  10. 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]
  11. 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?
  12. Mistakes made by some teams: pairing juniors with super experienced

    devs =busy, under pressure, been in the industry for too long.