
Over two blog posts, Charlotte Desvages, Brittany Blankinship, Umberto Noè and Pawel Orzechowski share their experiences of a structured group work format, called Pair Programming. In their first post, they explain what ‘pair programming’ is and how it works in the classroom through assigning structured roles in group work. This second post focuses on how pair programming can create a sense of community and peer learning. This post is part of the Group Work series.
Peer Learning
Pair programming provides plenty of opportunities for peer learning, where students learn from and with each other. As explained in the first post, Pair Programming is a collaborative practice where people work in pairs, and the partners take turns playing two different roles: driver and navigator. The driver must verbalise their specific ideas and problems, discuss them with the navigator, and synthesise the outcomes of their discussion to “put things on paper” and advance the task. The navigator must be an active listener, observer, and helper, and can take the leading role in higher-level strategic thinking. Both students are exposed to each other’s approach and learn from each other by cross-pollination.
“The most useful part of [pair programming] is being able to collaborate with other classmates, which allows me to discover aspects I hadn’t noticed in my own work through the questions raised by others.” – PGT, Mathematics
“[A core learning outcome from the course was] Experience in pair programming and trying to explain concepts to another student. Sometimes it’s quite easy to “see” how you’d do something yourself, but actually explaining this instead of doing it is more difficult, so the online sessions were very useful to practice this. I also found it very valuable to see how others work and how they understand code differently.” – PGT, Medical School
Students also appreciate how discussing with a peer can generate new ideas. A pair programming environment is highly conducive to discussion, creating a free-flow of ideas where the outcome is more than the sum of its parts. Since only one person can write things down, students must verbally negotiate a shared understanding of the agreed way forward.
“We have different ideas, and co-operate with each other could generate more ideas.” – UG, Psychology

Building a sense of community
Beyond direct benefits in the classroom, we have also seen pair programming help build a sense of community among students and enrich their personal life at university. Students build a network of peers that they can turn to for support later. This is especially critical in distance learning, where students do not have the opportunity to naturally meet peers (e.g., outside of class).
“The group work is very helpful. Not only have I made new friends, but I now also have people that I can rely on when I need help. Group work has also made the individual workload seem much lighter and we get things done faster.” – UG, Psychology
“[It] was nice to get some 1-1 interaction through the pair programming in what could have been an otherwise solitary course.” – PGT, Mathematics (delivered online in 2020/21)
“Thank you for the interactive pair programming sessions [across the academic year], they made a big difference in creating a community of online learners [about using PP on 4 different courses].” – PGT, Medical School
Tackling issues as a community of practice
Many of our students have experience of dysfunctional group work, where different group members have different priorities, expectations, or skills. Pair programming can exacerbate this issue, because each student is expected to contribute actively to the joint work, whether they are driver or navigator. Inevitably, pairs will occasionally be incompatible, in a way which can undermine the effectiveness of peer learning. For instance, a very wide gap in technical proficiency or level of preparation can make for a frustrating experience for both students, leading to disengagement and even resentment.
“I fully agree with the idea of group working, but in practise it usually results in people being left behind by those who understand better […] and unfortunately in maths way too many people are mean and make the beginners feel really bad.” – UG, Mathematics
Whatever way you decide to implement groupwork, you will encounter issues, and your approach will need to be adapted to your discipline, classroom, or even cohort. While there is no single correct solution, we have found it incredibly valuable as educators to discuss experiences, tackle challenges, and share examples of good practice, and encourage you to do the same.
Our final reflection: this blog post was pair-programmed
Pair programming has worked in our programming classes, but we very much see the value of this kind of structured group work outwith a programming context. For instance, we “pair-programmed” the writing and editing of this very blog post over two sunny afternoons. We took turns being the driver typing on a laptop, while everyone else navigated, contributing their ideas and wording. We believe that the principles we have discussed in these two posts are widely applicable across disciplines, and we look forward to finding out how colleagues adapt it in their classrooms.
Brittany Blankinship
Brittany Blankinship is a Lecturer in Data Science at the Edinburgh Medical School. She teaches data science, R programming, and Python to students from various backgrounds and experiences, both online and in person. She has experience teaching undergraduate, postgraduate, and continuing professional development students. Brittany is passionate about delivering high-quality online learning, tackling the stigma around teaching and learning statistics and coding, and creating a supportive learning environment for diverse learners to thrive.
Charlotte Desvages
Charlotte Desvages (FHEA) is a Lecturer in Mathematical Computing, a teaching-focused role in the School of Mathematics. She teaches Python to mathematics students with a wide range of previous programming experience, from complete beginners to experts. She also holds the role of Director of Equality, Diversity, and Inclusion in the School of Mathematics. Charlotte is interested in inclusive teaching practices, particularly those which facilitate peer learning, and demystifying programming to make it accessible (and fun!) to all.
Umberto Noè (FHEA) is a Lecturer in the Department of Psychology and has been teaching data analysis, statistics, and R programming to both undergraduate and postgraduate students. He is passionate about teaching to students from diverse backgrounds as well as removing barriers to learning and fostering a collaborative and engaging learning environment. He is currently interested in extending pair programming principles to groups of more than two students and has been implementing this practice in his own first-year course.
Pawel Orzechowski
Pawel Orzechowski (FHEA) is currently a Lecturer in Programming for Data Science at the Edinburgh Medical School. Pawel is passionate about teaching programming to people across disciplines. He brings a decade of experience as an industry programmer, as well as extensive teaching expertise at coding bootcamps and the university. The result includes several novel educational patterns such as flipped classroom, badges, relentless feedback, mini-diaries and live data. Pawel co-organises the PairProgramming.ed.ac.uk community and codebar Edinburgh.