Research Software Engineer

The Organization

As an independent research organization, the Morgridge Institute for Research explores uncharted scientific territory to discover tomorrow’s cures. In affiliation with the University of Wisconsin-Madison, we support researchers who take a fearless approach to advancing human health in emerging fields such as regenerative biology, metabolism, virology and biomedical imaging. Through public programming, we work to inspire scientific curiosity in everyday life.

Description:

The Research Software Engineer (RSE) will work to bring modern software engineering techniques and approaches to research projects at the institute as part of long-running engagements and collaborations between scientists. At Morgridge, 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 RNAseq; 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.

Primary Responsibilities:

  • 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

Requirements:

To perform this job successfully, an individual must be able to perform each primary duty satisfactorily. Some of the duties can be learned through on-the-job training. The requirements listed below are representative of the knowledge, skill, and/or ability required. Reasonable accommodations may be made to enable individuals with disabilities to perform the primary duties.

Education and Experience:

  • 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.

Knowledge, Skills and Abilities Required:

  • 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.

This position is not available for remote work.  The successful candidate may apply for a flexible work arrangement that includes a hybrid work option.

In order to insure the safety of our workplace, proof of COVID-19 vaccination is required unless an exemption is granted for medical, disability or religious reasons.

To apply:

Qualified individuals interested in this opportunity are required to submit a cover letter and resume as one document via the link below.

Apply Now >