Good practices in software engineering are essential to reduce energy usage. Without proper (automated) testing, documentation and sharing, resources are wasted constantly.
Examples are:
CodeRefinery is a very good resource for learning best practices in programming and data management for research software. Their full blown course lasts 6 days and goes fairly deep into the most important aspects of software development.
The “CodeRefinery in 1 hour” course condenses most of the materials in a 1 hours crash-course. For this exercise we will follow the contents of this crash course. Below you will find the links to the six course chapters on various of research software development.
Besides the links to the coderefinery course, in each of the sections below you will also find links to corresponding modules in the Research Software Support platform.. These materials are less hands-on because they are made for research supporters, however they often give you a nice conceptual overview of the concepts. You can regard these as optional additional materials.
The course starts with introducing an example project that will be used throughout the course.
You can also choose to follow the exercises using your own software project, in that case start with step 1. Throughout the exercises, the example project will be used, we trust you can translate the steps to your own project. If you notice that this doesn't work for you, try using the example project.
If you want to use the example project, follow the link below and read up on simulating the motion of planets. Example project: simulating the motion of planets
Follow the materials and exercises from coderefinery about version control and code review.
Additional Research Software Support materials on software version control
Follow the materials and exercises from coderefinery about documentation.
Additional Research Software Support materials on documentation
Follow the materials and exercises from coderefinery about reproducible dependencies and environments
Additional Research Software Support materials on distributing software
Follow the materials and exercises from coderefinery about Testing
Additional Research Software Support materials on testing
Follow the materials and exercises from coderefinery about Automation and reproducible workflows
Follow the materials and exercises from coderefinery about Sharing (licensing and publishing)
Additional Research Software Support materials on licenses, publication and citation,