Introduction

Overview

Teaching: 10 min
Exercises: 0 min
Questions
  • Why should I manage my software development?

Objectives
  • Explain why academic software development requires management.

There’s a lot of guidance out there on how to develop industrial software, but developing academic software can be an unusual exercise.

Academic Software

It can be difficult to provide guidance for academic software because the category is so broad. Anything developed within the framework of academic research qualifies, and most intensive examples include:

But the majority of academic software is less intensive - collections of smaller scripts, for purposes like:

Some disciplines lean more heavily towards one end or the other, but there’s people working on all scales of software within all domains.

Commonalities

The one thing that unites academic software is that unlike in traditional development, the software itself isn’t the end goal - it’s the papers it enables that are. The software is instrumental, just a tool to accomplish your research. In addition, it’s experimental - your understanding of what the software needs to do, or the exact data that will be available for it, is likely to evolve throughout the project. You aren’t just writing a piece of software, you’re trying to find out what software could be written (and if it would be any use!).

Plus, academic software is almost always developed by a small team, in many cases just a single PhD student or postdoc. Even for research groups where multiple people work on the same code, there’s very rarely processes or standards that define how code should be written.

Caveats

In Computer Science and Engineering, you’re more likely to have research projects focused on the actual development of software to meet a clearly defined goal. However, they still take place within the framework of academia as a whole, and suffer from the same problems.

Issues

The lack of firm goals and structured development often means that when you’re writing academic code the focus is entirely on how to get the results needed for the latest paper, without considering how this works in the long run. As a result, a large proportion of academic software is paperware - ad-hoc, poorly-written code made without any real plans, and a common set of issues:

Problems

These common issues end up causing serious problems for the whole of academia:

Writing Sustainable Software

We really want to avoid these problems, because better software makes better research - organisations like the Software Sustainability Institute exist to make this point.

If you plan your project out clearly in advance, openly list your future goals and the limitations of your software, and write code that’s well-documented, consistent and designed to be easy-to-interpret, you’ll find it to be much more sustainable. Sustainable software is easier to keep maintained, to expand to cover new problems, and to bring in new collaborators on. The benefits to your research from this will rapidly outweigh the time you spend on software project management.

Project Management Tools

Fortunately, a lot of tools exist to help manage the development of your academic software. You should already be familiar with Git and GitHub, already a great way to keep track of how your code evolves and share it with others. GitHub and other repository hosting sites (for example, GitLab) have a whole range of project management tools that we can use - and we’re going to start with them.

Key Points

  • Well-made software is easier to expand and reuse

  • You need to produce reproducible research.

  • You are a user of your own code.