From 44ae5bc3e2cfc6d84eb6019bacbbfbee94fd7e7e Mon Sep 17 00:00:00 2001 From: Daniel Wagner-Hall Date: Mon, 28 Oct 2024 12:00:15 +0000 Subject: [PATCH] Split out a driver/navigator page This further emphasises that these are different, and gives a useful place to link driver/navigator-specific resources. --- .../content/pair-programming/_index.md | 12 +++++----- .../driver-navigator/index.md | 22 +++++++++++++++++++ .../pair-programming/mentored/index.md | 14 +++++++----- 3 files changed, 36 insertions(+), 12 deletions(-) create mode 100644 org-cyf-guides/content/pair-programming/driver-navigator/index.md diff --git a/org-cyf-guides/content/pair-programming/_index.md b/org-cyf-guides/content/pair-programming/_index.md index e2be648c6..a6a12f928 100644 --- a/org-cyf-guides/content/pair-programming/_index.md +++ b/org-cyf-guides/content/pair-programming/_index.md @@ -4,17 +4,17 @@ 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. +Pair programming prepares our trainees for technical interviews when they'll code in front of other people. -## What +## How -Pair programming is working together with someone else to code a solution to a problem. +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. - -Sometimes one person does all of the writing, and has discussion with the other. Other times, people take turns writing. 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..49bcb6201 --- /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/mentored/index.md b/org-cyf-guides/content/pair-programming/mentored/index.md index 395bedaa5..a90f6d73f 100644 --- a/org-cyf-guides/content/pair-programming/mentored/index.md +++ b/org-cyf-guides/content/pair-programming/mentored/index.md @@ -7,16 +7,18 @@ 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 +* **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. @@ -25,4 +27,4 @@ The **mentor** should: * 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, 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**. +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**.