IHME’s aim within the Forecasting/Future Health Scenarios portfolio is to create an analytic engine that can model the impact of a wide array of changing levers, inputs, and other determinants on the trajectory of health outcomes and risks in different countries, projected 25 years into the future. Through creative visual display and operability, IHME intends to allow decision-makers to modulate the levers, inputs, and determinants in order to compare different scenarios and assess the impact of their potential actions analytically.
IHME has an outstanding opportunity for a full-time Principal Software Engineer. The Principal Software Engineer will lead the Forecasting/Future Health Scenarios development work and supervise engineers on that team. The development arm of the team is responsible for the design and implementation of software to support this effort, including APIs for integration with other systems and user interfaces for both internal and external audiences. Working with the FHS Research team and other stakeholders, this position determines requirements and translates into written specifications the nature of work to be completed, evaluates and chooses appropriate technologies, directing proof-of-concept research as required, and oversees the work of team engineers. The position will write technical implementation specifications to help plan and estimate the development effort and guide work once started. They will help determine the software development methodology, choose appropriate developer tools, and supervise team members, both monitoring work and reviewing code. The individual will help cultivate a sustainable organizational culture, taking into account the full life-cycle of development, from early design through implementation and testing to deployment and maintenance.
- Become familiar with the dimensions and uses of health data in and beyond the GBD enterprise (e.g., disease incidence, relative risks, treatment effects, costs, etc.) and how they are relevant to the forecasting project.
- Develop a working understanding of epidemiologic, demographic, and econometrics methodology.
- Develop a strong understanding of the forecasting machinery, including a familiarity with the research modeling and applications for additional software development needs
- Keep current with developments in scientific computing, code bases, and software development tools
- Develop and execute plans for enhancing, optimizing, and expanding the operability, scale, and quality performance of key production tools and analytic machinery for the future health scenarios work
- Responsible for leading technical work on forecasting projects, including development of user interfaces, databases, data flows, and underlying modeling software.
- Lead the development of computing infrastructure and application user interfaces relevant to forecasting work, including Spark simulation software development, visual data exploration, file system management, and tools for querying massive datasets.
- Work closely and collaboratively with project officers, research staff, and faculty to identify requirements and resolve issues.
- Define product requirements and create high-level architectural specifications, ensuring feasibility, functionality, and integration with existing systems/platforms. Work closely with the scientific computing team to ensure the forecasting stack works within the overall IHME system.
- Responsible for technology selection, from evaluating technologies for new applications to selecting libraries and frameworks to be added to existing systems.
- Evaluate architecture design by identifying technical solutions for specific problems, validating the technical feasibility of the solution, and guiding the development of prototypes or proofs of concept.
- Enforce and assure the quality of forecasting software products through the use of continuous integration, automated unit testing, code versioning, and code coverage tools.
- Set up, support, and continuously enhance the development infrastructure, including defining and implementing the development methodology.
- Contribute to the forecasting group’s overall management. The Principal Software Engineer will contribute to decisions made by the group, take the lead on all information-technology-related decisions, and make necessary decisions to ensure success.
Leadership and Management
- Supervise and mentor junior team members on the development arm of the future health scenarios team.
- Ensure strong, clear, and consistent communication across teams with a stake in decisions related to the software development and production of the future health scenarios work
- Set goals, assess performance, manage progress against objectives
- Work closely with other team members to help define and execute tasks, develop new skills, and resolve emerging problems on different project
- Guide junior team members in goal execution, professional development, managing workflow, priority setting and performance assessments.
- Develop staff indirectly through coaching and mentoring
- Attend relevant meetings, adhere to deadlines, and participate as a vital member to collectively advance team-level objectives.
- Effectively set priorities, provide timely and constructive feedback, and manage performance.
- Formulate and implement effective strategies for motivating team members. Ensure continuous high team achievement and improvement in processes and deliverables.
- Participate in overall community of the Institute, carrying out duties as required as team members with other Institute members.
- Perform additional duties as assigned that fall within the reasonable scope of this position as a member of the overall FHS and Science and Engineering teams.
- Bachelor’s degree in computer science, sciences, engineering, or related field, plus nine years’ related experience or equivalent combination of education and experience.
- Demonstrated ability to lead a development project from conception through to implementation
- Experience designing, optimizing, and maintaining relational databases such as MySQL
- Extensive experience in Python for scientific software development, including Numpy, Scipy, and Pandas
- Comfort working with Unix-based operating systems
- Plans multiple projects simultaneously. Estimates, tracks & completes project on time and within budget.
- Develops and applies advanced technologies, engineering principles, theories and concepts. Broad knowledge about the design and operation of systems outside of specialty.
- Experience with developing, debugging, and optimizing distributed computing software
- Experience monitoring and evaluating the performance of large, distributed software
- Experience developing novel applications
- Project planning and leadership skills
- Ability to clearly communicate and relate to others with diplomacy (oral and written)
- Demonstrates effective behaviors to communicate and work with others
Equivalent education/experience will substitute for all minimum qualifications except when there are legal requirements, such as a license/certification/registration.
- Knowledge of at least one lower-level, high-performance computing language (e.g., C++)
- Actively engage and create learning experiences
Conditions of Employment:
- Weekend and evening work may be required.