Pair programming#

From Exercise 2 onwards, you will have the possibility to work with a partner as a pair. Here, we briefly explain why we’re doing this, and how we feel this group work should go. This is an optional approach that aims to enhance social interaction (remote) during the course that is organized remotely due to Covid-19 situation.

Why pairs?#

As it turns out, the idea of programming in pairs is not something unique, or an idea we’ve come up with. Pair programming is an established technique for writing code together with another person, and is part of an agile software development approach. The basic idea is that one person has their hands on the keyboard writing the code (the code ninja), while the other person (the philosopher) looks over their shoulder and reviews the code that is written. This helps catch small typographical mistakes quickly, as well as having both people being able to discuss the code as it is being written. In addition, working with pairs makes sense, because each exercise also contains a written assignment which is a short piece of text based on the sustainability topic introduced during the lesson. Hence, it is easy to divide and distribute the work and learn from each other.

How we will use pairs#

../_images/ninja-philosopher.png

We don’t intend to implement all aspects of pair programming in our pairs, but we want to capture the essence of the practice. Here is how we suggest you work in your pairs: One person will be designated as the code ninja for each week, and the other person will be the philosopher. You will alternate roles each week.

The roles:

  • The ninja will clone the GitHub repository and be responsible for the programming solutions for the exercise that will be graded

  • The philosopher will collaborate with ninja and be responsible for the written assignment for the exercise (graded as well)

When working:

  • Aim to collaborate. This can be done via screen sharing in Zoom or other similar software.

  • The ninja should open the exercise on their computer and arrange for the philosopher to be able to view it on their screen

  • The philosopher will take the lead on writing the written assignment which should be updated to the dedicated markdown file in the Exercise repository (that ninja cloned). For easy collaboration in writing, you can share a Google Docs document with your partner (allowing commenting etc)

  • The ninja will write the Python and/or Markdown code, while the philosopher can follow on their screen

  • The philosopher should be actively involved in suggesting ideas, corrections, and otherwise interacting with the ninja to help jointly generate the code

  • The ninja should read the written assignment made by philosopher and suggest improvements / additional ideas to include in the text based on the week’s materials

Remember to save your work (in correct place)!

  • The ninja should regularly commit their modified exercise code to GitHub, and the philosopher can help remind the ninja to do so

  • The philosopher takes care that the written assignment is updated to the markdown file in the Exercise repository

  • Once finished, the ninja should ensure the final version of the exercise has been committed to their GitHub repository, as only this version will be graded (we will not grade the philosopher’s exercise)

Our hopes#

We hope that working in this way will help you feel you have support in learning to code in Python and write the written assignment, and that you will spend less time stuck when working on the exercises. We also hope that this will be a fun way to learn from one another, while putting a real-world coding and collaboration practices into action!

A few final notes#

We would like to remind you that:

  • Only the ninja's GitHub repository will be graded

    • The philosopher is welcome to make their own copy of the exercise if they would like to complete the exercise themselves for practice, however we will not grade the philosopher’s repository (if it was created)

  • The ninja adds the philosopher as a private collaborator in GitHub, but we would prefer that only the ninja make changes to the exercise codes and philosopher would make changes to the written assignment Markdown file

  • This is an experiment for 2021 and we would appreciate your feedback on how things go