Research Software Engineering
The research software engineering team aims to support the use and development of computational tools used in research by members of MVLS, their collaborators and the wider research community. The team can produce or enhance software directly for research projects and hopes to develop the skills and awareness of good practices in research software and data management for computational science.
Software Development for Research Projects
A research software engineer from the team can create new software, or enhance existing software, as a direct contribution to a research project. The team member works to ensure that the software foundations of computational research are of high quality.
What we offer:
- Portable, maintainable and which produces reproducible results;
- Documented and with a focus on usability and re-usability;
- Tested, and clearly written, giving confidence in results;
- Efficient, and designed to reduce barriers to use.
Small Project Advice and Support
Outside focused software development, the team contributes to the research output of College by supporting research staff and students in their own computational work.
What we offer:
- Advise on best practices in research software;
- Support funding proposals with proofs of concept, or designs for deliverables;
- Perform code review, and suggest or implement enhancements;
- Support debugging and optimization efforts, parallelization and porting;
- Advise on or implement workflow improvements, such as continuous integration and containerization.
Training and Skill Development
Working with colleagues across MVLS, the university and beyond, the research software engineering team can provide teaching and training to develop computational and software development skills for research. In specific cases, the team may be able to contribute to post-graduate course modules and projects.
What we offer:
- Version control, such as using Git, and collaborative software development;
- High performance and high throughput computing, including GPUs;
- Data management, processing and visualization;
- Programming and scripting languages, including Bash, Python and R;
Community Support
A research software engineer from the team can contribute directly to research projects, and by delivering training can build skills within research groups. The team enhances these approaches by also supporting communities of practice and peer support networks.
What we offer:
- Be a mentor for those interested in research software engineering careers;
- Develop peer-level code review processes and "code clubs";
- Contribute relevant experience and expertise to seminar series;
- Introduce individual practitioners to wider communities.