Building Better Software

Better software means better research. Read this best-practice guide to building better software that anticipates broadest use and extends existing code.

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.

Released by the Research Data Alliance, FORCE11 and Research Software Alliance in 2022, the FAIR Principles for Research Software is useful to keep in mind when building your software. You can use this self-assessment tool, developed by the ARDC and the Netherlands eScience Center, to check and demonstrate your software’s FAIRness.

Read key papers on:

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:  

Connect With Us

Have questions about software quality? Contact our research software team.

Last updated

20 September 2024

Type

Guide

Format

Webpage

Read time

4 minutes

Categories

Research Topic