Skip to content

Research Software Good Practice

Turing Logo Research software development differs from standard software development in some core ways. These guides aim to provide a set of good practices that can be applied to research software development to ensure that the software is of high quality, maintainable, reusable and reproducible.

Research Good-Practice Initiatives

There are many initiatives in the research software community to develop training and standards. One of these that is well established is The Turing Way, a published gude to reproducible, ethical and collaborative data science. (The Turing Way 2025).

ICR Internal Training

The ICR runs some courses on research software development best practices, covering training through the carpentries organisation, usually in-person and can be found on the ICR training website (search carpentry).

Webinar Series: Good-Practice in Research Software

This is a series of webinars run by the ICR Research Software Engineering team, covering good practices in research software development. The webinars are recorded and available on (link to come soon).
The overview page is here, and in summary it covers:
- Monday: Bash and VScode
- Tuesday: Git and GitHub
- Wednesday: Python projects
- Thursday: R projects
- Friday: Conda environments

Webinar Series: Vibe-Coding

Coming soon in February 2026

Challenges in Research Software

Research software development differs from standard software development in some core ways. This resource aims to help with good practices that can be applied to research software development to ensure that the software is of high quality, maintainable, reusable and reproducible.

Key differences include:

  • Research software is often developed in a more exploratory manner with no known ground truth. This means that the requirements of the software and the test outcomes are not always clear at the outset. The software and test environment may need to be adapted as the research progresses.

  • Research software is often developed by researchers who may not have a background in software development. This can lead to software that is not well-structured, poorly documented, and difficult to maintain.

  • Research software is often developed as a means to an end, rather than as an end in itself. This can lead to software that is not well-tested, and that may not be suitable for reuse by others.

  • Research software is often developed in a time-constrained environment, with researchers under pressure to produce results quickly. This can lead to software that is not well-designed, and that may not be scalable or maintainable in the long term.

  • Research software is often developed in a collaborative environment, with multiple researchers working on the same codebase. This can lead to issues with code quality, consistency, and maintainability.

  • A demonstration of correctness may be required for a research paper. This is an output of the software that differs from traditional software (where the software itself is the output).

Given these challenges, it can be difficult to apply standard software development practices to research software.

However, there are a number of good practices that can be applied to research software development to ensure that the software is of high quality, maintainable, and reusable. These practices include: - Writing clean, readable code - Using version control - Documenting the software - Writing tests - Using continuous integration - Using environments - Using a code review process


References