Glossary

Research software engineering

Applying professional software engineering practice to code written for scientific research, not just quick one-off scripts.

Research software engineering applies professional software engineering practice, version control, automated testing, documentation, and code review, to the code researchers write to run simulations, process data, and produce results, work that is often written quickly by domain scientists without formal software training.

A research software engineer (RSE) typically sits between research and traditional software development, refactoring or building tools that need to be correct, maintainable, and usable by others, rather than one-off scripts run once and discarded. This differs from general software engineering mainly in context: the "customer" is often the research question itself, and requirements can shift as the science evolves in ways a typical product roadmap does not.

Poorly engineered research code undermines reproducibility, since undocumented, unversioned, or untested code is hard for anyone, including its original author a year later, to rerun or trust; good practice here also supports sound scientific workflow design and long-term research data management. The main pitfall is institutional: research incentives typically reward publishing results over investing in code quality, so research software engineering work is frequently undervalued or understaffed, even though it often determines whether a result can be reproduced at all.

Last reviewed September 22, 2026

In the index now

Related terms