Research Software Engineering - Overview
Imperial is home to a huge range of computational software and the individuals who write it. This is true not only within the areas covered by the College’s Centre for Computational Methods in Science and Engineering (CMSE) but across the full array of science, technology and medicine research within the College.
Computing infrastructure is evolving rapidly and over the last few years, new paradigms such as Infrastructure-as-a-Service clouds, massively multi-core CPUs and GPGPUs have become widely used. However, while such infrastructure presents opportunities to users and developers to handle increasing amounts of data and more detailed models and simulations, it also results in significantly greater complexity.
Software development has long been a requirement in scientific research groups with this work being carried out by the researchers themselves, or by domain developers who have a background in and knowledge of the scientific field in question. While such individuals are frequently highly competent developers who produce top quality scientific code, they also need to balance their effort spent on software development with addressing their core scientific aims in order to support their research career by publishing and obtaining research funding.
While building core scientific algorithms and methods is still an important requirement, creating the supporting environment to enable these codes to run efficiently on modern infrastructure is often a step too far. The steep learning curve required to work with such infrastructure and the increasingly large codebases and development teams that require software management processes make it impractical or even impossible for scientific researchers to further their scientific career while focusing on software development.
The wide technical skillset required to undertake and manage modern High Performance Computing (HPC) software development has led to the emergence of individuals who focus on these capabilities and have the knowledge to build and deploy code to complex infrastructure while supporting the effective long-term sustainability and maintenance of software through the use of industry standard software management approaches. These individuals are Research Software Engineers (RSEs). RSEs may have strong domain knowledge and their RSE role is, at present, often not officially recognised. Nonetheless, as HPC infrastructure and software processes become more advanced, it’s clear that there will be an increasing need for such individuals and they will become more common in the research environment.