Welcome to NYPL Digital!
This document is intended to help developers become familiar with NYPL digital properties and standards.
We hope that you'll have a good first day at NYPL Digital! Generally 4 things should happen your first day:
- You'll meet your team and have a lunch or other meet-and-greet
- You'll get your laptop and have some time to set it up
- You'll be given an onboarding packet that lays out your first day, week, month and quarter
- 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
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
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
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.
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.
- Slack Preferred method of communication
- GitHub (Can use a personal account or make a new NYPL specific GitHub account)
- NYPL Main GitHub Organization
- See GitHub Organization Management for onboarding steps.
- We ask that all members have a username that contains their name somewhere. If you do not want to update your personal Github account, we encourage you to make an NYPL-specific account!
- Team-specific organizations
- Old and/or unused organizations
- JIRA Ticket Management & Tracking
- Amazon Web Services (AWS) Accounts (MFA login required)
- nypl Main production account
- nypl-dev Main QA/dev account
- nypl-digital-dev Main account for LSP and DRB
- nypl-sandbox Dev/testing environment
- nypl-labs Hosting old projects
- Other accounts are in use by different teams. Speak with team leadership for details
- 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
- Adobe Analytics NYPL's main analytics solution
- Google Analytics Largely deprecated in favor of AA, with specific exceptions
- Repository Management
- CI/CD
- Loggly Largely deprecated in favor of NewRelic and AWS CloudWatch
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)
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!