The Research Software Engineer (RSE) will work to bring modern software engineering techniques and approaches to research projects at the Morgridge Institute for Research as part of long-running engagements and collaborations between scientists. At Morgridge, in affiliation with the University of Wisconsin-Madison, the RSE will sit at the nexus of exciting research, large-scale computing, and national cyberinfrastructure projects. Whether it’s bringing a codebase up to production quality, designing programmatic interfaces, or making workloads run more effectively across thousands of cores, the RSE will have a diversity of challenges and help advance Morgridge’s goals of Fearless Science. Potential projects will be diverse, including computational Cryo-EM, storage management for distributed computing, natural language processing, and single-cell RNA-seq; projects can be tailored based on the candidate.
The position will work in the Morgridge Research Computing theme and with the Center for High Throughput Computing (CHTC) at the UW-Madison; these groups are led by PIs who lead distributed computing project such as the OSG and the Partnership to Advance Throughput Computing (PATh), a major NSF investment in the vision that high throughput computing can make an outsized impact on science. Combined, the teams have about 25 staff members, operate 25,000 computing cores, and over 100 GPUs – ensuring there are always local resources to draw upon for projects.
- Interact with scientific group leaders and the Research Computing leads to identify pressing software engineering challenges and scoping/ architecting / implementing / supporting a program of work to solve them.
- Develop on research codes (typically, C, C++, or Python; but Julia and R are also in use) to make them more robust or sustainable.
- Integrate or optimize computing workloads on the identified projects with the HTCondor-, Kubernetes-, or SLURM-based services operated by CHTC and Research Computing.
- Effectively communicate with the research teams, mentoring them on best practices for software engineering and emerging topics in the research cyberinfrastructure field (e.g., container management, CI/CD, available national-scale computing services to leverage).
- As aligned with experience, lead student software engineering interns on specific semester-long projects.
- Provide consulting to Morgridge research teams to help improve the competitiveness of external grant proposals.
- Provide assistance with other projects, as necessary to support the overall mission and goals of Morgridge Institute for Research
- A Bachelor’s degree in Computer Science, Mathematics, Physics, or biological sciences; Master’s degree preferred.
- 3+ years of working with software engineering, preferably in a research environment.
- Programming experience in either C/C++ or Python.
- Experience in utilizing large-scale computing environments such as batch or cloud is preferred.
- Experience in utilizing GPU accelerators is preferred.
- Experience in presenting technical concepts to researchers through a demo or presentation is preferred.
- Strong systems design and programming skills.
- Demonstrated writing ability to contribute to proposals, technical blog, or academic papers is preferred.
- Ability to keep projects organized in a project management / issuer tracker system such as JIRA.
- Familiarity of software development environments like GitHub and modern CI/CD tooling such as GitHub Actions or Jenkins.
- Knowledge of working with the following technologies and environments is desired: HTCondor, Containers/Kubernetes, Flask, or Dask.