Getting started
What is research software?
Research software can be thought of as evolving through stages, reflecting how code evolves alongside the research process:
- Exploratory stage: Code is written to test ideas, prototype methods, or quickly generate results. The focus is flexibility and speed rather than maintainability.
- Sharable stage: When research outputs need to be communicated, validated, or reproduced, the software must reach a “good enough” state. It should be documented, versioned, and structured so that others can rerun or inspect the work.
- Sustainable stage: Some research software grows beyond its original project to become a (critical) dependency for others. At this point, higher standards are needed, approaching the quality expectations of production software.
Alongside these levels of maturity, researchers also rely on “software in research” (e.g., operating systems, libraries, dependencies) that may not have been created with research in mind but are essential for computation. For reproducibility, all of these components (exploratory scripts, research software, external dependencies, and documentation) must be identified, described, and made accessible following the FAIR principles for research software.
Why does research software matter?
Code is now as central to research as data or publications. Sharing and reusing it ensures that scientific work doesn’t stop at a single experiment but can be built upon, adapted, and tested by others. Even quick, exploratory scripts have value when preserved and explained. And when research software matures into tools used across a field, the benefits multiply by providing a foundation for whole communities.
Journals and funders are also raising expectations. They increasingly expect code to be documented, reproducible, and accessible, both to validate findings and to support new discoveries. By treating research software as something that can grow from rough sketches into sustainable tools, researchers can improve the reliability of their own work while contributing lasting resources for others.
What can you find?
This series of guides looks at research software through that lens of growth and maturity. You’ll find:
- Practical advice on version control, environment management, and modular design.
- Common pitfalls, including missing documentation, tricky dependencies, and reproducibility issues.
- Guidance on what “good enough” looks like at different stages, and how to raise the quality of your code when it becomes important to do so.