This lesson is being piloted (Beta version)
If you teach this lesson, please tell the authors and provide feedback by opening an issue in the source repository

Intermediate Research Software Development: Instructor Notes

Common Issues & Tips

Check out a list of issues previous participants of the course encountered and some tips to help you with troubleshooting at the workshop.

Course Design

The course follows a narrative around a software development team working on an existing software project that is analysing patients’ inflammation data (from the novice Software Carpentry Python course. The course is meant to be delivered as a single unit as the course’s code examples and exercises built on top of previously covered topics and code - so skipping or missing bits of the course would cause students to get out of sync and cause them difficulties in following subsequent sections.

A typical learner for the course is someone who has gained foundational software development skills in using Git, command line shell and Python (e.g. by attending prior courses or by self-learning), and have used these skills for individual code development and scripting. They are now joining the development team where they will require a number of software development tools and intermediate software development skills to engineer their code more properly taking into consideration the lifecycle of software, team ethic, writing software for stakeholders, and applying a process to understanding, designing, building, releasing, and maintaining software.

The course has been separated into 5 sections:

Each section can be approximately delivered in a half-day (e.g. try to allow 4 hours per section).

Course Delivery

The course is intended primarily for self-learning but other modes of delivery are possible (e.g. mixing in elements of instructor-led coding-along). The way the course has been delivered so far is that students are organised in small groups from the outset and initially work individually through the material. In later sections, exercises involve more group work and people from the same group form small development teams and collaborate on a mini software project (to provide more in-depth practice for software development in teams). There is a bunch of helpers on hand who sit with learners in groups. This provides a more comfortable and less intimidating learning environment with learners more willing to engage and chat with their group colleagues about what they are doing and ask for help.

The course can be delivered online or in-person. A good ratio is 4-6 learners to 1 helper. If you have a smaller number of helpers than groups - helpers can roam around to make sure groups are making progress. While this course can be live-coded by an instructor as well (in the earlier stages), we felt that intermediate-level learners are capable of going through the material on their own at a reasonable speed and would not require to code-along to the same extent as novice learners. In later stages, exercises require participants to develop code more individually so they can review and comment on each other’s code, so the codes need to be sufficiently different for these exercises to be effective. Having an instructor live-code would make everyone have exactly the same code on their machines and would not have the same effect.

A workshop kicks off with everyone together at the start of each day. One of course leads/helpers provides workshop introduction and motivation to paint the bigger picture and set the scene for the whole workshop. In addition, a short intro to the section topics is provided on each day, to explain what the students will be learning and doing on that particular day. After that, participants are split into groups and go through the materials for that day on their own with helpers on hand. At the end of each section, all reconvene for a joint Q&A session, feedback and wrap-up. If participants have not finished all exercises for a section, they are asked to finish them off before the next section starts to make sure everyone is in sync as much as possible and are working on similar things (though students will inevitably cover the material at different speeds). This synchronisation becomes particularly important for later workshop stages when students start with group exercises.

Helpers Roles and Responsibilities

At the workshop, everyone in the training team is a helper. You may have more experienced helpers delivering introductions to the workshop and sections. Contact the course authors for intro slides you can reuse.

Roles and responsibilities of helpers include:

Group Exercises

Here is some advice on how best to sync and organise group exercises in later stages of the course.