Research Software Design by Example

cover art by Danielle Navarro

When I first began working with scientists I was puzzled by how little they knew about programming. I soon realized that they knew far more about it than I did about galaxy formation, quantum chemistry, or protein folding, and that the principal reason they didn't know more was that people like me had never taught them.

It took me a longer to understand that many of the practices I was pushing them to adopt were a poor fit for their actual problems: branches in version control aren't designed to manage dozens of experimental variations on a machine learning algorithm, and it's hard to write unit tests when no-one in the world knows what the correct answer is

This tutorial is my latest attempt to teach a few of the things that I am sure are useful. If you have suggestions or would like to contribute, please get in touch.

"Research Software Design by Example" is a Third Bit production. You may also enjoy The Querynomicon and The Sudonomicon.

Help Wanted

If you would like to help get this tutorial to a usable state, please see these issues or contact the maintainer.