how to write research software

Research Software often needs to be built on, handed off or used by more than one person. To better enable the reuse, distribtution and updateability of software we can use packaging, testing, documentation and version control. Here we have collected the resources available to help and automate this.

Python logo

Currently our only focus language (though more are on the way) we provide links and tutorial for various tools, packages and software that can support the development of reusable research code.


Screen shot of code with a docstring in pycharm
The more usable the code the more users it can have. Prevent your code being reimplemented, reworked or rejected by making it easy for others to reuse it instead.



image of Penn Rainford

About me

I am on my fourth postdoc project since 2018 and every time I change project I am aware that I am leaving a collection of code behind me which if the work is to go any where will need to be used or updated by someone else. Often in our haste to produce research we forget to produce code which can live without us. Even our own code can be hard to read and use after a couple of years. I have over time learned that taking time to write:

These all make life easier and are not nearly as hard as we think they are with modern tools.


How to write Research Software

This website will cover tools, approaches and good practise for coding research software  with:

If there is sufficient demand we also offer "clinics" on request to help with particular problems relating to tools and methods discussed here.



Version Control

Packaging and Distrbution