An open letter to software engineers criticizing Neil Ferguson’s epidemics simulation code

Konrad Hinsen:

But the main message of this letter is something different: it’s about your role in this story. That’s of course a collective you, not you the individual reading this letter. 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. It’s also you, the software engineering community, that has made no effort to warn the non-expert public of the dangers of these tools. Sure, you have been discussing these dangers internally, even a lot. But to outsiders, such as computational scientists looking for implementation tools for their models, these discussions are hard to find and hard to understand. There are lots of tutorials teaching C++ to novices, but I have yet to see a single one that starts with a clear warning about the dangers. You know, the kind of warning that every instruction manual for a microwave oven starts with: don’t use this to dry your dog after a bath. A clear message saying “Unless you are willing to train for many years to become a software engineer yourself, this tool is not for you.”

As a famous member of your community famously said, software is eating the world. That gives you, dear software engineers, a lot of power in modern society. But power comes with responsibility. If you want scientists to construct reliable implementations of models that matter for public health decisions, the best you can do is make good tools for that task, but the very least you must do is put clear warning signs on tools that you do not want scientists to use – always keeping in mind that scientists are not software engineers, and have neither the time nor the motivation to become software engineers.