Onboarding

Standards, values, and other information relevant to the NYPL Engineering Team.


Onboarding

Welcome to NYPL Digital!

This document is intended to help developers become familiar with NYPL digital properties and standards.

Welcome & First Day

We hope that you’ll have a good first day at NYPL Digital! Generally 4 things should happen your first day:

  1. You’ll meet your team and have a lunch or other meet-and-greet
  2. You’ll get your laptop and have some time to set it up
  3. You’ll be given an onboarding packet that lays out your first day, week, month and quarter
  4. You’ll start meeting with your team members and collaborators to start planning your work

After that your intro will vary depending on your team and role, but it should focus at least in these areas

1. Learning

There is a lot to learn in Digital, and there is no way to pick everything up in your first month, let alone your first day! So here are some tips for starting the process of learning the whats, wheres, hows and whys of our department.

  • Review the Contents of this repo.
  • Review READMEs (or Wikis) of the repositories your team maintains
    • Your manager and onboarding buddy should help give you context for them
    • A good approach is to spin up local dev environments for any repositories you’ll be contributing to.
  • Set up meetings with other engineers on your team to get a sense for the status of the team’s work and where you can help contribute!
  • Review the documents and initial tasks outlined in the specific onboarding documents provided to you on your first day (Which is probably how you ended up here!)
  • Ask questions. If your manager did not ask you to do this already: start a document with questions and things that were unclear!
    • This document should be an important part of your early 1:1s with your manager
    • We want to use these questions to improve our documentation and processes! Fresh eyes often see things that we miss

2. Account Setup

Password Management

We strongly encourage team members to use a password manager for their credentials. There will be many passwords you need to track and the dangers of password reuse are real. We recommend one of the following password management tools:

  • Keeper
    • This is NYPL’s approved password manager
    • To create a keeper account attempt to sign in with your @nypl.org email address, you should be prompted to request Admin approval.
  • MacPass
    • This is a local, open source, password management solution
    • It is not officially supported, but provides an easy place to track passwords

Multi-Factor Authentication

Using multi-factor authentication (MFA) is also strongly encouraged at NYPL. For some accounts (most importantly AWS) it is required. There are several options for MFA:

  • NYPL-supplied Yubi key. If you’d prefer a physical authentication key, please request one from your manager.
  • MFA Application such as Duo or Microsoft Authenticator. These should be installed on your phone to support authentication.

Commonly used accounts

A developer will generally need accounts for the following services. Most of these accounts will be configured for you during onboarding, please request access for any systems you do not have access to.

Less commonly used accounts

  • NYPL Platform Assorted APIs for interacting with NYPL resources
  • NPM Organization (NOTE: You do not need an npm account to publish to npm)
  • New Relic Telemetry, metrics and monitoring
  • Docker Hub Used for publically distributed images. Internal images are hosted on AWS ECR
  • Analytics
  • Repository Management
    • Stash (NYPL VPN needed) IT and devops keep AWS configurations, among other things, here.
    • Bitbucket Host for older git repositories
  • CI/CD
    • TravisCI Used for some CI/CD Pipelines, largely deprecated in favor of GitHub Actions
    • Bamboo Used for some CI/CD workflows, largely deprecated in favor of GitHub Actions
  • Loggly Largely deprecated in favor of NewRelic and AWS CloudWatch

3. Initial Meetings

Your manager should set up an initial set of meetings with both team members and other Digital members you will be working with. If, at the end of your first or second week, some of these meetings haven’t happened, you should reach out and schedule them! Or ask your manager to do so. You should at least have met with these people:

  • Your Manager
  • Your Project Manager
  • Your Product Manager
  • Various members of your engineering team
  • Key stakeholders and non-Digital NYPL staff (if applicable)

4. Initial Tasks

We strive to design an initial set of tickets/tasks for new team members that both allow them to begin exploring codebases as well as making impactful contributions early in their time in Digital. We are not a “deploy to production on Day 1” shop, but aim to have new engineers putting up PRs by the end of their first sprint.

Please discuss your initial set of tasks with your manager and new team. Our goals generally are:

  • Allow you to explore the codebases you’ll be contributing to, via tasks such as:
    • Extending unit test coverage
    • Refactoring a specific class/module to align with a larger codebase
    • Implementing a new linting, CI/CD or other quality-of-life tool
  • Help you understand our standards for development in NYPL Digital, through things like:
    • Reviewing open PRs
    • Implementing specific code quality changes on a small codebase
    • Refactoring an application to a new version of its current tech stack
  • Anything that you and your tech lead decide!