Research Software Engineer
Princeton University
As a world-renowned research university, Princeton seeks to achieve the highest levels of distinction in the discovery and transmission of knowledge and understanding. At the same time, Princeton is distinctive among research universities in its commitment to undergraduate teaching.
The Research Software Engineer will be an integral team member, reporting to the DDSS Executive Director and working closely with the Senior Research Specialist. They will provide technical support for a variety of computational social science research projects for faculty, student/postdoctoral researchers, and technical staff to enable and accelerate their research computing efforts.
Responsibilities:
- Efficiently translate research objectives into software solutions that contribute to ongoing research project(s)
- Develop an understanding of complex computational research questions at a level sufficient to converse with Princeton’s world-class researchers.
- Enable long-term maintainability of solutions by documenting projects in a descriptive and detailed manner
- Apply modern software development best practices (e.g., version control, continuous integration and continuous delivery)
- Provide technical expertise and guidance for improving the performance and quality of new and existing code bases
- Regularly meet with, listen to, and ask questions of researchers to ensure that engineered solutions fit research needs
- Parallelize, debug, port, and tune existing research code to meet criteria determined research objectives
- Develop software tools that allow researchers to analyze large, complex data sets
Qualifications:
- 5+ years of strong Python or R programming skills in a work environment or academic/research setting
- Knowledge of a high-performance language (e.g., C++, C, Julia)
- Experience working with large, complex data sets
- Basic working knowledge of version control (i.e., Git)
- Ability to create professional software with clear documentation
- Ability to learn new programming languages and frameworks
- Ability to translate research needs into technical requirements
- Ability to communicate clearly with technical and non-technical colleagues
- Ability to work independently
- A graduate degree in computational social science, computer science, mathematics, engineering or related field.
Preferred Qualifications
- Experience with distributed computing frameworks (e.g., Spark, Dask)
- Experience with high-performance computing (HPC) or public clusters (e.g., AWS)
- Experience developing open-source research software
- Experience with machine learning frameworks (e.g., TensorFlow, PyTorch)
- Proficiency in database language and tools (e.g., Postgres, MongoDB)
- Experience writing shell scripts for process automation
- Background in quantitative social science
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. EEO IS THE LAW
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
More jobs from Princeton University:
- Temporary Food Service Worker8 months ago