Overview
:
Join Princetonâs AI Lab and Research Software Engineering team as a Lead Research Software Engineer (RSE), driving innovative solutions for cutting-edge research across disciplines.This full-time position combines technical leadership with collaboration, making you a key contributor to Princetonâs mission of advancing artificial intelligence and computational science.Â
Â
As Lead RSE, you will play a key role in both communities: collaborating with faculty, postdoctoral researchers, and students from diverse disciplines while leading a small team of Research Software Engineers. Your team will design and implement robust, maintainable software solutions for complex research problems and promote best practices in software engineering and reproducible science.
Â
This position offers the opportunity to:
- Contribute to impactful open-source projects and advance AI research using technologies such as Python, C++, TensorFlow, PyTorch, JAX, and Scikit-learn.
- Mentor and develop a team of RSEs in an inclusive, collaborative environment.
- Expand your technical expertise while supporting research projects across multiple academic fields, applying advanced techniques such as large-scale data processing and GPU-accelerated computing.
- Access to state-of-the-art research facilities and a new GPU cluster.
- Collaborative and inclusive work environment that fosters creativity and innovation.
Â
You will work closely with colleagues in Research Computing, the AI Lab, and academic departments to accelerate research through scalable, maintainable software solutions.
Â
This is a full-time position located in Princeton, NJ and will follow a hybrid work schedule. This is a 3-year term position, with a possibility of reappointment.Â
Responsibilities
:
Application of Domain Expertise:
- Maintain strong command of AI and machine learning concepts, including underlying science, math, and algorithms; stay current through reading publications, reviewing existing code, and independent study.
Lead the team in collaborating with researchers to ensure solutions meet research needs; address software engineering questions during planning.
Strategically identify and prioritize impactful software solutions and guide the team in developing creative, robust approaches to evolving research challenges.
Apply AI/ML algorithms to domain-specific software engineering projects.
Research Software Engineering:
- Lead the team in translating research priorities into flexible, maintainable software solutions for ongoing projects.
- Raise the computational capability of graduate students and postdoctoral researchers through team-led training, workshops, and consultations.
- Establish and enforce best practices for version control, CI/CD, software design, and programming models across projects.
- Ensure long-term sustainability and accessibility through thorough documentation and support for software libraries.
- Drive improvements in performance and quality of new and existing code bases through hands-on contributions and team leadership.
- Communicate software engineering concepts clearly to project teams with varying expertise.
Technical Leadership:
- Provide strong technical leadership, within the RSE team and the broader research group.
- Organize and lead code reviews, training sessions, and professional development activities.
- Champion adoption of best practices and advanced computational techniques across projects.
- Coordinate efforts to optimize computational infrastructure and research pipelines in collaboration with AI Lab and Research Computing teams, ensuring secure and efficient integration of emerging AI technologies.
Management:
- Manage a small team of RSEs, set priorities, and oversee software development work to ensure continuous alignment with evolving research goals.
- Conduct performance reviews and support career development for direct reports.
- Foster an inclusive, collaborative environment; assist in building a diverse, effective team aligned with research objectives.
Professional Development:
- Model continuous learning, deepening expertise in the science, mathematics, statistics, and algorithms that underpin computational research challenges.
- Participate in a community of research software engineers and engage in continued professional development opportunities at Princeton Research Computing.
Qualifications
:
Essential Qualifications:
- A minimum of 10 years as a Research Software Engineer or equivalent experience (e.g. graduate school, industry experience, open-source software development, etc.)
- Strong command of programming languages used in AI and computational research (e.g. Python, C++, R, MATLAB, Julia).
- Extensive experience in machine learning algorithms and techniques including with AI frameworks like TensorFlow, PyTorch, JAX, or Scikit-learn.
- Experience working with large datasets and familiarity with GPU computing environments.
- Demonstrated success:
- Consistently using conventional and readable coding style.
- Performing test driven development.
- Creating comprehensive and well-written documentation.
- Participating in regular code reviews as both a reviewer and reviewee.
- Developing and maintaining reproducible build systems.
- Using version control systems.
- Demonstrated successes contributing to a collaborative research team.
- Ability to work independently.
- Strong written and oral technical communication skills with the ability to present complex research findings to technical and non-technical audiences.
- Experience tuning and optimizing research software and algorithms.
- Parallel programming expertise.
- Experience developing research software outside of core domain knowledge.
- A Bachelor's degree in computer science, applied science, or other related field with a strong computational focus required.
Â
Preferred Qualifications:
- Expertise in conducting research in Artificial Intelligence and Machine Learning. Contributions to open-source libraries and publications in relevant journals or conferences are highly valued.
- Experience participating in multiple software development projects simultaneously, ensuring timely delivery and adherence to quality standards. An eagerness to take on more responsibility and develop project management skills.
- 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.
- 1+ years experience managing a small team.
- Experience working in an academic research environment.
Â
Princeton University is an Equal Opportunity 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.
Â
The University considers factors such as (but not limited to) scope and responsibilities of the position, candidate's qualifications, work experience, education/training, key skills, market, collective bargaining agreements as applicable, and organizational considerations when extending an offer. The posted salary range represents the University's good faith and reasonable estimate for a full-time position; salaries for part-time positions are pro-rated accordingly.
Â
If the salary range on the posted position shows an hourly rate, this is the baseline; the actual hourly rate may be higher, depending on the position and factors listed above.
Â
The University also offers a comprehensive benefit program to eligible employees. Please see this link for more information.
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:
Director
:
#Ll-DP1
Salary Range:
$160,000 to $177,000