Senior Software Engineer I, Institutional Services
About the role
-- This is not a remote role; this role requires work onsite in NYC three days a week--
Overview
NYPL is hiring a Senior Software Engineer I in our Institutional Services group to work on a full-stack engineering team building and maintaining our digital platforms, and pushing forward our unified patron experience vision across multiple applications and databases.
The role will be responsible for writing code and delivering products via several codebases (Python, React, Typescript) focused on providing access to digital library resources for NYPL patrons, researchers, educators, and students around the country. This involves maintaining legacy codebases and developing new applications to help patrons access NYPL’s collections.
This role will also contribute to the technical leadership of the team by helping set and upholding standards for best practices in application development, database management, team collaboration, and other technical areas, with guidance by the Technical Team Lead.
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
Begin to understand the product requirements for our Library Card Application and MyLibraryNYC systems and how they connect to larger strategic objectives
3 months, this person will:
Gain an understanding of the team’s codebases and familiarity with other NYPL codebases
Regularly perform code review of other engineers’ work
Support and mentor other engineers on their team in technical skills as well as the specifics of NYPL’s digital library card application
Iteratively update our digital library card application and MyLibraryNYC systems, always seeking to identify areas for improved service for patrons and staff
Lead development initiatives on new projects and open issues, ensuring that implementation is completed in a maintainable, observable and testable manner
Actively participate in design and architecture discussions, and contribute to decisions that will impact the team and organization
Participate in conversations about team’s project progress and help maintain team velocity through mentorship, pair programming, and code review
Present on their work to technical and non-technical stakeholders
Build support for the team’s work amongst various interested parties
6 months and beyond, this person will:
Provide technical advice and weigh in on decisions that impact our platforms and help realize implementation of new features and bugfixes
Regularly influence design and architecture discussions
Collaborate with other Software Engineers 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
Influence and empower the team to build useful, accessible applications in a sustainable and maintainable way
Understand code bases around NYPL Digital
Responsibilities:
Understand NYPL technical needs to define system specifications
Design and implement scalable, optimized, and maintainable software solutions
Collaborate with multiple teams working on 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)
Work with product/project managers on estimating the feasibility and complexity of new products/features
Participate in team agile ceremonies and contribute towards the continuous improvement of our agile processes
Ask questions to ascertain the feasibility of the technical approach
Write Technical Architecture Documents defining technical approach for foundational functionality across projects
Identify and resolve ambiguities/issues with requirements for team and org-wide projects
Research and recommend solutions based on cost benefit analysis and embracing automation and efficiency
Connect with different teams when shared issues or solutions are identified
Contribute to test suites to ensure the creation of accurate, reliable, and robust code
Create technical documentation and specifications for all delivered code
Proactively identify and remediate tech debt
Help other engineers and provide actionable feedback during code reviews
Assume additional responsibilities as required by the organization
Required Education and Certifications
Bachelor’s Degree -OR-
Required Experience
Equivalent 5 years of hands-on development experience with relevant tech stack
Required Skills
Strong leadership, mentoring, coaching and decision-making skills
Excellent written and verbal communication skills
Track record of leading major technical initiatives to solve complex technical problems
Experience establishing documentation standards and practices
Expertise in Python application development and system design, including production experience with Python web frameworks
Strong understanding of system architecture and design patterns as well as cloud infrastructure
Strong understanding of DevOps practices and their impact on implementation approaches
Proficiency in SQL and relational databases such as MySQL, PostgreSQL, etc.
Experience with Node.js and React ecosystem
Experience with Next.js.
Experience with multiple component libraries. Prior experience building a component library is a plus
Experience with front-end integration testing
Knowledge of accessibility principles. Prior experience working on an accessible front-end is a plus
Proficiency with version control systems and git
Experience with CI/CD tools like GitHub Actions, TravisCI, etc.
Familiarity with agile methodologies such as Scrum & Kanban
Familiarity with Single Sign On is a plus
Understanding or experience managing a single sign on infrastructure like Shibboleth is a plus
Production experience working with data stores, including ElasticSearch and/or Solr, at scale a plus
NYPL 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 Setting
Hybrid work environment; 3 days in office in NYC
Physical Duties
Limited physical effort is required
May require travel within NYC
Pre-placement Physical Required?
No
Schedule
Monday - Friday, 9am - 5pm
Hybrid work environment; 3 days onsite in NYC is required
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).
Responsibilities
- Understand NYPL technical needs to define system specifications
- Design and implement scalable, optimized, and maintainable software solutions
- Collaborate with multiple teams working on platforms to build innovative applications
- Build software following industry best practices and NYPL values
- Work with product/project managers on estimating feasibility of new products/features
- Participate in team agile ceremonies and contribute towards continuous improvement
- Write Technical Architecture Documents defining technical approach
- Identify and resolve ambiguities/issues with requirements
Qualifications
- Bachelor’s Degree or equivalent experience
- 5 years of hands-on development experience with relevant tech stack
- Strong leadership, mentoring, coaching and decision-making skills
- Excellent written and verbal communication skills
- Expertise in Python application development and system design
- Strong understanding of system architecture and design patterns
- Proficiency in SQL and relational databases
- Experience with Node.js and React ecosystem
Skills mentioned
About The New York Public Library
The New York Public Library is a free provider of education and information for the people of New York and beyond. With 92 locations—including research and branch libraries—throughout the Bronx, Manhattan, and Staten Island, the Library offers free materials, computer access, classes, exhibitions, programming and more to everyone from toddlers to scholars, and has seen record numbers of attendance and circulation in recent years. The New York Public Library serves more than 18 million patrons who come through its doors annually and millions more around the globe who use its resources at www.nypl.org. To offer this wide array of free programming, The New York Public Library relies on both public and private funding. Learn more about how to support the Library at nypl.org/support. Learn more about career opportunities at nypl.pinpointhq.com.