Software Engineer III

The New York Public Library•New York, NY
•$110,000 - $115,000•Hybrid

About The Position

The New York Public Library is seeking a Software Engineer III to join its Digital Asset Preservation and Access (DAPA) team. The role will contribute to making more of the Library’s collections available online through Digital Collections and other discovery platforms, staff management tools, and supporting systems. The engineer will contribute to modernizing systems that provide access to collections and expanding them in collaboration with partners in NYPL’s Research libraries. Initial goals include building OCR processes to improve search, stabilizing data pipelines, and developing methods for delivering high-resolution images to patrons. The role calls for an engineer who can improve engineering practices, develop and deploy solutions to longstanding engineering problems, and advocate for change. The engineer will collaborate with partners across the Library, contribute to department-wide initiatives, and help advance the DAPA team’s work. Over time, the engineer is expected to take ownership of significant components of NYPL’s digital asset management ecosystem, including their design, implementation, and maintenance; participate in technical design and architecture; and provide guidance to junior engineers. Within the first month, the engineer is expected to complete development tasks collaboratively, learn product requirements and their strategic context, review code, and develop and run unit tests. Within three months, the engineer should understand the DAM infrastructure and its challenges, contribute to projects and issues, own relevant technical decisions, and take ownership of existing systems. Within six months, the engineer should contribute consistently across NYPL Digital codebases, participate in design discussions, and maintain scripts that automate testing. At 12 months and beyond, the engineer is expected to own significant DAM components, participate in department initiatives, work effectively with limited support structures, guide junior engineers, and collaborate with engineering leadership on team and project direction. The position is based at the Stephen A. Schwarzman Building in a hybrid work environment, with three days in the New York City office and two remote days, subject to change. The schedule is Monday through Friday, 9 a.m. to 5 p.m.

Requirements

  • Bachelor’s degree or at least 4 years of experience developing software applications at scale.
  • Equivalent of 4 years of hands-on development experience on a relevant technology stack.
  • 3–5 years of backend development experience.
  • At least 3 years of back-end application development in Python or Ruby.
  • Proficiency with one or more Python web frameworks, such as Flask or Django.
  • Strong experience with SQL and relational databases such as MySQL or PostgreSQL.
  • Proficiency with version control systems and Git.
  • Experience with CI/CD tools, especially GitHub Actions.
  • Strong working experience with other languages; PHP or Java preferred.
  • Familiarity with agile methodologies such as Scrum and Kanban.
  • Familiarity with a major cloud computing platform, especially AWS.
  • Ability to collaborate, take ownership of technical decisions and systems, and work effectively without strong support structures.
  • Expected to embody NYPL Core Values: helpfulness, resourcefulness, curiosity, and being welcoming and inclusive.

Responsibilities

  • Understand project needs and determine how to implement specific technical solutions.
  • Take ownership of specific systems and ensure their maintenance and support.
  • Partner with other engineers to design new software systems and improve existing ones.
  • Collaborate with Senior Engineers to realize new projects.
  • Build software following industry best practices and NYPL values.
  • Contribute to test suites to ensure code is accurate, reliable, and robust.
  • Create technical documentation and specifications for delivered code.
  • Identify and remediate technical debt.
  • Identify and resolve ambiguities and issues in requirements for team and organization-wide projects.
  • Provide actionable feedback during code reviews.
  • Contribute to modernizing digital asset management systems, including improving OCR and search, data pipeline stability, and delivery of high-resolution images.
  • Participate in design and architecture discussions and department-wide initiatives.
  • Own significant components of the DAM ecosystem, including design, implementation, and maintenance.
  • Provide guidance to junior software engineers on applications and general best practices.
  • Collaborate with engineering leadership on team and project direction.
  • Assume additional responsibilities as required by the organization.
© 2026 Teal Labs, Inc
Privacy PolicyTerms of Service