Authors
Affiliations

Gesellschaft für Informatik

deRSE

Gesellschaft für Informatik

deRSE

Florian Goth

Jan Phillip Thiele

Jan Linxweiler

Anna-Lena Lamprecht

Maja Toebs

RSEng Nuts and Bolts

Introduction

This module, inspired by the MIT Missing Semester, addresses the “nuts and bolts” often missing from traditional academic training in computing. It aims to provide students with practical skills and conceptual understanding for building robust, maintainable, and reproducible research software—key competencies in Research Software Engineering (RSEng).

General Competencies

The module begins with general-purpose computing tools and techniques that are foundational for any research software engineer:

  • Shell tools and scripting
  • Command-line environments
  • Editors and IDEs (e.g., Vim)
  • Version control (Git)
  • Data wrangling
  • Debugging and profiling
  • Metaprogramming
  • Security and cryptography

RSEng-specific Topics

Building on these foundations, the module introduces RSE-specific concepts and good practices:

  • Version control and collaboration
    • Git for code history, collaboration, and issue tracking
  • Virtualization concepts
    • Containerization and environment management
  • The Data Life Cycle
    • Managing research data and understanding data provenance
  • Good coding practices
    • Reproducible and testable code
    • Meaningful documentation and error messages
    • Modular software design
    • Performance-conscious coding
    • Easily installable and distributable software
    • Coding standards, formatting, and linting
  • Software management planning
    • Writing Data and Software Management Plans
    • Sustainable development and community involvement
  • Low-level programming
    • Introduction to a compiled language (e.g., C) to expose hardware-level concerns and efficient memory management
  • Long-term software maintenance
    • Version tracking, bug management, and sustainability strategies
    • Building and maintaining research software communities

Beyond the Basics

Finally, the module touches on practices that support the scholarly nature of research software:

By the end of this module, students will be well-equipped to design, develop, document, and maintain research software that meets high standards of quality, sustainability, and reproducibility.

Sources & Implementations:

Courses

Goth, F, R Alves, M Braun, LJ Castro, G Chourdakis, S Christ, J Cohen, et al. 2024. “Foundational Competencies and Responsibilities of a Research Software Engineer [Version 1; Peer Review: Awaiting Peer Review].” F1000Research 13 (1429). https://doi.org/10.12688/f1000research.157778.1.