Research Software Engineer II

placePrinceton calendar_month 

Overview:

Princeton University seeks candidates for a new position within the fast-growing Research Software Engineering (RSE) Group. The successful candidate will have a strong background in software development, high-performance computing (HPC), and numerical modeling in Geophysics.

The RSE Group collectively provides computational research expertise to multiple divisions within the University. As a central team of software experts, we are focused on improving the quality, performance, and sustainability of Princeton's computational research software.

Our group is dedicated to creating collaborative and inclusive environments that value the best software engineering practices and to sharing and applying cross-disciplinary computational techniques in new and emerging areas.

In this position, you will be an integral part of the Theoretical & Computational Seismology group. As part of a team of RSEs, you will collaborate with several researchers and develop the SPECFEM++ framework, which involves modern C++ features and the Kokkos portability performance library.
This group of researchers heavily uses computing resources at Princeton University and national supercomputing facilities, providing the opportunity to utilize the nation's state-of-the-art systems. As part of your role, you will focus on importing features from the original SPECFEM Fortran codebase and implementing new features directly into SPECFEM++, all with a focus on the code's performance, scalability, and maintainability.

You will also help researchers to contribute new models to the codebase.

If you have a strong background in HPC and Geosciences, you have the proper skill set to impact a high-profile research project immediately. This role functions within a dynamic, supportive team environment that permits diverse backgrounds to thrive.

Responsibilities:

Application of Domain Expertise:

  • Through directed independent studies, including reading publications and studying existing code bases, understand relevant topical areas and corresponding numerical methods in Geophysics, which will be needed for software development projects.
  • Collaborate with scientific researchers to understand their needs and challenges and develop software solutions to support their work.
  • Foster open collaboration via regular meetings and effective communication to ensure software development meets the research objectives.

RSE:

  • Work independently or as a self-directed team member to design, develop, and maintain software tools and applications for scientific research projects.
  • Write efficient, robust, and maintainable code that is well-documented and tested.
  • Optimize code performance for large-scale, parallel simulations and modeling.
  • Write technical reports and documentation to communicate software development processes and usage.
  • Manage software projects by developing project scopes and planning delivery timelines. Communicate project plans and progress updates with the scientific research team.
  • Communicate software engineering concepts to project teams with varying levels of software engineering knowledge.

Professional Development:

  • Keep up-to-date with new software technologies and tools that could improve research outcomes.

Qualifications:

Essential Qualifications:

  • A minimum of 4 years as a Research Software Engineer or equivalent experience (e.g., graduate school, industry experience, open-source software development, etc.)
  • Extensive experience with the Finite Element Method (FEM).
  • Strong programming skills, particularly in C++ and Python.
  • Strong experience in High-Performance Computing (HPC). Particularly:
  • Parallel computing (MPI, OpenMP, hybrid CPU/GPU code).
  • GPU programming.
  • Experience with code performance tuning using performance analysis tools (e.g., profilers.)
  • Demonstrated success in:
  • Consistently using conventional and readable coding style.
  • Creating comprehensive and well-written documentation.
  • Developing and maintaining reproducible build systems.
  • Using modern software development workflows based on Git and Continuous Integration/Continuous Development methods.
  • Ability and interest in learning new concepts and technologies beyond current core knowledge areas.
  • Ability to communicate effectively with a diverse user base with varied technical proficiencies.
  • Experience working in an academic research environment.
  • Experience with HPC cluster environments (e.g., workflow manager, parallel file system).
  • Demonstrated successes working independently and in a collaborative software development environment ("team science," often geographically distributed).
  • A scientific and mathematical background appropriate for understanding the algorithms used in Geosciences and communicating effectively with researchers.
  • Education: A Bachelor's degree in computer science, engineering, physical science, or a related computational field is required.

Preferred Qualifications:

  • Experience with the Kokkos library.
  • Background in Geophysics.
  • A Master's/Ph.D. in Geosciences.
Princeton University is an Equal Opportunity/Affirmative Action Employer and all qualified applicants will receive consideration for employment without regard to age, race, color, religion, sex, sexual orientation, gender identity or expression, national origin, disability status, protected veteran status, or any other characteristic protected by law.

KNOW YOUR RIGHTS

Standard Weekly Hours:
  1. 25

Eligible for Overtime: No

Benefits Eligible: Yes

Probationary Period: 180 days

Essential Services Personnel (see policy for detail): No

Physical Capacity Exam Required: No

Valid Driver’s License Required: No

Experience Level: Mid-Senior Level
  • #Ll-DP1
local_fire_departmentUrgent

Lead Research Software Engineer

placePrinceton (NJ)
Overview: The “Princeton Language and Intelligence” Initiative at Princeton University invites applications for a Lead Research Software Engineer. This multidisciplinary initiative has three Research thrusts: (a) Better design, evaluation, safety...
thumb_up_altRecommended

Java Software Engineer

apartmentIntone NetworksplaceWhitehouse Station, 19 mi from Princeton (NJ)
KFORCE URGENT REQUIREMENT Looking for candidates regarding the following: POSITION Java Software Engineer LOCATION New Jersey, NJ -Whitehouse Station DURATION 12+ months INTERVIEW TYPE...
electric_boltImmediate start

Software Engineer

apartmentRobert HalfplaceLansdale, 33 mi from Princeton (NJ)
We are in the process of expanding our team in LANSDALE, Pennsylvania, United States, and have an opening for a Software Engineer. This role involves working in the heavy manufacturing industry, where you will be responsible for designing, coding...