Skip to content

Commit

Permalink
Split out a driver/navigator page
Browse files Browse the repository at this point in the history
This further emphasises that these are different, and gives a useful
place to link driver/navigator-specific resources.
  • Loading branch information
illicitonion committed Oct 28, 2024
1 parent 870ecbd commit 44ae5bc
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 12 deletions.
12 changes: 6 additions & 6 deletions org-cyf-guides/content/pair-programming/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
22 changes: 22 additions & 0 deletions org-cyf-guides/content/pair-programming/driver-navigator/index.md
Original file line number Diff line number Diff line change
@@ -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)
14 changes: 8 additions & 6 deletions org-cyf-guides/content/pair-programming/mentored/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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**.

0 comments on commit 44ae5bc

Please sign in to comment.