Ten Essential Guidelines for Building High-Quality Research Software
Nasir U. Eisty, David E. Bernholdt, Alex Koufos, David J. Luet, Miranda Mundt

TL;DR
This paper provides ten comprehensive guidelines for developing high-quality research software, emphasizing best practices across the entire development lifecycle to improve robustness, usability, and sustainability in scientific computing.
Contribution
It introduces a practical set of ten guidelines tailored for researchers to enhance the quality, reproducibility, and maintainability of research software, filling a gap in best practice resources.
Findings
Guidelines cover planning, coding, testing, and documentation.
Following guidelines improves software robustness and reproducibility.
Enhances long-term sustainability and community engagement.
Abstract
High-quality research software is a cornerstone of modern scientific progress, enabling researchers to analyze complex data, simulate phenomena, and share reproducible results. However, creating such software requires adherence to best practices that ensure robustness, usability, and sustainability. This paper presents ten guidelines for producing high-quality research software, covering every stage of the development lifecycle. These guidelines emphasize the importance of planning, writing clean and readable code, using version control, and implementing thorough testing strategies. Additionally, they address key principles such as modular design, reproducibility, performance optimization, and long-term maintenance. The paper also highlights the role of documentation and community engagement in enhancing software usability and impact. By following these guidelines, researchers can…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsScientific Computing and Data Management
