Building Better Software
There are many things to consider when building better software. This guide focuses on building better research software that:
- anticipates broadest appropriate use
- employs best practices for quality software
- where possible, extends upon existing software rather than recreating it.
Anticipating Broadest Appropriate Use
Broadest appropriate use means building a technical and social understanding of the environment in which new software will be developed.
From a social perspective, it is important to consider:
- what audiences and audience needs are you addressing
- what are the technical needs and constraints of those audiences
- What value will your software bring to your audiences.
From a technical perspective, it’s important to consider:
- what software you can and should build upon
- what languages and frameworks best fit the technical needs of your project
- identifying what is a sufficient solution given all of the above.
Much of this is included in best-practice guidance below.
Best Practice for Building Better Software
There are a number of best-practice guides available that provide advice for working through all stages of developing research software, such as:
- The Netherlands eScience Center’s comprehensive Software Development Guide which includes a useful checklist for each stage of development.
- Common Lab Research Infrastructure for the Arts and Humanities (CLARIAH)’s Software Quality Guide that can be used by both software developers and software adopters to assess the quality and sustainability of software.
- The German Aerospace Centre’s Software Engineering Guidelines to support sustainable software engineering in research.
These guides all have a Creative Commons licence applied so they can be adapted to suit different organisations and projects.
Read key papers on:
- Barely Sufficient Practices in Scientific Computing (2021)
- Good enough practices in scientific computing (2017)
- Best practices for Scientific Computing (2014)
Extend Over Recreate
Before creating new code, it’s always worth checking to see if it already exists in one form or another.
The Netherlands eScience Center maintains a list of software registries, which is a great place to explore before you start a new project.
Extending existing software has the advantage of:
- collaboration
- access to established practices for software management
- time saved by building on existing efforts.
Connect With Local or Regional Communities
The best source of support is your peers and support staff:
- Your institution may host local HackHours or equivalent events.
- Look out for local R-Ladies chapters, python user groups or similar.
- Start your own group to do code review, share tips or ideas.
International Initiatives
Explore the following international communities focused on making research visible, many of which ARDC staff are or were active members:
- Research Software Alliance has the mission to “bring communities together to collaborate on the advancement of research software”. The ARDC is represented on the ReSA Steering Committee and provides additional in kind support for a community manager.
- Software Sustainability Institute (UK) cultivates better, more sustainable, research software to enable world-class research.
- rOpenSci and pyOpenSci promote open and reproducible research through peer-review of scientific software packages, and provide curated repositories of high-quality packages enabling scientists to share their own software.
- US Research Software Sustainability Institute is an NSF funded project with the goal of developing a pathway to research software sustainability.
- The Research Data Alliance, Software Source Code Interest Group is a discussion forum for management, sharing, discovery, archival and provenance of software source code.
- The FAIR For Research Software Working Group (FAIR4RS WG) coordinated a range of existing community-led discussions on how to define and effectively apply FAIR principles to research software, and how to achieve adoption of these principles.
Connect With Us
Have questions about software quality? Contact our research software team.
Did you find this resource useful?
Receive tailored updates on latest digital research news, events, resources, career opportunities and more.