How can we write better research software? If you want the software you make for research to produce trustworthy results and to be reusable