Details of Award
NERC Reference : NE/X009181/1
Software Development for Earth and Environmental Scientists: Reproducible Research through Reusable, Reliable Code
Training Grant Award
- Lead Supervisor:
- Professor DM Schultz, The University of Manchester, Earth Atmospheric and Env Sciences
- Grant held at:
- The University of Manchester, Earth Atmospheric and Env Sciences
- Science Area:
- Atmospheric
- Earth
- Freshwater
- Marine
- Terrestrial
- Overall Classification:
- Atmospheric
- ENRIs:
- Biodiversity
- Environmental Risks and Hazards
- Global Change
- Natural Resource Management
- Pollution and Waste
- Science Topics:
- Software Engineering
- Software Maintenance
- Software Reliability
- Software Reuse
- Abstract:
- Much of modern research is conducted using complex analysis or simulation software. To help ensure that research is reproducible, this software needs to be accessible and usable by others. It should be well written, documented, and archived using a version-control system allowing the tracking of critical changes. However, such software is often not written by dedicated software engineers, but by researchers who have not had time nor resources to properly learn these skills. This deficit in skills has led to a longstanding scientific "replication crisis" where many published, peer-reviewed papers cannot be independently reproduced. Many open communities, such as The Carpentries (https://carpentries.org/) and research software engineers (RSEs; https://society-rse.org/), have worked over the past decade to address this training gap by providing foundational coding and data training to researchers. However, an internal RSE survey conducted by the Software Sustainability Institute (SSI) reports a need for more intermediate-level training to help researchers with the next steps after gaining basic coding literacy as research software-related projects are becoming more complex, require larger development teams, and involve more stakeholders. We propose to adapt an existing intermediate-level course by the SSI that teaches best practices for designing robust software that goes beyond writing a few thrown-together proof-of-concept scripts. Attendees will learn to plan for the software lifecycle, write software for stakeholders, and engage in collaborative development. The target audience is researchers who have a basic understanding of version control and writing code and have been writing software for a while, but whose code is unstructured, untested, and undocumented, who do not know how to collaborate with others to develop software or how to prepare their software for others to reuse. We will tailor this course for the NERC audience, by replacing the original code examples, datasets, and exercises with NERC-relevant equivalents. Students will gain more advanced knowledge of common software development tools and practices: 1. Virtual and Integrated Development Environments for code development, testing and debugging. Advanced Git for version control and parallel feature development. GitHub's advanced features for code sharing and collaborative development. 2. Verifying software correctness at scale: setting up a test framework, test-driven development and writing tests to verify code behaviour, and automating testing with Continuous Integration using GitHub Actions. 3. Different programming and software design paradigms for architecting software to satisfy business requirements. 4. Code review to improve software quality and team contributions, identify wider codebase issues, and increase codebase knowledge across a team. 5. Prepare software for further development and reuse - best practices in documenting, licensing, tracking issues, maintaining, releasing and supporting software. The course design is based on The Carpentries pedagogical principles and will be made available via The Carpentries Incubator (https://github.com/carpentries-incubator) - a platform for sharing community-developed lessons to ensure the maintenance of the course beyond the end of the project and its worldwide reuse. The planned five-day, in-person workshop held at the University of Manchester will consist of instructor-led coding-along sessions, individual self-learning sessions aided by helpers, and small-group exercises mimicking real-life collaborative software projects. Training and learning outcomes of the course will include students gaining intermediate-level general software engineering skills, making them highly employable both within academia and industry. Students will also have opportunities to apply these skills to their own work during the course, supported by the on-hand expert helpers.
- NERC Reference:
- NE/X009181/1
- Grant Stage:
- Completed
- Scheme:
- Doctoral Training
- Grant Status:
- Closed
- Programme:
- Advanced Training
This training grant award has a total value of £55,808
FDAB - Financial Details (Award breakdown by headings)
Total - Other Costs |
---|
£55,808 |
If you need further help, please read the user guide.