From 4b91324f4c83fd2372cc4a790cccf95bb7fd77b0 Mon Sep 17 00:00:00 2001 From: Daniel Wagner-Hall Date: Mon, 28 Oct 2024 16:24:17 +0000 Subject: [PATCH] Add extra guidance on mentored pair programming (#1133) We want to specifically call out to volunteers that, unlike in other pair programming, they're not meant to write code _or_ say what code to write. --- .../content/pair-programming/_index.md | 20 +++++++++++++ .../driver-navigator/index.md | 22 ++++++++++++++ .../pair-programming/{ => guidance}/index.md | 23 ++++---------- .../pair-programming/mentored/index.md | 30 +++++++++++++++++++ 4 files changed, 78 insertions(+), 17 deletions(-) create mode 100644 org-cyf-guides/content/pair-programming/_index.md create mode 100644 org-cyf-guides/content/pair-programming/driver-navigator/index.md rename org-cyf-guides/content/pair-programming/{ => guidance}/index.md (58%) create mode 100644 org-cyf-guides/content/pair-programming/mentored/index.md diff --git a/org-cyf-guides/content/pair-programming/_index.md b/org-cyf-guides/content/pair-programming/_index.md new file mode 100644 index 000000000..a6a12f928 --- /dev/null +++ b/org-cyf-guides/content/pair-programming/_index.md @@ -0,0 +1,20 @@ ++++ +title = 'Pair programming' +description = 'Practice writing code and getting support' +emoji = '👥' ++++ + +Pair programming is working together with someone else to code a solution to a problem. + +## Why +Pair programming is an excellent way to develop programming and communication skills. + +It can be easier to work through a problem when working with someone 1-to-1. + +Pair programming prepares our trainees for technical interviews when they'll code in front of other people. + +## How + +Choose your style: [mentored](./mentored/) or [driver/navigator](./driver-navigator/). Think about whether to pair with another learner or a mentor - both are useful, but they're different. + +Pick a piece of programming to do, find a buddy, and work on it together. diff --git a/org-cyf-guides/content/pair-programming/driver-navigator/index.md b/org-cyf-guides/content/pair-programming/driver-navigator/index.md new file mode 100644 index 000000000..fe968a963 --- /dev/null +++ b/org-cyf-guides/content/pair-programming/driver-navigator/index.md @@ -0,0 +1,22 @@ ++++ +title = 'Driver/navigator pair programming' +description = 'Taking turns writing code' +emoji = '👥' +weight = 3 ++++ + +A common form of pair-programming has the pairs taking turns. One acts as the "driver" - actually using the keyboard. The other acts as the "navigator" - providing directions and support. + +This is different from [mentored pair programming](../mentored/) where the learner is doing most of the work, with the mentor is there to support and stretch. + +You can do driver/navigator pair programming regardless of the levels of the pairs. Two learners can do this. A learner can do this with a mentor. Both are useful. Lots of people do this at work as software engineers: this is not just for learning. + +If a learner is pairing with a mentor, they should still take turns. The learner will benefit from writing code. The learner will also benefit from seeing how the mentor writes code. Mentors will be able to help both by seeing how a learner writes code, and how they think/direct. + +## Resources + +[Our general pair programming guidance](../guidance/) + +[Tips for pair programming](https://www.csteachingtips.org/tips-pair-programming) + +[Guidance on pair programming for learning](https://teachtogether.tech/en/#s:classroom-pair) diff --git a/org-cyf-guides/content/pair-programming/index.md b/org-cyf-guides/content/pair-programming/guidance/index.md similarity index 58% rename from org-cyf-guides/content/pair-programming/index.md rename to org-cyf-guides/content/pair-programming/guidance/index.md index 980fc658a..4b6416866 100644 --- a/org-cyf-guides/content/pair-programming/index.md +++ b/org-cyf-guides/content/pair-programming/guidance/index.md @@ -1,30 +1,19 @@ +++ -title = 'Pair programming' +title = 'Guidance' description = 'Practice writing code and getting support' emoji = '👥' +weight = 1 +++ -Pair programming is an excellent way to develop programming and communication skills. +## How -It is often much easier to work through something when working on something 1-to-1. +You can do pair programming in person (sharing one computer), or remotely (either by sharing your screen, or using something like [CodeTogether](https://marketplace.visualstudio.com/items?itemName=genuitecllc.codetogether)). -It is also helps our trainees to prepare for technical interviews when they'll need to code in front of other people. - -## What - -Pair programming is working together with someone else to code a solution to a problem. - -Pick a piece of programming to do, find a buddy, and work on it together. - -You can do this in person (sharing one computer), or remotely (either by sharing your screen, or using something like [CodeTogether](https://marketplace.visualstudio.com/items?itemName=genuitecllc.codetogether)). - -Sometimes one person does all of the writing, and has discussion with the other. Other times, people take turns writing. - -## Guidance for trainees +## Guidance for learners When approaching a problem, you need to **explain your thought process**, **plan out what to do**, **write the code**, and **check that it works**. -## Guidance for volunteers +## Guidance for mentors **Help people learn**: Most of the exercises the trainees are doing aren't useful in their own right. The point is for the trainee to learn and grow through them. Focus on understanding, and techniques that will help solve the next problem. diff --git a/org-cyf-guides/content/pair-programming/mentored/index.md b/org-cyf-guides/content/pair-programming/mentored/index.md new file mode 100644 index 000000000..a90f6d73f --- /dev/null +++ b/org-cyf-guides/content/pair-programming/mentored/index.md @@ -0,0 +1,30 @@ ++++ +title = 'Mentored pair programming' +description = 'Practice writing code and getting support' +emoji = '👥' +weight = 2 ++++ + +We assign **mentored pair programming** as a coursework assignment throughout the course. + +This is different from [driver/navigator](../driver-navigator/) pair-programming where the pairs take turns. + +All of the standard [pair programming guidance](../guidance) applies - make sure you're familiar with it. + +**Before** a mentored pair programming session, learners should decide what they're going to pair on and share this with the volunteer, e.g. by sharing a link to a particular Codewars exercise, a particular piece of coursework, or some other problem. + +**During** mentored pair programming, the **learner** should: +* **Explain** their thought process +* **Break down** the problem +* **Plan** what code to write +* **Write** all of the code +* **Check** that it works + +The **mentor** should: +* **Ask questions** to get the trainee thinking. It's always better to _ask_ than tell. +* Help the trainee think about breaking down the problem +* Support the trainee as they write code +* Help the trainee to debug their code +* Stretch the trainee by bringing up edge cases or complications + +This is different from other forms of pair programming (e.g. [driver/navigator](../driver-navigator/)), where both people may be expected to write code, or people may take turns at different roles. This is because the goal is different: the goal is **teaching**.