This post accompanies a poster to be presented at Educause 2019 Conference, which brings together IT professionals in higher education. If you’re looking for research software engineering support at Northwestern, connect with our Research Data Services.
What is Research Software?
Research software is a broad term that includes software programs, languages, libraries, scripts, and tools developed to support research. Research software helps researchers make new discoveries and share their methods with others.
Why is Research Software Important?
80% of articles published in Science and Nature explicitly mention research software.
Between 1995 and 2016, the National Science Foundation awarded $9.6 billion in funding to projects that included software in their abstracts.
95% of researchers report using research software, and 2/3 could not do their research without it.
On average, scientists spend 30% of their time developing research software and 40% of their time using research software.
Challenges for Research Software
Inexperienced developers: Research software is often written by researchers and students with limited experience with software development practices.
Sustainability is a requirement: Scientific studies can run for years or decades. Both the original research teams and subsequent researchers building on the results need to be able to run the software required to ensure consistency in methods and data, test new data, and reproduce results.
Incentives: Software is critical to research, but the creation and maintenance of software is often not recognized in hiring, promotion, and tenure decision processes. Those who write research software professionally often lack permanent and well-funded positions within academia.
Examples of Research Software
GWpy: one of dozens of software packages used by the LIGO project to detect gravitational waves.
International Mathematics and Statistics Library: A foundational software library that enables efficient numeric calculations in multiple programming languages. It is a building block of scientific software.
NVivo: This qualitative data analysis program was built to help researchers in social science and humanities.
Bioconductor: software for the analysis of genomic data, largely written in and for the R statistical programming language.
SPSS: Now part of IBM, this statistical analysis software was created by graduate students for research analysis. The software is still used by researchers.
Omeka: An open source web publishing platform used to showcase digital humanities collections.
Pymatgen: A Python library used for materials analysis.
Who Creates Research Software?
Students: From undergraduate research assistants to graduate students starting their own careers, students write, maintain, and use research software in every domain. Many have limited or no training in programming or software development when they start.
Faculty: In addition to creating software, faculty may also be managing software development teams. They may also have limited or no training in programming or software development.
Postdocs and Staff Researchers: People in these positions may be developing software full time, or they may be creating software as part of their research.
University Staff: Staff in IT departments, libraries, and academic departments both develop tools on their own and support researchers by developing software for specific projects.
National Laboratories: Research groups create software for their own project, but national labs also support large-scale software development projects that build infrastructure for the scientific community.
Companies: Companies create research software for use in their own research operations, to sell as commercial products, and by contributing to open source projects on which researchers rely.
Volunteers: Many research software projects are open source. They welcome contributions from anyone willing to devote time to building, maintaining, and documenting code.
Research Software Engineers: A growing number of people are focused on developing research software professionally. They are employed at universities, companies, national laboratories, and other organizations.
What is a Research Software Engineer (RSE)?
Research Software Engineers (RSEs) combine knowledge of a research domain and the research process with software development skills and practices to create software for research. They regularly apply expertise in programming to advance research.
RSEs knowledge of the research lifecycle allows them to adapt software engineering practices to a research environment.
Some RSEs started as software developers and then learned about the research process and research problems software can help solve. Other RSEs started as researchers who needed to write software to answer their research questions or share their research with the world.
RSEs work in all research domains.
Job titles RSEs may go by:
- software developer
- applied scientist
- software engineer
- computational scientist
- computational specialist
- data scientist
- systems developer
- research assistant
Why are Research Software Engineers Necessary?
Researchers can’t be experts in everything! Modern research requires teams of specialists working together. Software development is one of the specialized skillsets that make research happen.
Many researchers know how to code, but they are not familiar with software development practices. For example, a majority of researchers do not use standard software testing practices.
RSEs bring knowledge of version control, testing, deployment, software design, distribution, documentation, automation, and more to the process. And they know how to adapt these practices to work well in a research environment. By devoting time to developing these skills, learning best practices, and engaging with the broader software development community, RSEs help make research software more robust, manageable, and sustainable.
Similarly, traditional software developers may not have the knowledge of the research process or the domain of a specific research application to effectively develop software. RSEs spend time learning about the methods, terminology, data, and approaches used in the research they support. Research software engineers may need to read scientific publications and figure out how to implement the algorithms and methods reported in them. RSEs may also contribute to writing scientific articles. RSEs need to talk to and work with researchers to gather requirements, get feedback, and determine how to test the software they create.
RSEs are needed to combine research and software development skills.
What can IT Organizations do to Support Research Software?
Learn about the research software development projects at your institution. Ask researchers and research staff about their work. Find out if they’re writing code. Researchers themselves don’t always realizing they are developing software!
Create mechanisms for installing and deploying novel software on researcher’s computers and university systems. Make it easy to do the right thing AND research, which may require novel software.
Provide resources for and assistance with testing and deploying software. Deploying research software may require setting up custom domains, hosting servers, and integrating with other services. Help researchers and RSEs find and use the best resources for these tasks. They may need to test and deploy software on your systems, but they usually aren’t system admins. Help them understand your concerns and policies, and get them the information and support they need to be successful.
Encourage conversations about software sustainability. Help researchers develop a plan to ensure their software will continue to work, even after the person who wrote it leaves the institution.
Offer workshops and training on software development practices. IT organizations may be the best source of software development skills and knowledge at an institution. Encourage your developers to share their expertise.
Consider offering, or connecting researchers with, software engineering services. Not all researchers can be or want to be software developers. Yet they may still need software created to conduct or share their research. Offer development services directly, or help connect researches with vetted freelance developers or companies offering software development services. Researchers may not have the knowledge to evaluate and select quality software developers to work on their projects. Help them by assisting with hiring processes.
What can IT Organizations do to Support Research Software Engineers?
Welcome them as colleagues. RSEs are developers, even though they may go by many different names. Help them connect with software developers in your organization.
Recognize their unique skill set. While RSEs may have many skills in common with IT software developers, they have also developed significant expertise in research. It is this combination of skills that helps them do their work well. Help your institution’s leadership recognize how RSEs are different from IT or other non-research software developers.
Help them get the resources they need. RSEs may have different IT requirements than other researchers. Help them navigate IT organizations and policies to find the right people and resources. Work with them to find solutions that meet their needs and are still manageable and sustainable for your organization.
Create research software engineering networking groups. RSEs often lack the networks of other developers they need to learn new skills, discuss software development problems, get advice, or review code. Help them connect with each other by sponsoring events to bring them together and making introductions between RSEs you know.
Consider giving them an organizational home. Many RSEs work in temporary, funding-dependent positions. They may lack colleagues and managers who understand their work and have limited career development training or prospects. Creating full-time staff positions together in a single group helps provide RSEs with colleagues, training, and a career. It also provides flexibility for both RSEs and researchers to work together on a greater variety of projects. The best arrangement will vary by institution, but start a conversation with both researchers employing RSEs and organizational leadership to explore what’s possible.
Are you a Research Software Engineer?
- Are you employed to develop software for research?
- Are you spending more time developing software than conducting research?
- Are you employed as a postdoctoral researcher, even though you predominantly work on software development?
- Are you the person who does computers in your research group?
- Are you sometimes not named on research papers despite playing a fundamental part in developing the software used to create them?
If you answered yes to one of the above questions, you may be a research software engineer. Whether you’re an RSE or an RSE ally, join an RSE organization to meet other RSEs, learn about RSE events and resources, and raise awareness of the importance of software, and RSEs, in research.
Nordic Countries: http://nordic-rse.org/
Software Sustainability Institute: https://www.software.ac.uk
US Research Software Sustainability Institute: http://urssi.us
Better Scientific Software: https://bssw.io/
 Katz, D. S., McHenry, K., Reinking, C. & Haines, R. Research Software Development Management in Universities: Case Studies from Manchester’s RSDS Group, Illinois’ NCSA, and Notre Dame’s CRC. in 2019 IEEE/ACM 14th International Workshop on Software Engineering for Science (SE4Science) 17–24 (2019). doi:10.1109/SE4Science.2019.00009
 Nangia, U. & Katz, D. S. Understanding Software in Research: Initial Results from Examining Nature and a Call for Collaboration. in 2017 IEEE 13th International Conference on e-Science (e-Science) 486–487 (2017). doi:10.1109/eScience.2017.78
 Simon Hettrick. softwaresaved/software_in_research_survey_2014: Software in research survey. (Zenodo, 2018). doi:10.5281/zenodo.1183562
 Nangia, U. & Katz, D. S. Track 1 Paper: Surveying the U.S. National Postdoctoral Association Regarding Software Use and Training in Research. (2017). doi:10.6084/m9.figshare.5328442.v3
 Hannay, J. E. et al. How do scientists develop and use scientific software? in 2009 ICSE Workshop on Software Engineering for Computational Science and Engineering 1–8 (2009). doi:10.1109/SECSE.2009.5069155
 Prabhu, P. et al. A Survey of the Practice of Computational Science. in State of the Practice Reports 19:1–19:12 (ACM, 2011). doi:10.1145/2063348.2063374