Research Software Engineer II (Julia)
Overview
Do you have a background in computational research and love to write code? Do you want to help enable and advance groundbreaking computational research in macro-scale energy systems engineering? If so, Princeton University's Research Computing department is recruiting a Research Software Engineer II 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 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 member of both the RSE Group and the Zero-carbon Energy Systems Research and Optimization Laboratory (ZERO Lab, led by Prof. Jesse D. Jenkins) focused on cutting-edge computational research in sustainable energy systems. You will contribute to the research team by developing efficient and scalable research code and by providing computational expertise in software development, algorithm selection, and optimization. You will manage and develop multiple open-source research codes, mentor and train students and postdocs on the research team on modern research software engineering practices, and help maintain and support vibrant communities of users and contributors to the group’s open-source software projects. Research Software Engineers II work closely with a team of researchers and Research Software Engineers to leverage their communication and problem-solving skills to build complete software solutions crucial to the advancement of research.
If you have a strong background in scientific programming, high performance computing, or academic research, you have the right skill set to make an immediate impact on multiple high-profile research projects. You will be poised to grow and expand your programming and data analytics expertise into a dynamic new set of research problems. This position will require you to work closely with colleagues in the Office of Information Technology (OIT) as well as with faculty, student/postdoctoral researchers, and technical staff to enable and accelerate their research computing efforts.
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
Qualifications
Essential Qualifications
- 4-8 years’ experience as a Research Software Engineer or equivalent experience (e.g., graduate school, industry experience, open-source software development, etc.).
- Exhibits programming skills, particularly in the languages used in our computational research applications (most importantly the Julia programming language, secondarily Python).
- Experience creating and using Jupyter Notebooks.
- Experience managing open-source software development.
- Demonstrated success:
- Consistently using conventional and readable coding style.
- Creating comprehensive and well-written documentation.
- Using version control systems.
- Demonstrated successes contributing to a collaborative research team.
- Ability to work independently.
- Ability to learn new programming languages and technologies beyond area of core knowledge.
- Ability to communicate effectively with a diverse user base having varied levels of technical proficiencies.
- Experience working in an academic research environment.
- Ability to mentor and train students and postdocs on subjects related to research software engineering.
- Education: A Bachelor's degree in computer science, engineering, sciences, or related computational field required. A Masters/Ph.D. in computer science, applied science, or other related field with a strong computational focus or equivalent experience in a research setting preferred.
Preferred Qualifications
- Experience building graphical user interfaces for interactive software applications.
- Experience with cloud computing.
- Knowledge of linear algebra and experience with optimization-based modeling and related tools (e.g., Gurobi, CPLEX)
- Experience with code parallelization.
- Experience tuning and optimizing research software and algorithms.
- Experience developing research software outside of core domain knowledge.
- Background in a related domain is helpful, but not required.
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
PI217226293