Collaborating on Code: Guidelines for a Good Experience#
Python Camp takes a team-based approach to teaching and learning. Python Camp facilitators work as a team and represent a range of coding experience, from folks who have written code almost daily for years, to folks to who do so more sporadically, to folks who only recently embarked on their coding journeys.
As a Python Camp participant, you’ll also be asked to work in a team. This document outlines the rationale for our team-based approach and offers guidelines and suggestions for making the most of this experience.
Why Work in Teams?#
Over the years of teaching Python Camp, we’ve found that the most effective environments are those where the learners interact not only with the facilitators but with each other: asking a neighbor or friend for help with the lesson, talking through an exercise together, or even just sharing their goals for learning Python and their broader academic interests. In order to cultivate this kind of interaction, we have restructured Python Camp around a series of team-based, in-class activities.
Moreover, we believe that working in teams fosters the following outcomes:
Participants gain an opportunity to both learn and teach, which in turn deepens learning. Explaining a concept to someone else is one of the best ways of solidifying our own understanding of the concept.
Participants engage in the material more actively when working together. The temptation to tune out or give up – a normal response to challenging material – is less salient when we are accountable to others in a group.
Participants benefit from each other’s perspectives and experiences. Different ways of approaching a problem enrich the space of possible solutions, and we can learn a lot from the way others think.
Participants model the way code gets written in professional and academic settings. Whether we are writing software or conducting research, it’s crucial to be able to communicate effectively with others about problems, proposed solutions, challenges, and processes.
In short, we write code for one another, not for the computer. It’s a fairly trivial matter to write code that the computer understands. The hard part, the art of programming, is to write code that proves useful for human beings, and that human beings can understand. (Think of a recipe: the recipe dictates what you do in the kitchen, but you don’t follow a recipe for the sake of the kitchen; you follow a recipe in order to satisfy the appetites of the people you’re trying to feed.)
How Does It Work?#
We’ll assign you to a small team (of 3-4) and ask you to work with the same team for the duration of Python Camp. Each team should sit together at a table and work together on the in-class exercises, which are designed to involve brainstorming, discussion, and collaborative problem-solving as well as writing code.
The following guidelines will help you have a positive team experience:
Everyone participates#
When it comes to writing code, it’s important that everyone on the team take part. Writing code involves both conceptual understanding and muscle memory. The more lines of code you write (i.e., type), the more fluent you will become.
Each lesson/activity is an executable Python notebook. Each person on the team should open the notebook on their own computer in JupyterHub and write and run code in response to the activity prompts.
There are four main kinds of prompts:
Those that ask you to run a line of pre-written code and interpret the result.
Those that ask you to write a line or two of code to perform a discrete action.
Those that ask you to make a plan or design as a team to solve a particular problem.
Those that ask you to write larger blocks of code to implement your team’s solution.
For the first two kinds of prompt, the team should take a pause so that each team member can finish their work before moving on to the next prompt and/or diving into the discussion.
For the last two kinds of prompt, teams should feel free to explore different strategies for collaboration.
For instance, a team of four may prefer to work on the larger coding problems in pairs, to facilitate sharing screens.
Or the team may decide to give everyone a chance to try the problem individually before comparing their proposed solutions.
Finding what works best for your team is part of the process of teamwork. And your Python Camp facilitators are there to help!
But whatever method(s) you choose, please ensure that everyone on the team has a chance to enter the team’s solution into their own notebook. Besides practicing Python syntax, by keeping your notebook up to date you will create a useful artefact you can refer to later.
Team roles#
To support a productive and equitable experience, each team will assign someone to each of the following roles. It is recommended that teams rotate these roles, perhaps at the start of each day, so that everyone gets to try out all the roles, even those they may feel less comfortable with.
Notetaker: Everyone on the team should write code during the hands-on exercises around which we have structured Python Camp. The notetaker, however, is responsible for documenting other aspects of the programming process. These include:
Jotting down questions that arise while trying to solve a problem;
Recording team decisions and documenting project plans;
Taking notes on team discussions in response to discussion prompts.
Reporter: The reporter is the team’s designated spokesperson. Everyone on the team should feel free to ask questions or share ideas with the larger group at any time. However, when teams are asked to share the outcome of group discussions, it helps to have someone delegated to this task. And rotating the reporter role gives everyone on the team a chance to share out.
Advocate: The advocate has a very important role: to make sure that everyone has a chance to contribute to the work of the team, and that no one is getting left behind. It’s perfectly okay – and probably inevitable – that members of the team will contribute in different ways. For instance, some people might have a better eye for detail, while others are more focused on the big picture. But here are some ways in which the advocate can help ensure equity and inclusion:
During group discussions, if situations arise where one or two team members are doing all the talking, the advocate might say something like, “I see that we haven’t heard from __________ in a while. Let’s make space for anything they’d like to share.”
During hands-on exercises/problem-solving, the advocate might check in with team members to see if they’re lost, feeling confused, or frustrated. In these situations, the advocate might suggest that the team take a pause to bring everyone up to speed, or the advocate might suggest flagging a Python Camp facilitator to provide more guidance.
The advocate can advocate for themselves as well other team members. But some people feel more comfortable advocating on behalf of others, which is why it’s especially useful to rotate this role.
How Can I Make the Most of This Experience?#
Following a few rules of thumb will help ensure that each team as well as the Python Camp cohort works effectively together, and that everyone has the chance to have a great learning experience.
Take responsibility for your own learning. You wouldn’t be here if you didn’t want to learn. But parts of the curriculum will probably challenge you, and you may get stuck at times. Taking responsibility for your learning means asking for help: whether of your team, of one of the Python Camp facilitators, or of someone else in the cohort. The facilitators will do their best to see that no one gets left behind, but to do this, they need your help!
Contribute to an inclusive, welcoming environment. Those of us who run Python Camp strongly believe not that everyone should learn to code, but that everyone can. Many people feel that coding is not “for them” because they have received implicit or explicit messages (from peers, teachers, potential employers, popular culture, etc.) to that effect. To the extent possible, we want to counteract those messages, by providing tools people can use to learn at their own speed, and by creating an inclusive environment. Inclusive behaviors can look like
avoiding jargon where possible;
using inclusive language (and staying clear of sexist, racist, homophobic, transphobic, or ableist language, or other forms of language that stigmatize or exclude certain groups);
treating others with courtesy and respect;
making sure that everyone’s voice is heard (and neither monopolizing the discussion nor jumping in to explain things out of turn).
Keep open lines of communication. This may be as simple as asking “How is everyone doing on this task?” Or if you have a specific issue to raise, you might try something like, “Can we pause for a moment to talk about ________?” If you experience a problem with your team (or someone on your team) and you prefer not to raise it with them, please alert one of the Python Camp facilitators, and we will gladly work with you make things right.
Inspiration for these guidelines comes from The Carpentries Code of Conduct .