The Institute for Health Metrics and Evaluation (IHME) is an independent research center at the University of Washington. Our mission is to monitor global health conditions and health systems, as well as to evaluate interventions, initiatives, and reforms. The IHME carries out a range of projects within different research areas including: the Global Burden of Diseases, Injuries, and Risk Factors; Future Health Scenarios; Costs and Cost Effectiveness; Local Burden of Disease; Resource Tracking; and Impact Evaluations. Our aim is to provide policymakers, donors, and researchers with the highest-quality quantitative evidence base to make decisions that achieve better health.
IHME has an outstanding opportunity for a full-time Software Engineer.
About our Team
The Simulation Science team models the impact and cost effectiveness of healthcare interventions for a variety of stakeholders. The scope of our work is wide. We produce models to compare interventions on maternal and child health, to evaluate new drugs for the treatment of non-communicable diseases, and to gauge the impact of public policy interventions on disease dynamics. This modeling work is done using a flexible, open-source simulation framework run on the IHME’s 20,000-core high performance computing cluster.
About the Role
Our key work is to support research on public health intervention models using a state-of-the-art, open-source simulation framework written in Python. As a software engineer on the Simulation Science team, you will:
- Design, implement, and optimize framework features.
- Implement sophisticated simulation models.
- Build large scale data processing pipelines.
- Help create bullet-proof distributed systems to run our simulations in high performance computing clusters.
- Build web dashboards to monitor production systems and analyze simulation results.
- Create and implement software solutions to turn experimental research methods into high-performance, production-ready code.
- Redesign and refactor existing code to improve efficiency, operability, and performance while maintaining high-quality and reproducible results.
- Optimize code efficiency and parallelize across a massive computing cluster to enable researchers to quickly produce results.
- Enforce and assure the quality of software products through the use of continuous integration, automated unit testing, code versioning, and code coverage tools.
- Work with researchers, supervisors, and colleagues to develop plans for software to better support research needs.
- Assess analytic tools, indicators, and desired results against available infrastructure and devise plans to improve the performance of components.
- Contribute to software specification process and present to users for feedback.
- Determine appropriate tools to use, including languages, frameworks, data structures, etc.
- Help to develop and follow a system of APIs to enable greater efficiency.
- Assess databases that house the relevant data and determine how best to use them.
- Provide input to timelines to deliver both iterative milestones and completed products.
- Become familiar with the different components of the analytic process and their purpose.
- Communicate clearly and effectively while contributing as a productive member of the team and the Institute as a whole. Work closely with other team members at varying levels to help them with relevant tasks, teach them new skills, and help resolve emerging problems on different projects.
- Attend relevant meetings, adhere to deadlines, and participate as a vital member to collectively advance team-level objectives.
- Participate in the overall community of the Institute, carrying out duties as required as team members with other Institute members.
- Bachelor’s degree in computer science, mathematics, engineering, statistics, or related field plus three years’ related experience, or equivalent combination of education and experience.
- Demonstrated expertise in developing code in Python, C++, R, SQL, or other coding language.
- Experience in scientific software packages such as scipy, pandas, and numpy, or expressed interest in learning them.
- Strong sense of focus and attention to detail.
- Ability to plan and organize technical projects.
- Demonstrated organizational skills, self-motivation, flexibility, strong communication skills, and the ability to thrive in a fast-paced, energetic, highly creative, entrepreneurial environment.
Equivalent education/experience will substitute for all minimum qualifications except when there are legal requirements, such as a license/certification/registration.
- Experience using Linux systems.
- Experience working on an agile development team.
- Experience with application containerization using Docker, Rancher, Kubernetes.
- Interest in statistics, stochastic processes, simulation, and/or public health.
- Experience with database management systems.
- Automation experience and/or a desire to automate all the things.
- An interest in open source software development.
- Experience with parallel and distributed systems technologies.
- Experience building intuitive web-based interfaces on top of complex data backends.
Conditions of Employment:
- Weekend and evening work sometimes required.