We recently published a new version of Building Better Research Software, a lesson in The Carpentries Incubator designed to serve as a “next steps” workshop after Software Carpentry. Previously known as FAIR Research Software, the curriculum has undergone significant changes over the last few months, and we are now seeking Carpentries Instructors willing to teach it in their communities and provide feedback to further improve it.
Lesson Profile
- Title: Building Better Research Software
- Lesson site: https://carpentries-incubator.github.io/better-research-software/
- Lesson repository: https://github.com/carpentries-incubator/better-research-software/
- Teaching time: The lesson is designed to be taught in two full days or four half days
Learning Objectives
After following the lesson, learners will be able to:
- List challenges typically faced by researchers developing software and managing data.
- Enhance their research software development workflows by structuring, clarifying, documenting, testing, sharing, and reusing code.
The lesson teaches skills in three areas:
- Things learners can do with their computing environment to enhance the software
- Using virtual development environments.
- Things learners can do to improve the source code of the software itself
- Organising and structuring code and project directories.
- Following coding conventions and guides to improve code readability.
- Writing unit tests to ensure code correctness.
- Things learners can do to make the software easier for other people to use
Target Audience
The lesson is aimed at post-graduate students, early career researchers or junior Research Software Engineers (RSEs) who want to develop software to support their research using established best practices. They have foundational knowledge of Python, version control and using software tools from the command line shell (as might be obtained through participation in a Software Carpentry workshop). It is also suitable for researchers or scientists who have foundational software training but wish to refresh, reinforce, or improve their skills and practices in the wider context of FAIR research, sharing, and writing software for open and reproducible research.
The curriculum has been designed to build on the mental model and skills taught in a novice Software Carpentry (Python) workshop. The learner profiles provide some examples of learners who would benefit from the workshop.
State of Development
The lesson has been extensively tested in multiple workshops, including events delivered as part of the UK Reproducibility Network (UKRN). More recently, the content was modified to improve accessibility and align its prerequisite knowledge more closely with the learning outcomes of a Software Carpentry workshop.
How You Can Help Develop This Lesson
Please try teaching the lesson and let us know how it goes!
Two beta pilot workshops of the lesson are already scheduled, and we are hoping to find more Instructors in the community who are interested in testing it out and providing feedback. Since it builds on the themes of existing Software Carpentry lessons, we expect that the content will be relevant to many in the Instructor community.
Our goal is to submit the lesson for adoption as a curriculum for official Software Carpentry workshops. All feedback and suggestions for improvement that we receive from the community will help us achieve this goal.
If you are willing and able to teach the lesson to your community in a beta pilot workshop, please let us know by contacting Aleksandra Nenadic or opening an issue on the lesson repository. The maintainers will be delighted to meet with you and answer any questions you have to help you prepare for the workshop.
After a pilot is complete, we ask Instructors to submit feedback based on their experience via a templated issue form on the repository. We would also be happy to meet with you again to debrief on your experience.
Acknowledgments
The development of the lesson has been supported so far by The Carpentries and the UK’s Software Sustainability Institute, via grants from the EPSRC, BBSRC, ESRC, NERC, AHRC, STFC, and MRC (EP/S021779/1) and the UKRN.
The current maintainers express their sincere gratitude to all previous developers and maintainers of the lesson, including:
- Sarah Gibson
- Sarah Jaffa
- Kamilla Kopec-Harding
- Sam Mangham
- Alan O’Cais
- Etienne Roesch
- Colin Sauze
- Sarah Stevens
- Zhian Kamvar