Senior Research Software Engineer (Financial Engineering)

Requisition # 2023-16576
Date Posted 3 weeks ago(3/6/2023 2:57 PM)
Research Computing
Information Technology
Job Type


Do you have a background in computational research and love to write code? Do you want to enable and advance groundbreaking computational efforts in data and decision sciences? If so, Princeton University's Research Computing department is recruiting a Senior 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 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 dynamic research teams in the department of Operations Research and Financial Engineering (ORFE) supporting faculty-directed research focused on the development of accelerated numerical computations and open-source software packages for cutting-edge computational research. You will make fundamental software contributions to multiple faculty-directed research projects in areas like real-time embedded optimization, energy grid reliability quantification, optimization problems in the social sciences, machine learning for banking applications, and large-scale tensor computations. As a Senior RSE, you will also mentor and provide technical leadership to the Research Software Engineering team, as well as teach advanced computational techniques to raise the computational capability of the team. You’ll also have the opportunity to co-author scholarly publications. 


If you have a strong background in scientific programming or research software engineering and academic research, you have the right skill set to make an immediate impact on these high-profile sponsored research projects. You will be poised to grow and expand your programming skills and expertise This position will require you to work closely with colleagues in the Office of Information Technology (OIT) as well as with faculty, students and postdoctoral researchers, and technical staff in academic departments to enable and accelerate directed research 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. 


  • Have a strong command of the research domain with proficient understanding of the underlying science, math, statistics, data analysis, and algorithms of computational research questions at a level sufficient to converse on projects with Princeton’s world-class researchers to consistently contribute to the ongoing work. This may consist of keeping abreast of advances in the domain, independent research (reading publications, etc.) and/or studying existing code bases. 
  • Be able to both work independently and initiate open collaboration with faculty researchers. Regularly meet with, listen to, and ask questions to ensure that software solutions fit their research needs. Understand and address software engineering questions that arise in research planning. 
  • Apply appropriate domain specific algorithms, techniques and code to advance software engineering in the research field. 
  • Work independently guided by high level objectives of the faculty director, to quickly translate research priorities into flexible software solutions that consistently contribute to ongoing research project(s). 
  • Use researcher-provided requirements and desired end state to build software solutions. To achieve this, RSEs are expected to figure out the problem through independent and collaborative research, develop an appropriate solution, and provide full documentation for usage by the research team.   
  • Identify solutions for each project, establish a set of applicable best practices for individual or team use that is uniquely appropriate for that project (e.g., version control, continuous integration and continuous delivery, software design, programming model, etc.), and enable long term maintainability and sustainability by documenting the projects in a descriptive and appropriately detailed manner. Provide technical expertise and guidance for improving the performance and quality of new and existing code bases through hands-on work with ongoing research. 
  • Respond to evolving research needs, apply broad research software engineering experience to develop novel, creative, and robust software solutions to solve challenging research problems quickly and efficiently. Port, debug, tune and potentially parallelize existing research code to meet criteria set by the research project needs. 
  • Develop novel, creative, and robust software tools that allow researchers to interact in flexible ways with extremely large data sets quickly and efficiently. 
  • Under the direction of the faculty director, develop scope and project management plans, meet and set milestone delivery timeline, and proactively communicate with the research team. Communicate complex software engineering concepts with project teams consisting of domain experts with a varying degree of software engineering knowledge. 
  • Raise the computational capability of graduate students and postdoctoral researchers through training and workshops, consultation, knowledge transfer, expertise, and best practices.
  • Show technical leadership through mentoring, instructing, and educating less experienced Research Software Engineers in advanced computational techniques learned from developing novel research software engineering project solutions. 
  • In collaboration with RSE group leadership and other senior RSEs, contribute to the organization of professional development and team growth activities. 
  • Maintain technical skill set and expertise to include software development tools and techniques, software engineering best practices, programming languages, high-performance computing hardware, and computational research solutions. Focus on advancing depth of knowledge in key areas dictated by the research.


Essential Qualifications

  • 7+ years’ experience as a Research Software Engineer or equivalent experience (e.g., graduate school, industry experience, open-source software development, etc.). 
  • Strong programming skills, particularly in the languages used in scientific computing applications (e.g., Python, C/C++, R, Julia, Rust).  
  • Familiarity with machine learning (ML) and related frameworks like PyTorch, JAX, and/or TensorFlow. 
  • Familiarity with data science and mathematical optimization concepts and tools and experience operating on massive datasets. 
  • 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. 
  • 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. 
  • Enthusiasm for working with multiple faculty members, staff, and students in the preparation and delivery of technical materials related to instruction (courses, workshops, etc.).  
  • Education: A Bachelor's degree in computer science, finance, engineering, sciences, or related computational field required. A Master’s/Ph.D. in computer science, finance, applied science, or other related field with a strong computational focus or equivalent experience in a research setting preferred. 

Preferred Qualifications

  • Strong programming skills with the following languages: Rust, Julia, and C++. 
  • Familiarity with writing wrappers from high to low level languages (e.g., pybind11 from Python to C++) 
  • Familiarity with large-scale numerical linear algebra algorithms (e.g., sparse and iterative linear system solvers) and packages (e.g., Eigen) 
  • Deep knowledge of the domain areas underlying operations research and financial engineering, namely statistics, probability, and optimization. 
  • Domain-specific research experience. 
  • Experience tuning and optimizing research software and algorithms. 
  • Experience developing research software outside of core domain knowledge. 


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


Eligible for Overtime


Benefits Eligible


Probationary Period

180 days

Essential Services Personnel (see policy for detail)


Physical Capacity Exam Required


Valid Driver’s License Required


Experience Level

Mid-Senior Level



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. Princeton University requires all employees to be vaccinated against COVID-19 and submit proof of vaccination status. Employees who cannot receive the vaccine because of a disability/medical contraindication or sincerely-held religious belief may request an accommodation (e.g., an exemption) to this requirement.

If you have questions or comments regarding the iCIMS Privacy Policy or iCIMS FAQs, please contact

Go to our careers site.