Earlier quoted context omitted.
> These include the lack of testability, debuggability, reproducibility, separation of concerns, documentation, or usability. Or maybe these things aren't actually as important as we think they are in professional software development? If they're able to produce useful scientific results (in general, not specifically in this case) without those things then maybe they don't matter as much as we think they do?
These qualities are important for exactly the same reasons they are in production: Without those qualities, your code is brittle, your deploys are brittle, changes are brittle. It's just like saying "It runs on my machine". The scientific term for this is "Replication crisis [0]" 0 - https://en.wikipedia.org/wiki/Replication_crisis
To software engineers criticizing Neil Ferguson’s epidemics simulation code
121–130 of 189 posts
Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code
#122Many senior members of the academic community rely on their reputation as researchers to brush aside basic issues with the software that they develop for scientific purposes. These include the lack of testability, debuggability, reproducibility, separation of concerns, documentation, or usability. The lack of focus on research software quality among senior PIs, funding committees, and article reviewers is a huge prob…
> These include the lack of testability, debuggability, reproducibility, separation of concerns, documentation, or usability. Or maybe these things aren't actually as important as we think they are in professional software development? If they're able to produce useful scientific results (in general, not specifically in this case) without those things then maybe they don't matter as much as we think they do?
Maybe for professional professionals they are.
It is funny that Hinsen's insight is so mundane and obvious: "the code itself is merely a means to this end".
Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code
#123I poked at the github repo for a bit. The ugliness of the code doesn't bother me, but the quantity of parameters does. Here's one params file that specifies some of the inputs to a run of the model: https://github.com/mrc-ide/covid-sim/blob/master/data/param_... Here's another one: https://github.com/mrc-ide/covid-sim/blob/master/data/admin_... There are hundreds of constants in there. A lot of them appear to be wild…
All I can say is welcome to epidemiology. The spread of a disease is highly dependent on a host of factors that we have very little insight into. Even simple things like hospitalization rate or fatality rate can be difficult if not impossible to estimate accurately. Epidemiologists are open about this, but few people ever want to listen. Humans just aren't good at truly conceptualizing uncertainty.
The theory behind disease spread models is relatively sound, but they're highly dependent on accurate estimates of input parameters, and governments have not prioritized devoting resources toward improving those estimates. I sat in on discussions between epidemiologists and government officials about COVID models. The response to nearly every question was "we don't know, but here's our best guess". I listened to them beg officials for random testing of the population to improve their parameter estimates. That testing never happened.
Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code
#124This letter feels as though it is overlooking a large point of contention. >The scientists who wrote this horrible code most probably had no training in software engineering, and no funding to hire software engineers Shouldn't the argument be, that for research that is reliant on coding models, funding be allocated to experts that can assist in creating said models (software engineers)?
For this to happen there would need to be a nationally accepted PE certification for 'software engineers' on par with other engineering disciplines. It's unreasonable to expect non-experts, and experts from other fields, to perform credentialing on a case by case basis.
Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code
#125Many senior members of the academic community rely on their reputation as researchers to brush aside basic issues with the software that they develop for scientific purposes. These include the lack of testability, debuggability, reproducibility, separation of concerns, documentation, or usability. The lack of focus on research software quality among senior PIs, funding committees, and article reviewers is a huge prob…
I have experience in this issue. A fellow grad student of mine asked for some help with his code. I said sure, but it'll cost you a 12 pack of beer. After the 11th nested 'if' statement in Matlab, I upped it to a 24 pack. We never did get it working right.
Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code
#126Earlier quoted context omitted.
I don't think the government is taking drastic measures based solely on this code. It's just a way to model facts we already know. We know that viruses spread exponentially, and we know what exponential growth looks like this just lets use model different assumptions to see how they affect that model.
The model is way more granular than that. Have you read it?
Basically that we are not relying on this model exclusively or even substantially to determine policy.
Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code
#127Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code
#128Earlier quoted context omitted.
Where in my comment did you see me proposing that "being a fully experienced & knowledgeable software engineer should be a base requirement for all academic research (in any field)" Go back and re-read it please. I'm saying you need to be capable of using the tools for your job. If I was working as a software engineer, I'd not be asked to perform heart surgery. A more realistic example would be a software engineer be…
Sorry but there's a pretty big gap between understanding the domain for which your software is intended, and being qualified to work as a professional in that domain. The latter is what you're asking of academics.
If academics are writing predictive modelling software, I ask that they are qualified to do so.
Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code
#129Earlier quoted context omitted.
If you're willing to dismiss all companies as optimizing for more money, it seems only fair to say that academics optimize for prestige and publication in good journals.
> it seems only fair to say that academics optimize for prestige and publication in good journals. On one hand you have lots of people arguing that the legal duty of a company is only to make money for its shareholders. When large companies fail at that goal, it's bailout time. On the other hand you have peer-reviewed journals where authors are incentivized to find accurate results, and researchers will cite articles…
There are issues with both industrial and academic research, but I do think that industrial research is more transparent in its motivations.
Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code
#130Earlier quoted context omitted.
Not the OP, but I know of at least one University that runs "Programming for scientists" courses at low or no cost.
These courses are usually short introductions into python or Java. Most scientists simply don't have time in their curriculum for a full software engineering course.