Dr. Mike Croucher, research software engineer at the University of Sheffield, gave an insightful seminar exploring some of the issues surrounding the use and development of research software, proposing a rational approach to the use of software in order to produce correct results and highlighting how underestimating the importance of this process can lead to totally wrong results.
Dr. Croucher began the seminar showing several examples from different fields (Economics, Biochemistry, Social studies, Anatomy) where simple mistakes, all related to the use of software, translated into huge errors. For instance, he cited an article in which was investigated how different versions of the same software and running it on different OSs led to different errors as big as the effects being measured. The point highlighted in this introduction is that basic and simple mistakes can affect results at all levels, even in the "big" science context and, last but not least, that everyone can make mistakes.
Then, proposed possible solutions to stem the effects of our mistakes:
- Automate your processes (learn to program)
- Write code in a high-level language
- Get some training
- Use version control
- Get a code buddy (possibly a research software engineer)
- Share your code and data openly
- Write tests
The first point is related to the fact that scientists must make their research reproducible, this can be achieved through automation and so learning to program. He then highlighted how writing code in high-language (Python, MATLAB, R, ...) is the best way to produce scientific results, indeed he focused on the fact that high-level languages should be the first step to get results because they require little effort and results can be produced in a short time. After this first step one can improve the algorithm speed employing low-level languages or with other solutions.
Next, he lingered on the fact that get some training in programming, just enough to perform well, is essential to produce good research in a right way. For this purpose, he suggested the lessons offered by the Software Carpentry foundation (we had the pleasure to host Greg Wilson, co-founder of Software Carpentry, in November 2015 that gave a seminar). Next, he emphasized the importance of version control software giving some examples form his own life experience where the knowledge of such programs has made the difference in speed up work projects or even in job interviews. He then stressed the fact that researchers must not be jealous about their codes and, on the contrary, having a buddy to revise the work and sharing codes on scientific networks help to improve its own work as well as the scientific community. He also explained how writing tests, even if require an extra effort, gives the confidence to change code without worries. Finally, he highlighted the fact that there is always room to improve ourselves and reasearchers don't have to be afraid to learn new tools.
The slides from the presentation are available online. Those interested can look also at the brilliant blog developed by Dr. Croucher and at the survey where some of the information included in the seminar were taken. In addition, here there is the link to Research Software Engineers, community to which Dr. Croucher belongs, and here there is the link to Research Software Group at Southampton on which researchers can rely on if they need help.