Live data from Hacker News

To software engineers criticizing Neil Ferguson’s epidemics simulation code

blog.khinsen.net

11–20 of 189 posts

Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code

#11
> It’s you, the software engineering community, that is responsible for tools like C++ that look as if they were designed for shooting yourself in the foot.

wait what. a fraction of the community might be a pretentious bunch of purist, but I don't think it's fair to criticize them for the tooling selection

one wouldn't pick a excavator just because it's the industry standard for moving earth to plant some tulip in a vase

and even if funding is scarce, google is free: the first result for planting tulips returns a bulb planter, not a bulldozer.

Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code

#12
This 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)?

Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code

#13

The author makes it sound like a warning label is missing from the C++ tin. Maybe. But what tool should he have used? I haven't seen this code but is there any doubt it would look just as bad in Java or Python, maybe with fewer segfaults? Or FORTRAN.

I'm genuinely surprised it wasn't an Excel spreadsheet.

https://www.semanticscholar.org/paper/Chicken-Chicken-Chicke...

Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code

#14
I disagree so strongly with this that I had a visceral reaction while reading it.

C++ is a tool, not an end product. If you're not qualified to use a tool correctly it's not the manufacturer's fault, it's yours.

Why do so many people believe that good software development is not part of their job? If you write code then you're a developer, no matter your job title. If you write shit software, saying you're a researcher is not an excuse.

Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code

#15
post #3

I get what he’s saying, but the “non-experts” using code to represent their models should also let outside help come when the need arises. When your model predicts an apocalyptical scenario and government is taking drastic measures based on it, it’s a good time to expose your “non-expert code” to the software engineering communities (and all other associated fields) to take a look.

should also let outside help come when the need arises.

expose your “non-expert code” to the software engineering communities (and all other associated fields) to take a look.

1. Software engineers are expensive. Hiring them to write your code is how you end up needing even more money to do your science, and I think the software engineering world if anything can appreciate prioritizing being scrappy to get more done.

2. Open source is slow and doesn't produce consistent results in the timeframes you need in order to get things implemented in one-offs. In fact, the value you get from others looking at your code is pretty anemic unless other software engineers find your code useful, at which point they have real incentive to help you improve existing functionality instead of reinventing the wheel. I do think code should be published alongside papers as a matter of reproduceability, but I don't think opening up the code beforehand will accomplish much.

Which is all to say that while I agree with you in principle, I don't think your recommendations are practical.

I think this letter has it right: we should make better tools to help non-experts do less foot shooting. C++ is very, very foot shooty, and the usual answer of "well get better at C++" is a non-starter for non-experts.

I think there are other solutions too - software engineers with partial specializations in academic fields, volunteers, etc.

Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code

#16
post #9

The scientific method is supposed to be reproducible. Others should be able to follow the steps and arrive at the same outcome. Scientsits working in wetlabs are not publishing papers on what they do in a language only they can understand and expecting others to blindly trust the results and conclusions.

This is definitely happening except the language is hard to follow excel.

Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code

#17

This 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)?

[deleted]

Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code

#18

The author makes it sound like a warning label is missing from the C++ tin. Maybe. But what tool should he have used? I haven't seen this code but is there any doubt it would look just as bad in Java or Python, maybe with fewer segfaults? Or FORTRAN.

I'm genuinely surprised it wasn't an Excel spreadsheet.

A well executed Excel model is much easier to explain to a non-technical person.

To be frank, for all the snobbery towards Excel, it has done a marvelous job at getting millions of people to think in more quantitative ways instead of "business acumen".

Re: To software engineers criticizing Neil Ferguson’s epidemics simulation code

#19
I'm somewhat skeptical. Firstly, I don't think the language is the problem with scientific code. You can write messy code in any language. So the warning then has to be about writing software in general. In that case, I think a warning like "don't try to write software unless you have years of training" is a bit much. Many people with no training learn to write nice code. Many projects made by amateurs might have ugly code but still add something to the world (eg. many games).

The problem here is the project is influencing decisions in healthcare.

Having worked in HPC and academia, I've seen code like this a lot. There are two archetypes I've noticed: (1) the well-meaning older academic maintaining legacy code, who have often done a lot of convergence testing, but still have code that isn't up to modern engineering practices, and (2) the domain experts with the attitude that "programming is much easier than my area of domain expertise". These are problems that require attitude changes within academia, not better warnings on online tutorials. The second group are going to ignore the warnings anyway.

Remember many of the people writing this academic code also teach programming courses in their departments! They view themselves as programming experts.

Post reply on HN