Mike Croucher
EPSRC Research Software Engineering Fellow
www.walkingrandomly.com“all I can hope is that future historians note that one of the core empirical points providing the intellectual foundation for the global move to austerity in the early 2010s was based on someone accidentally not updating a row formula in Excel”
This 2003 trial, done in Kenya, found that deworming whole schools improved children’s health, school performance, and school attendance.
In 2013, the data was reanalysed independently using new computer programs
Many mistakes found.
Open package foo. Click, Click, drag, Click, Click, Click, Right-Click, Save, 'results.csv'.
Load into Excel. Click, drag, generate graph, right click, save, 'pretty-graph.png'
I analysed my data in foo using the bar analysis. Here's a graph of the results.
aka 'learn to program'
The Ideal
Results = TheAnalysis(MyData)
Reality
(Partial) Solutions
Write code in a (very) high-level language
(Partial) Solutions
Scientists typically spend 30% or more of their time developing software
90% or more of them are primarily self-taught
Hannay JE, Langtangen HP, MacLeod C, Pfahl D, Singer J, et al.. (2009) How do scientists develop and use scientific software? In: Proceedings Second International Workshop on Software Engineering for Computational Science and Engineering. pp. 1–8. doi:10.1109/SECSE.2009.5069155.
Prabhu P, Jablin TB, Raman A, Zhang Y, Huang J, et al.. (2011) A survey of the practice of computational science. In: Proceedings 24th ACM/IEEE Conference on High Performance Computing, Networking, Storage and Analysis. pp. 19:1–19:12. doi:10.1145/2063348.2063374.
Just enough Software Engineering to Perform
(Partial) Solutions
I like and use 'git' but use whatever your colleagues are using.
source: https://twitter.com/bobearth/status/571154995506122755
(Partial) Solutions
Doesn't have to understand your research
Remit: Tell me where I could do better?
Problem 1: Get the code running on THEIR machine
All good universities have a RSE team you can consult.
(Partial) Solutions
Traditional academic papers are just advertisements
A Literate computing document IS the research
(Partial) Solutions
$ nosetests ./unittests.py
..............................
----------------------------------------------------------------------
Ran 30 tests in 0.152s
OK
(Partial) Solutions
We all cite papers -- papers contain ideas
Code is the implementation of those ideas
(Partial) Solutions
No!
Research Software Engineer