Good Practices in Research Software Development
Start Date
19 Jun 2023
Start Time
09:00 Europe/Amsterdam
Location
Date End
22 Jun 2023
End Time
13:00 Europe/Amsterdam

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. The participants should be familiar with programming and regularly write code for their research, but no expertise is required.
This workshop is inspired by and based on CodeRefinery training materials.
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.
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.
Audience
The workshop is open and free to all researchers in the Netherlands at PhD candidate level and higher. We do not accept registrations by Master students. The workshop is aimed at PhD candidates and other researchers or research software engineers.
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.
Syllabus
Introduction to version control with Git
- Tracking changes: git add & git commit
- Exploring history, checking out older versions
- Ignoring things with .gitignore files
- Github remotes
Collaboration with Git and Github
- Creating pull requests
- Review process
- Good practices for collaboration
- Contributing to repositories with 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
- Introducton to Continuous Integration
- Setting up Continuous Integration with Github Workflows
- Linting and automated testing
Where
This training will take place online. The instructors will provide you with the information you will need to connect to this meeting.
When
Monday 19 June – 09:00-13:00
Tuesday 20 June – 09:00-13:00
Wednesday 21 June – 09:00-13:00
Thursday 22 June – 09:00-13:00