Good Practices in Research Software Development
Start Date
3 Feb 2025
Start Time
09:00 Europe/Amsterdam
Location
Online Event
End Date
6 Feb 2025
End Time
13:00 Europe/Amsterdam

This training will take place online for 4 consecutive days (Monday – Thursday) from 9:00 am – 1:00 pm. The instructors will provide you with the information you will need to connect to this meeting.
The key objective of this workshop is to grow researchers’ software skills necessary to apply good practices that enable open and reproducible research. The workshop focuses on building modular, reusable, maintainable, sustainable, reproducible, testable, and robust software. This will allow you to more easily organize, maintain and share your data. The participants should be familiar with programming and regularly write code for their research, but no extensive expertise or knowledge of specific tools are required. The main themes that are addressed are generically applicable, but please note that a lot of the exercises and demonstrations are in Python.
This workshop is inspired by and based on CodeRefinery training materials.
The workshop is based on the teaching style of the Carpentries, and learners will follow along while the instructors write the code on screen. More information can be found on the workshop website.
Optional “Introduction to Git” on day one. To ensure all participants are familiar with the basics of version control and Git, we offer an optional “Introduction to version control with Git” session on day one of the workshop. Please take this 1-minute Quiz to self-assess your git knowledge. If you answered all questions correctly, you can join the workshop from day two onwards. Otherwise, you should join the “Introduction to Git” session on day one.
Please be advised that by signing up, you agree to our Cancellation and No-Show Policy, which states that cancellations made less than 2 workings days prior to the event will incur a no-show fee. Please read the full policy here for more details.
If you won’t be able to attend, please cancel your registration (by following the instructions here) so that we can offer your seat to someone on the waiting list.
Audience
The workshop is aimed at PhD candidates, postdocs, (assistant-)professors and other researchers and also open for research support staff and research software engineers. We offer tickets for researchers who are affiliated with Dutch research institutions. We also offer industry tickets for attendees who are not affiliated with Dutch research institutions. We do not accept registrations by Master students.
Ticket prices
Ticket prices are as follows:
- For participants affiliated with Dutch research institutions: €175.00
- For participants from industry: €525.00
Early Bird Discount
Register within the first week of open registration and receive a 25% discount on your participation fee. Don’t miss out on this opportunity to secure your spot at a reduced price!
Group Discount
Bring your team along and benefit from our group discount. Groups of five or more participants are eligible for a 25% discount. For more details and to register your group, please email us at .
Prerequisite knowledge
It is assumed that participants already write code for their research, but no expertise is required. Some experience in navigating file trees and editing files in a terminal session, as well as basic knowledge of Python programming is recommended.
If you find the topics that are covered in this workshop too basic, you could consider joining the ‘Intermediate Research Software Development’ workshop. That workshop has a similar focus, but also teaches more intermediate topics like software architecture, object-oriented & functional programming, Integrated Software Development environments and is targeted to slightly more advanced research software engineers. Checkout our upcoming workshops for more information.
Syllabus
Introduction to version control with Git
- What is version control and why should I use it?
- Setting up Git locally
- Creating a Git repository
- Tracking changes: git status, git add & git commit
- Exploring history: identify and recover old versions of files
- Ignoring things with .gitignore files
- Remote repositories in GitHub
Collaboration with Git and Github
- Submitting changes through pull requests in Github
- The peer review process
- Good practices for collaboration: using issues and the git workflow
- Contributing to repositories as external contributor through forks
Code Documentation
- In-code documentation
- Readme files
- Writing documentation with sphinx and ReadTheDocs or Github pages
Modular Code Development
- How can you create blocks of code that can be reused?
Testing
- Introduction to testing: motivation, unit testing, integration testing
- Writing tests with pytest
Continuous Integration
- Introduction to Continuous Integration
- Setting up Continuous Integration with Github Workflows
- Linting and automated testing