Research Software Engineer II (Plasma Physics)

Requisition # 2023-17226
Date Posted 6 months ago(6/16/2023 3:35 PM)
Department
Research Computing
Category
Information Technology
Job Type
Full-Time

Overview

What if you could have an impact on the search for an abundant, safe, affordable, and environmentally sound means of generating electricity? This is the goal of fusion energy research at the Princeton Plasma Physics Laboratory (PPPL), a United States Department of Energy national laboratory for plasma physics and nuclear fusion science. If that idea appeals to you, Princeton University's Research Computing department is recruiting a Research Software Engineer to join the fast-growing Research Software Engineering (RSE) Group. 

 

In the RSE Group, we collectively provide 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 committed to building collaborative and inclusive environments in which the best software engineering practices are valued, 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 Gkeyll group in the PPPL Computational Sciences Department. Gkeyll is a plasma simulation code developed at PPPL that is used to model the behavior of plasmas in fusion devices like tokamaks. It is designed to run on high-performance computing (HPC) systems and is optimized for parallel computing, which allows it to simulate very large plasma systems with high accuracy. Gkeyll is open-source software that is actively developed by researchers at PPPL and other institutions, and new features and capabilities are constantly being added. Overall, Gkeyll is a powerful tool that helps researchers understand the behavior of plasmas in fusion devices, which is important for achieving nuclear fusion and developing new fusion energy technologies. 

 

If you have a strong background in scientific programming, academic research, and an interest in nuclear fusion, you have the right skill set to immediately impact multiple high-profile research projects. This role functions within a dynamic, supportive team environment that permits diverse backgrounds to thrive, including those wanting to make a career change and those with non-traditional career tracks, educational paths, or life experiences. If this environment sounds like a strong match or even an exciting challenge, we encourage you to apply and use your cover letter to explain why you would be a good fit for the role. 

Responsibilities

  • Conduct independent studies, including reading publications and studying existing code bases, to gain a basic understanding of plasma physics. Use this knowledge to effectively communicate and collaborate with scientific researchers on software development projects. 
  • Collaborate with scientific researchers to understand their needs and develop software solutions to support their work. 
  • Foster open collaboration with researchers by regularly meeting with them, actively listening to their needs, and asking questions to better understand their research goals and challenges. Maintain effective communication with researchers to ensure that software development aligns with the research objectives. 
  • Working independently, or as a self-directed team member, design, develop, and maintain software tools and applications for scientific research projects. 
  • Write efficient, robust, and maintainable code that is well-documented and tested. 
  • Troubleshoot and debug code issues. 
  • Optimize code performance for large-scale data processing and analysis. 
  • Participate in supporting the application's user community. 
  • Write technical reports and documentation to communicate research findings and software development processes. 
  • Manage software projects by developing project scopes and planning delivery timelines. Communicate project plans and progress updates with the scientific research team to ensure that software development aligns with research objectives. 
  • Communicate software engineering concepts to project teams with varying levels of software engineering knowledge. 
  • 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.) 
  • Strong programming skills, particularly in C/C++ and Python, the languages used in Gkeyll and postgkeyll. 
  • Experience with test driven development workflows with Git. 
  • Experience with code performance tuning using performance analysis tools (e.g. profilers). 
  • Experience with build systems (e.g. autotoolscmake). 
  • Demonstrated success in: 
    • Consistently using conventional and readable coding style. 
    • Creating comprehensive and well-written documentation. 
    • Developing and maintaining reproducible build systems. 
  • Ability to learn new concepts and technologies beyond the area of core knowledge. 
  • Ability to communicate effectively with a diverse user base with varied technical proficiencies. 
  • Experience working in an academic research environment. 
  • Experience with Linux, the command line, and HPC clusters environment (e.g., workflow manager, parallel file system). 
  • Demonstrated successes working in a collaborative software development environment ("team science", often geographically distributed) and independently. 
  • Math and science background sufficient to be able to understand the algorithms used in Gkeyll and communicate effectively with researchers. 
  • Education: A Bachelor's degree in computer science, engineering, sciences, or a related computational field is required. 

Preferred Qualifications

  • Experience with parallel programming architectures, both distributed and threaded/shared memory. 
  • Experience with CUDA programming. 
  • Background in or understanding of physics. 
  • A Master's/Ph.D. in computer science, applied science, or another related field with a strong computational focus or equivalent experience in a research setting is preferred. 

 

 

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

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

#LI-JJ1

Options

Sorry the Share function is not working properly at this moment. Please refresh the page and try again later.
Share on your newsfeed

Connect With Us!

Join our Talent Network to receive updates about working at Princeton.

Princeton University job offers are contingent upon the candidate’s successful completion of a background check, reference checks, and pre-employment screening, as applicable.


If you have questions or comments regarding the iCIMS Privacy Policy or iCIMS FAQs, please contact accounts@icims.com.


Go to our careers site.