Good Practices in Research Software Development
3 Oct 2023
4 Oct 2023
The workshop will take place at Science Park 402, 1098 XH Amsterdam. Please note that lunch and drinks at the end of the workshop are included.
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 organize, maintain and share your data more easily. 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.
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.
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.
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.
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
- 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?
- Introduction to testing: motivation, unit testing, integration testing
- Writing tests with pytest
- Introducton to Continuous Integration
- Setting up Continuous Integration with Github Workflows
- Linting and automated testing