Skip to content

Onboarding Checklist

Onboarding process for a new team member

Meta

Make on-boarding automatic

  • We want to make the onboarding process as automatic as possible

Be patient

  • Let's use all the communication tools we have (screen sharing, Google Meet, phone, Telegram, email) to keep the process smooth and personal
  • There are many (hidden) dependencies in the process, so something will inevitably go wrong
  • Let's all be patient with each other

Ask for confirmation

  • Use checklists any time to make sure things get done
  • Ask for confirmation of all the actions, e.g.,
  • "Does this and that work?"
  • "Did you receive the email?"
  • "Can you log in?"
  • Make the new team member follow the instructions so that they can get familiar with the systems

Make on-boarding similar to our work routine

  • Provide tools for interacting with the team
  • During the process the new teammate will ask questions and he / she should use the appropriate tools for each type of communication

    • Telegram: only for interactive communications
    • GitHub issues: for coding related things
    • Asana tasks: for business/high-level tasks
    • Email: everything else
  • We want to nudge a new hire to operate through the tools we use during our daily work

  • That is why we asking him to create a first issue about his / her experience with the process
  • He / she should put his / her notes in the GH issue while proceeding during the onboarding process

Improve on-boarding process

  • Review, improve, clarify process
  • We want to point the new team member to a document rather than explaining over and over the same things
  • Always keep this document updated, ask candidates to follow it carefully, and update it with a PR
  • We want to use each new team-member experience to improve our workflow
  • We want new team-members to improve the existing documentation using our standard GitHub process

  • Have the new team member:

  • Open the first GitHub bug on the first day
  • Open the first PR by the second day

People involved in the on-boarding

  • Each task is performed by one of the persons involved in the on-boarding
  • Team leader (e.g., GP, Paul, Grisha, Samarth)
  • Team member (i.e., the person on-boarded)
  • IT (e.g., Shayan)
  • HR (e.g., Rose)

Before the start date

  • [ ] Team leader: talk to the teams about the new team member joining

  • [ ] Team leader: Send some information to the new team member as a preview

  • E.g., some PDFs from amp/documentation/general

  • [ ] Team leader: establish contact by Telegram or email with the new hire with a few words about the next steps

  • [ ] Team leader: do a proper intro with an email to the team:

  • "Hi team, please join me in welcoming XYZ to the team"
  • Whom is going to report to
  • What is going to work on initially
  • LinkedIn link

The first day!

Team member info

  • [ ] Team member: send needed information to your team leader
  • Full name:
  • Aka:
  • Personal email:
  • Github user:
  • Telegram handle:
  • Laptop OS: Windows, Linux, or Mac
  • Physical location and timezone
  • User's SSH public key

  • [ ] Team leader: update the Team member info gdoc

NDA

Hubstaff

  • [ ] HR: Update Hubstaff
  • Add user here
  • We respect our own privacy by not using any of the screenshot or typing things BS
  • We use it only to track the time automatically and as HR

  • [ ] Team member:

  • Confirm access to Hubstaff
  • Read Tools - Hubstaff

IT setup

  • [ ] Team leader: File an issue with this checklist
  • The title is "Onboarding {{Name}}"
  • Copy paste the following checklist

  • [ ] IT: create account info bundle following New team member addition - admin side tutorial

  • TODO(Shayan): convert this into Markdown

  • [ ] IT: send the following information to team member

  • Linux user: name + first letter of last name
  • Send the account info bundle

  • [ ] IT: create company email @kaizen-tech.io

  • Exchange username and password

  • [ ] IT: Add team member to mailing lists

  • all@kaizen-tech.io mailing lists

  • [ ] Team member: Confirm receipt of emails to @all

  • [ ] Team member: Confirm weekly all-hands meeting (usually on Monday morning)

  • This happens automatically through all@kaizen-tech.io
  • https://calendar.google.com/calendar/u/0/r

  • [ ] Team member: Confirm access to the Google Drive documentation

  • This should be automatically granted as being in all@kaizen-tech.io
  • Crypto-tech
  • Process

  • [ ] Team member: Join relevant Telegram groups by the links below

  • KT - All
  • KT - Random happy channel
  • KT - Build notifications
  • Channel specifics

  • [ ] Team member: set up laptop to connect to the server following:

  • VPN and dev server access setup

  • [ ] Team member: configure your server environment following:

  • Development - Set-up

  • [ ] Team member: We have implemented a self-registration process for our Airflow on Kubernetes deployment. Please register and create your personal accounts as we will no longer be using the shared Airflow Admin user. Make sure to use the same username that you have on the dev servers.

  • Airflow - Registration
  • TODO(Shayan): Update this

  • [ ] IT: Add team member to all GitHub repos:

  • [ ] Kaizen-ai
  • [ ] dev_tools
  • [ ] cmamp
  • (On per-need basis) [ ] orange
  • (On per-need basis) [ ] UMD_data605

  • [ ] Team member: Confirm access to GitHub repos

  • [ ] IT: Add team member to ZenHub

  • After GH access is confirmed
  • Invite

  • [ ] Team member: Confirm access to ZenHub here

  • [ ] IT: Server set-up

  • We use the personal laptop as a thin client only to connect to the servers, where the work is typically carried out. We don't check out code on our laptop

  • [ ] IT: Create the Linux user on all the servers

  • Create a keypair and share it with the new team member

  • [ ] Team member: Check whether he / she can log in on one of the servers

  • TODO(Shayan): How?

  • [ ] IT: Create AWS UI credentials

  • Only if necessary, for developer just starting, this is usually not needed (CK login)

  • [ ] Team member: check access to AWS on the server

  • > aws s3 --profile ck ls s3://cryptokaizen-unit-test/
  • > aws s3 --profile ck ls s3://cryptokaizen-data/

  • [ ] Team member: Customize Gmail, Telegram, and GitHub accounts

  • Please use the same photo in all accounts with a recognizable Gravatar
  • We use the picture to select Issues and conversations
  • Please use a picture where you look somehow professional (e.g., not a picture of you on the beach taking Tequila shots): the best picture is just one of your face, so we can virtually get to know each other

  • [ ] Team member: Make sure you have access to the vacation/OOTO calendar.

  • The link should be accessible and you should see the calendar in the list of calendars at calendar.google.com (when accessing via your corporate email)

  • [ ] Team member: Add your usual working hours by going to calendar.google.com (using your corporate email), heading to the settings section by clicking the gear icon on top right

  • [ ] Team member: Confirm you can access the anonymous form to ask anything https://forms.gle/KMQgobqbyxhoTR9n6

  • [ ] Team member: File first Issue on GitHub

  • It should be called "Document review while onboarding $TEAM_MEMBER"
  • Track what is not clear in the onboarding process / documentation and what should / could be improved

Quick checklists to verify that everything works

  • Team member
  • [ ] VPN to dev server
  • [ ] ssh into the dev server
  • [ ] Check access to AWS on the server (refer to instructions above)
  • [ ] Clone the code from Git
  • [ ] Connect to server with VisualStudio Code or PyCharm
    • There is an extension for VSCode, which allows to develop remotely Remote - SSH
    • Follow this instruction on how to set it up in your Visual Studio Code
  • [ ] Run the unit tests and make sure they all pass
  • [ ] Run a docker container > i docker_bash
  • [ ] Run a jupyter notebook
    • Follow this instruction on how to access the Jupyter server running on the remote server through your local machine ```

      i docker_jupyter ```

The second day

  • [ ] Team member: carefully study all the documents in: docs/onboarding
  • Read it carefully one by one
  • Ask questions
  • Memorize / internalize all the information
  • Take notes
  • Mark the reading as done
  • Use your first Issue to document all the improvements to the documentation

  • [ ] Team member: Do PRs following the process to improve documentation

  • Do not be shy

  • [ ] Team member: exercise all the important parts of the systems

  • [ ] Create a GitHub issue
  • [ ] Get familiar with ZenHub doc
  • Check out the code on server
  • Run all regressions on server
  • Create a branch
  • Run the linter.py on server
  • Do a PR