<p>Paired programming is very effective at work too. We use <em>Skype for Business</em> to share screens (i.e., editor/output windows) and communicate in real time. If you don't have Skype, you can use <a href="https://slack.com/" rel="nofollow noreferrer">Slack</a>. Add <a href="https://github.com/" rel="nofollow noreferrer">GitHub</a> or <a href="https://bitbucket.org/product" rel="nofollow noreferrer">Bitbucket</a> to quickly share code, and you have a very collaborative environment.</p>

CC BY-SA 3.0
2017-07-06T15:47:05.357Z
2017-07-06T15:47:05.357Z
Edwin Torres
<p>I tend to avoid multiple students working on the same code simultaneously (Google Docs style) because it's really difficult to assess what has been done by each student or to stop one student dominating whilst the other doesn't understand what's happening. Either that or students tend to get distracted by what the other is writing.</p>

<p>Having said that, you could try:</p>

<ul>
<li>One person writes code whilst the other writes comments. This forces the two to discuss both what they're doing and what they're planning to do next.</li>
</ul>

<p>Other paired programming techniques that don't involve simultaneous access:</p>

<ul>
<li><p>Allocating a 'driver' and a 'navigator' to each pair of students: the navigator isn't allowed to touch the mouse of keyboard. The driver has to follow the navigator's instructions. Students swap after a set time. </p></li>
<li><p>Sabotage and share: get students to make deliberate syntax / runtime / logical errors in their code then share a link to their code in a shared document / forum. Get students to record each error they find and fix. Award points per bug fixed.</p></li>
</ul>

CC BY-SA 3.0
2017-07-03T11:24:36.507Z
That's not how pair programming works. It does have a confusing name, but you can read the tag wiki or go to the wikipedia page.
ItamarG3
CC BY-SA 3.0
2017-07-03T11:29:43.123Z
Agreed, but the question was about how to adapt pair programming to get students to collaborate side by side effectively. For pair programming to work you need two motivated, well behaved individuals who are competent and confident in programming. That's not always the case in a classroom.
pddring
CC BY-SA 3.0
2017-07-03T11:33:45.193Z
But pair programming is not about 2 people writing code on a computer at the same time. That's why I said that comment.
ItamarG3
CC BY-SA 3.0
2017-07-03T12:08:23.143Z
Hmmm. @ItamarG3. Pairing IS about 2 people on one computer even if distributed. Here is a pretty fair description, from [the source](https://www.agilealliance.org/glossary/pairing). Wikipedia has an article also. I don't avoid it, I embrace it, at any level.
Buffy
CC BY-SA 3.0
2017-07-03T15:04:15.467Z
I tend to think of pair programming as Rally Car: you have one person doing the driving, while the other is handling navigation. Which actually is what you have for the first bulletpoint of the second series.
Robert
CC BY-SA 3.0
2017-07-03T11:22:59.390Z
2017-07-03T11:22:59.390Z
pddring
<p>If you are using Cloud9 and you want them to be working on the same code at the same time (Google Docs-style), you can have one user share their workspace with the other (with read/write permission). There is a "share" button in the upper-right hand corner. We have successfully used this for group projects on Cloud9.</p>

CC BY-SA 3.0
2017-07-06T15:03:46.860Z
2017-07-06T15:03:46.860Z
John Bartucz
<p>Pair programming rather than solo programming is best practice in the CS classroom. Online IDEs like Cloud9 allow both members in the pair to work in a shared environment like google docs: working with independent keyboards and mice. What are effective practices for students working side-by-side to collaborate in such an environment?</p>

<p>I've experimented in my classroom and have arrived at my own solution, but I think the question deserves crowd creativity and crowd evaluation. </p>

<p>Note: I've experimented with Cloud9 in both online and onsite instruction, with different results. This question is about students working onsite, side-by-side.</p>

<p>Background:</p>

<p>Extensive use of pair programming in the K-12 environment is best practice over solo programming. Pair programming increases persistence and engagement, and reduces frustration and boredom. See for example <a href="http://www.tandfonline.com/doi/abs/10.1080/08993408.2011.579808" rel="noreferrer">Hanks et al. (2011) Pair programming in education: A literature review. <em>Computer Science Education</em> <strong>21</strong>:2.</a></p>

<p>Schools are increasingly using Chromebooks, which preclude a locally installed IDE. Computer science is being taught in an increasing number of sections on a school's master schedule, precluding instruction exclusively in a desktop computer lab environment. Effectively teaching programming using Chromebooks is important. </p>

CC BY-SA 3.0
2017-07-01T19:19:13.723Z
If you have enough bandwidth for a voice channel, you might also be able to do distributed (not face to face) pairing. I struggled with that for years. While it isn't your specific need, some here may have suggestions. It would enable home schoolers as well as those students out for illness or otherwise.
Buffy
<pair-programming>
How to adapt pair programming to a shared terminal environment like Cloud9?
# How to adapt pair programming to a shared terminal environment like Cloud9?

(Asked by: username_0 on 2017-07-01)

Pair programming rather than solo programming is best practice in the CS classroom. Online IDEs like Cloud9 allow both members in the pair to work in a shared environment like google docs: working with independent keyboards and mice. What are effective practices for students working side-by-side to collaborate in such an environment?

I've experimented in my classroom and have arrived at my own solution, but I think the question deserves crowd creativity and crowd evaluation.

Note: I've experimented with Cloud9 in both online and onsite instruction, with different results. This question is about students working onsite, side-by-side.

Background:

Extensive use of pair programming in the K-12 environment is best practice over solo programming. Pair programming increases persistence and engagement, and reduces frustration and boredom. See for example [Hanks et al. (2011) Pair programming in education: A literature review. *Computer Science Education* **21**:2.](http://www.tandfonline.com/doi/abs/10.1080/08993408.2011.579808)

Schools are increasingly using Chromebooks, which preclude a locally installed IDE. Computer science is being taught in an increasing number of sections on a school's master schedule, precluding instruction exclusively in a desktop computer lab environment. Effectively teaching programming using Chromebooks is important.

**Tags:** pair-programming

> **Comments:**
> **username_1**: If you have enough bandwidth for a voice channel, you might also be able to do distributed (not face to face) pairing. I struggled with that for years. While it isn't your specific need, some here may have suggestions. It would enable home schoolers as well as those students out for illness or otherwise.  

---

## 3 answers

### Answer by username_2 on 2017-07-06. Score: 1

Paired programming is very effective at work too. We use *Skype for Business* to share screens (i.e., editor/output windows) and communicate in real time. If you don't have Skype, you can use [Slack](https://slack.com/). Add [GitHub](https://github.com/) or [Bitbucket](https://bitbucket.org/product) to quickly share code, and you have a very collaborative environment.


---

### Answer by username_3 on 2017-07-03. Score: 1

I tend to avoid multiple students working on the same code simultaneously (Google Docs style) because it's really difficult to assess what has been done by each student or to stop one student dominating whilst the other doesn't understand what's happening. Either that or students tend to get distracted by what the other is writing.

Having said that, you could try:

* One person writes code whilst the other writes comments. This forces the two to discuss both what they're doing and what they're planning to do next.

Other paired programming techniques that don't involve simultaneous access:

* Allocating a 'driver' and a 'navigator' to each pair of students: the navigator isn't allowed to touch the mouse of keyboard. The driver has to follow the navigator's instructions. Students swap after a set time.
* Sabotage and share: get students to make deliberate syntax / runtime / logical errors in their code then share a link to their code in a shared document / forum. Get students to record each error they find and fix. Award points per bug fixed.

> **Comments:**
> **username_4**: That's not how pair programming works. It does have a confusing name, but you can read the tag wiki or go to the wikipedia page.  
> **username_3**: Agreed, but the question was about how to adapt pair programming to get students to collaborate side by side effectively. For pair programming to work you need two motivated, well behaved individuals who are competent and confident in programming. That's not always the case in a classroom.  
> **username_4**: But pair programming is not about 2 people writing code on a computer at the same time. That's why I said that comment.  
> **username_1**: Hmmm. @username_4. Pairing IS about 2 people on one computer even if distributed. Here is a pretty fair description, from [the source](https://www.agilealliance.org/glossary/pairing). Wikipedia has an article also. I don't avoid it, I embrace it, at any level.  
> **username_5**: I tend to think of pair programming as Rally Car: you have one person doing the driving, while the other is handling navigation. Which actually is what you have for the first bulletpoint of the second series.  

---

### Answer by username_6 on 2017-07-06. Score: 1

If you are using Cloud9 and you want them to be working on the same code at the same time (Google Docs-style), you can have one user share their workspace with the other (with read/write permission). There is a "share" button in the upper-right hand corner. We have successfully used this for group projects on Cloud9.


---

