CodeRefinery train the trainer workshop

Report and insights gathered during our train the trainer workshop in August/September 2024

September 09, 2024 - Samantha Wittke


Supported by the Nordic e-Infrastructure Collaboration (NeiC), CodeRefinery is dedicated to promoting FAIR (Findable, Accessible, Interoperable, and Reusable) research software development. Our workshops provide essential training in research software development, and we are constantly evolving our teaching methods to create an effective and inclusive learning environment.

Our Train the Trainer workshops are designed to share our best practices and provide insights into our approach. The sessions are highly interactive, encouraging participants to share their own experiences. While there’s no obligation to become a CodeRefinery instructor after attending, we warmly welcome anyone interested in joining our community of instructors.

This blog post serves as a report on the workshop and a compilation of the invaluable contributions made by participants throughout the sessions.

Workshop setup

The August/September 2024 workshop was not our first time sharing our methods, but with the many changes over the years, we updated the materials accordingly. We also introduced more exercises and discussions to help participants connect and learn from each other.

We spread the four half-day workshop sessions across four consecutive Tuesdays in an effort to make it more manageable and engaging.

Workshop materials

All materials from the workshop are available with a DOI on Zenodo). We chose not to record the sessions to ensure a comfortable and open environment for interaction. However, you can find materials from previous iterations of our CodeRefinery instructor training and Community teaching.

The materials are licensed under Creative Commons Attribution 4.0 International, and we encourage anyone to reuse them. If you do, let us know so we can help advertise your materials or course on our website!

You can also learn how to create your own lesson materials using the CodeRefinery lesson template in the episode Lessons with version control episode.

Participants

This workshop attracted record interest, with 82 registrations from 22 countries. The majority of participants were from Finland, the United Kingdom, Norway, Sweden, the Netherlands, and Germany, with 10-40 attendees joining each session. Since the sessions were standalone, participants could choose which ones to attend.

We gathered on Zoom, utilizing breakout rooms and collaborative notes for discussions and questions. The notes are archived on the materials web page.

Workshop themes and topics

The main topics discussed in the workshop were:

  • Session 1: About lesson design, deployment and iterative improvement (Aug 13)
  • Session 2: Tools and techniques adopted in CodeRefinery workshops (Aug 20)
  • Session 3: About teaching & cool things we all would like to share (Aug 27)
  • Session 4: Workshop streaming practices and post-workshop tasks (Sep 3)

Session 1: About lesson design, deployment and iterative improvement

In this session, we explored the evolution of CodeRefinery lesson materials and how anyone can contribute to their ongoing development. A key aspect is version control, which ensures lessons are shareable and easy to contribute to. We discussed our preference for Sphinx with the sphinx-lesson extension.

We introduced "backward lesson design," where we start from learning objectives and learner personas, and work backwards to create effective lessons. Feedback collection, its conversion into actionable improvements, and the impact of these refinements were also key topics.

During group work, participants shared their methods for creating lesson materials and gathering feedback.

Session 2: Tools and techniques adopted in CodeRefinery workshops

This session gave participants a behind-the-scenes look at how we run large CodeRefinery workshops. We covered event setup, roles, and how we maintain interactivity through collaborative documents and "bring your own classroom" setups.

We discussed onboarding new instructors and helpers, teaching preparation (sound, screen sharing), and the importance of teaching "good enough" practices in intermediate software development tools, given the difficulty of defining "best practices." Our workshops aim to cater to all skill levels, with a focus on competent practitioners.

Collaboration plays a key role in our workshops, and we highlighted the importance of assigning a Collaborative Document Manager to handle questions and interactions. Participants practiced setting up effective screen shares, ensuring readability, tested their sound levels and learned different ways to adjust it as well as ways of adjusting terminal prompts for teaching.

Session 3: About teaching & cool things we all would like to share

This session focused on teaching techniques, co-teaching models, and useful tools. We discussed Computational Thinking, a framework that breaks problem-solving into four parts: decomposition, pattern recognition, abstraction, and algorithmic design.

We also examined the benefits of co-teaching, where complementary skills enhance the learning experience and reduce the workload for individual instructors. Participants shared their perspectives on teaching and discussed how team teaching can improve lesson delivery.

In the "cool gems" session we had a few tool presentations:

Session 4: Workshop streaming practices and post-workshop tasks

In this session, we covered streaming and recording workflows, with a focus on using Open Broadcaster Software (OBS) and ffmpeg. While managing a streaming setup can seem daunting, we broke down the process to show that each step is manageable. We also discussed video editing as a valuable tool for improving teaching.

Participants had hands-on experience with OBS, a powerful but accessible tool, not just for workshops but for personal projects too. While OBS may appear complex, once the pieces fall into place, it's an intuitive tool for enhancing online workshops.

Interested in joining next time?

We are still collecting full workshop feedback and link it here later. You can however already find all notes, questions and single day feedbacks from the materials - notes archive. Through this Train the Trainer workshop, we hope to empower more instructors to contribute to CodeRefinery and foster an inclusive community of practice around research software development. We look forward to seeing how participants will apply these skills and insights in their own teaching endeavors.

No matter if you are an instructor or want to observe or support the project in some other way, you are very welcome. Learn more about the project and available lesson materials by checking out CodeRefinery webpage and sign up for the Coderefinery newsletter to get to know about the next iteration. If you do not have any resources to join, but would like to support the project, please consider becoming a CodeRefinery ambassador.

What is the hardest thing about teaching for you?

  • Knowing how "it's going", whether learners are happy or not (especially when teaching online) :+1:
  • The preparation the night before. It is always much more that I would hope, no matter how prepared I want it to be :+1: :+1:
  • Managing groups with vastly different academic backgrounds
  • Teaching wide spectrum of skill level at the same time. :+1: :+1: :+1: :+1:
  • Time management! (Knowing how much can fit in a sessions) :+1: :+1:
  • General preparation time, how to fit it into the regular work schedule, and estimate how much time is needed for prep.
  • How to reduce too much text into just the right amount
  • Preparation of the session material and estimating the right amount of time for each section
  • Getting learners to take the first step: sign up for and attend a workshop, when they don't think programming is a skill they can learn
  • Getting learners to take the second step: translating what they've learned in a workshop into something they can apply
  • preparation and time management
  • Engaging with the students which was much easier for me when I used to coach
  • Finding the right depth for an unknown audience for "my topic"
  • education background of participants and their learning objectives

What is the best thing about teaching for you?

  • Seeing when learner gets interested/curious about something and takes inspiration from the course. :+1:
  • Seeing it works and someone can do something new.
  • Motivated students grasping new stuff
  • Students picking up and running with the material and skills I give them and using it for their own work. :+1:
  • The "ah-ha!" moment when a student gets it! :+1::100: :+1:
  • Learning from students who know about some topic more than you do. :+1:
  • Being able to help people reach their goals, by showing them something new.
  • Teaching is optimism acted out in the hope of making a difference both ways I suppose.
  • The feeling of accomplishment when you see learning grow and implement the learnings :book:
  • mutual learning and impact on learners :+1:
  • Results and feedbacks / Mutual interests and interesting discussions
  • mutual learning and I can also learn lots of things and new ideas from participants

When you start preparing a new lesson or training material, where do you start?

  • I look at existing materials on the same topic, but chose/refine topics based on the perceived needs/interests of the presumed audience
  • Outline of structure and Material collection for a new lesson :+1:
  • What material I have already? (what other material is already out there?)
  • Start by looking for related resources (documents, videos, courses, etc) to have a base data and better understanding of what have been done around the topic
  • Know your audience
  • Review existing material
  • Think about learning objectives (to keep focus on essential things)
  • Think of three things simple enough that they will be remembered the next day. Design around that.
  • I write down the thoughts that I have and then go back and structure it.

What tricks help you with “writer’s block” or the empty page problem?

  • Write anything down that comes to mind, sometimes draw something, looking out the window :)
  • Do a mind map - what concepts do I want to get across?
  • Starting small, for example a list of headings and then building around it. :+1:
  • What does one know about the target audience and why should they be spending longer than 1 minute listening to what they will eventually get to hear?
  • Get some inspiration from another source.
  • Start with the three things above
  • Start with the plan and the overview design
  • Some kind of outline / main message(s)
  • Start with three things. Three supporting points for each of these.

Maybe you haven’t designed training material yet. But how do you start when creating a new presentation?

  • Think about the learning objectives and try to break them down into steps
  • Title, Objectives, target audience and Plan
  • Some kind of outline / main message(s). Get as many images as I can, instead of words
  • Draft an outline and use chatgpt to fill in details
  • Example of how the teaching content is applied in a real-world context

If your design process has changed over time, please describe what you used to do and what you do now instead.

  • I look more at existing materials and try to get more information about the audience. Unfortunately getting information about the audience before the event is hard
  • I used to start from the beginning and get from there but that often meant a very polished start and a rushed end. Now I try an overview first, then fill out sparse details at every section
  • Updating the data and tweak the presentation
  • If I am teaching a small group (or one to one) talk to them before hand - find out what they know already, what they want to learn.

What do you know now about preparing lessons/training/presentations that you wish you knew earlier?

  • less is more. It's better to have 2-3 main messages rather than trying to show everything in one go :+1: :+1: :+1: :+1:
  • how much practice time the learners need to master what's taught
  • Don't worry about something going wrong. It often makes the lesson (and thus the material) more persistent in memory. :+1:
  • Try and remove everything except what you want the person to learn
    • That's a very tough part for me in the sense that I never know how much of an underlying "black box" is still ok....
  • Designing intermediate materials is hard, and requires putting some "gatekeeping" making sure that learners are directed to appropriate courses
  • When I see a cool graphic, concept, slide, etc., download it and save it in my 'new-materials' folder to use later on!
  • I have come to the conclusion that perhaps a more "agile" approach to developing materials (try to do design/teaching iterations quickly) might be the best way to go, but there are risks with this approach too

What tricks/techniques have you tried in your teaching or seen in someone else's teaching that you think have been particularly effective in collecting feedback from learners?

  • preparing a survey and emailing it to participants as soon as the event ends (usually get fewer than 50% of answers but it's a representative enough sample)
  • do engage with the audience, give them the time to get the courage to speak up
  • Be the audience yourself
    • yes! some problems/issues I don't notice as instructor, only as listener
  • Have time (e.g. 5 min) in the session to fill out the feedback form
  • If the course/workshop has several days/sections do a couple questions every change, then a full one afterwards
  • "Traffic light" feedback (e.g. for pacing or progress on exercises): give each learner two different coloured post-it notes for in-person, or use emoji for online, to indicate a current status

Do you teach and organize teaching alone or with others? What would you prefer and why?

  • Coming together is a beginning; keeping together is progress; working together is success. – Edward Everett Hale
  • These days always with others. Alone is easier to prepare but almost always is harder during it.
  • Teaching with very diverse partners, it can be challenging to find a common language with people very different than you.
  • I teach alone, in the future there will be more collaboration with multiple team members. Both approaches have their pros and cons.
  • Both has its own distinct advantages
  • Most of my teaching is on my own, as a freelancer its more expensive to work with colleagues than to deliver a course on my own.
  • Teaching together, learns from each other, feedbacks to improve
  • Not formally taught yet, only given presentations actually .
  • collective teaching would benefit the teachers with collaborative curriculum and experiences sharing.

If applicable, have you seen any challenges when teaching together and how to overcome them?

  • It actually requires preparation,
  • Is it about teaching or about inspiring ? Discover the answer and get inspired ...
  • It's like being in a band: you might be great at improvising and your band-partners might be great at improvising too, but a bit of rehearsing makes even the impro gig much better
  • Need to plan before session, difficult if people don't 'plan' in the same way, e.g. with the same time frame.
  • Heterogeneity in learners make it impossible to get the same result from everyone.
    • In fact, the same applies to teachers :D
  • Teaching together requires to have similar opinions on how to teach. I share views only with ~40% of my colleagues I think.
  • No Teaching experience but it is good to give the outline of the lessons beforehand and learning goals.

How might breaking down a complex problem into smaller parts change your approach to problem-solving in your current projects?

  • Avoids cognitive overload
  • I used to give an example about this in workshops of cutting long tree into pieces from top to avoid that it falls and destroy a house bloc.
  • Easier to start on something small
  • Each individual part is familiar and can take existing solutions.
  • Only focus on the new things
  • One can lose oversight of where is supposed to be getting to due to problems with summation of biases introduced during the solving of the parts.

Can you think of a research project where identifying patterns in your data led to new insights or breakthroughs?

  • Multi-targeted drug design where you need to identify both chemical and biological pathways/patterns
  • Distilling complex physics problems into simpler 1D statistics is very often done.
  • I used to do bioinformatics, pretty much everything in biology is about patterns in strings of characters (DNA, proteins). Finding those patterns and using them is the way to go
  • Pattern recognition DOES NOT lead to new insight, it is new insight which allows for the recognition of a 'pattern', the latter being an allocation of possible bias.

What challenges do you face when trying to simplify complex concepts in your field, and how do you decide which details to focus on?

  • Absence of a terminology / jargon to describe a new idea. :+1:
  • Similar to above, when teaching often students know what they want to achieve, but don't have the terminology to express it, so working through what they want is helpful, after teaching them some terminology.
  • Whatever is most useful to the learner first?
  • I work with researchers in different fields. I don't always fully understand their domain knowledge but I can take the basics or generalities and get code that works for them
  • A very practical problem is trying to resist going for a coffee in the midst of taking a shot at a complex concept, in the hope that the true details are to be found in the coffee.
  • not all information is easy to find or a lot of conflicting information or even sometimes information explosion

How do you determine the priority of tasks when designing algorithms for your academic projects, and what criteria do you use to ensure that the most critical tasks are addressed first?

  • Working chronologically when going through a problem - start at the beginning.
  • What gives the more insight with the least effort can be a nice start
  • Talk to colleagues and Subject matter experts to understand various perspective to decide and prioritize.
  • Logic will get you from A to B. Imagination will take you everywhere. - Albert Einstein.

Has anyone found a nice online tool to draw?

  • I love this tool suite https://excalideck.com/
    • For drawing https://excalidraw.com/
  • I have seen Miro ...
  • I think the Code Refineries use something for their graphics that looks a bit 'cartoony' - but I cannot remember what it is called!
    • Drawn on remarkable and then coloured and tidied up in Inkscape. :+1:
      • I am a big fan of remarkable. I think sharing option is fairly good. Unfortunately bit expensive tool.
      • true, for me it was worth it already for the pdf annotation for research papers, cannot read on computer screen
  • https://webwhiteboard.com/
  • https://www.youtube.com/watch?v=4-l8MY5kYGc
  • Figma and Kahoot are useful as well

Showing keyboard shortcuts on screen

  • Screenkey: Screenkey for showing keyboard shortcuts
    • Is there a Windows version people can recommend?
      • I found this list of alternative for windows users like me: https://alternativeto.net/software/screenkey/ :+1:
      • I sometimes use the on-screen keyboard already provided by the OS :+1:

What’s the most interesting or useful thing you’ve learned from an online workshop (not specifically this one), and how have you applied it/planning to apply in your life or work

  • Having breaks every hour or so
  • New approach to screensharing, using the 'portrait' approach
  • Manage breathing: reduce stress and use silence to let the audience grasp what you're saying
  • Well, the most interesting or useful thing I've learned from online workshops is how not to conduct a workshop, or at least some elements of the same, and I have applied this understanding by engaging in the global effort to discover more about how not to conduct a workshop, or at least some elements of the same, with the motto: That's one small step for a man, one giant leap for mankind..

How can you divide teaching into separate independent tasks?

  • By content blocks, having roles like main and assistant...
  • Having responsibility for different sections of the course.
  • Wow, now that's what we call a question... bravo... indeed, how does one separate sleeping and snoring into separate independent tasks...
  • Course, exercises, resources, tools and forms.
  • Different people teach different topics
  • CodeRefinery answer: the big logical blocks are instructors, in-person and breakout room helpers, and Notes-questions answers.

Funding

CodeRefinery is a project within the Nordic e-Infrastructure Collaboration (NeIC). NeIC is an organisational unit under NordForsk.

Privacy

Privacy policy

Follow us

Contact

support@coderefinery.org