Senior Software Engineer I - Python TEMPORARY FOR FOUR YEARS (NYC-Based, not remote)
Department: Digital
Employment Type: Temporary
Location: Stephen A. Schwarzman Building
Reporting To: Michael Benowitz
Compensation: $130,000 / year
Description
Overview
This role is temporary for four years; this is not a remote role - this role requires onsite work in NYC
The New York Public Library is looking for a new senior software engineer to expand our eReading team. This role will contribute to our Digital Research Books (DRB) project, which works to expand access to public domain and open source materials. The focus of the role will be on increasing the reach of DRB by creating integrations to other NYPL catalogs, allowing patrons to discover and access more materials with a single search. This work will involve building new tools, refactoring existing applications and delving deeply into how we can best make use of our extensive collections. Beyond the DRB team this role will also have the opportunity to contribute to other catalog projects at NYPL.
We are looking for someone we can count on to:
Own :
Important APIs and data pipelines that support NYPL catalogs, including our Research Catalog
Technical approaches to integrating metadata from different sources and in different formats
A broad base of technical knowledge to be able to identify strong solutions for difficult problems
Teach :
Support and mentor other engineers, helping them understand both this engineers area of expertise and engineering best practices in general
Present on their work to technical and non-technical stakeholders
Build support for DRB’s work amongst various interested parties
Learn:
Gain an understanding of library science practices, especially around metadata standards and formats
Connect the dots between different applications to understand how metadata and records can be shared between them
Help the department keep up with new developments in software development
Improve :
Grow as a team member, collaborating with other NYPL engineers to solve problems
Seek to retire legacy applications and replace them with modern, streamlined solutions
Some expectations for this role are that within:
1 month , this person will:
Develop an understanding of our infrastructure, environments and deployment practices
Implement unit and integration tests for all the code that they write
Complete software development tasks independently and collaboratively in line/accordance with our engineering workflows
3 months , this person will:
Gain an understanding of the DRB code base and familiarity with other eReading code bases
Regularly perform code review of other engineers’ work
Actively participate in design and architecture discussions
6 months and beyond , this person will:
Actively contribute to eReading code bases and understand code bases around NYPL Digital
Provide technical advice and weigh in on decisions that impact our reading platforms and help realize implementation of new features and bugfixes
Regularly influence design and architecture discussions
Collaborate with other senior engineers and technical team leaders to deliver new features across NYPL Digital
Take responsibility for new development work, coordinating the work of other engineers
Help lead development teams by taking accountability, mentoring developers, fostering collaboration and generally aiding the adoption of best practices
Understand decisions and constraints in the wide scope pertaining to the whole of the solution at hand. This includes the ability to abstract problems into general solutions
Responsibilities
Design and implement scalable, optimized, and maintainable APIs and other applications
Collaborate with multiple teams working on reading platforms to build innovative and forward-looking applications for our patrons
Build software following industry best practices and NYPL values ( https://github.com/NYPL/engineering-general )
Develop functional/unit tests to ensure the creation of accurate, reliable, and robust code
Create technical documentation and specifications
Identify and tackle tech debt before it becomes large enough to require standalone work to address it; Remediate existing tech debt within their projects
Identify and help resolve ambiguities and/or problems with requirements and roadmap items on adjacent teams and projects, not just those being worked currently
Help other engineers and provide actionable feedback during code reviews
Communicate effectively across disciplines, including through detailed and effective technical writing
Assume additional responsibilities as required by the organization
Required Education, Experience & Skills
Required Education & Certifications
Bachelor’s Degree - OR - Equivalent 4 years hands-on development experience on relevant tech stackRequired Experience
Equivalent 4 years hands-on development experience on relevant tech stack
6-10 years in web application development
Required Skills
4+ years in Python application development
Production experience with one or more Python web frameworks (Flask, Django, etc.)
Experience with Python packaging and dependency management tools (setuptools, pip, poetry, pipenv, etc.)
Proficiency in SQL and relational databases such as mySQL, Postgres, etc.
Proficiency in discovery layers such as ElasticSearch and/or Solr
Proficiency with version control systems and git
Experience with CI/CD tools like Travis, Jenkins, GitHub Actions, etc.
Familiarity with other languages (PHP, Ruby or Java preferred)
Familiarity with agile methodologies such as Scrum & Kanban
Familiarity with AWS
Managerial/Supervisory Responsibilities
N/AMore...
Core Values
All team members are expected and encouraged to embody the NYPL Core Values:
Be Helpful to patrons and colleagues
Be Resourceful in solving problems
Be Curious in all aspects of your work
Be Welcoming and Inclusive
Work Environment
Office Environment
Hybrid Work Arrangement - Onsite work in NYC is required
Physical Duties
Limited physical effort is required
May require travel within NYC
Pre-Placement Physical Required?
No
Union/Non Union
Non-Union
FLSA Status
Exempt
Schedule
Monday - Friday; 9-5 - Hybrid Work Environment
This job description represents the types and levels of responsibilities that will be required of the position and shall not be construed as a declaration of all of the specific duties and responsibilities for the role. Job duties may change if Library priorities change. Employees may be directed to perform job-related tasks other than those specifically presented in this description as needed.
The New York Public Library Salary Statement
At the Library, we believe that pay transparency and pay equity are important to ensuring we source the best candidates and keep the best employees. When making a determination as to the appropriate salary for a candidate, we consider a variety of factors such, including, but not limited to, the position requirements, the skills, prior experience, and educational background required or preferred for the job, the scope and impact of the role within the organization, internal peer equity, and the candidate's specific training, experience, education level, and skills. No single factor is conclusive; the Library reserves the right to consider any and all relevant factors and make a decision consistent with its policies.
Union Salaries are determined by collective bargaining agreement(s).