New Team Member Onboarding
Day 1: Welcome & Account Setup
HR Completes (Before Start Date)
- Keycloak account created
- Added to
employeesgroup in Keycloak - Welcome email sent with:
- Keycloak login URL
- Temporary password
- MFA setup instructions
New Team Member (First Hour)
-
Login to Keycloak:
https://auth.company.com- Change temporary password
- Set up MFA (required - use authenticator app)
- Save recovery codes securely
-
Access granted automatically (within 15 min):
- ✅ Rocket.Chat
- ✅ Docusaurus (this documentation)
- ✅ GitHub organization (read access)
- ✅ Netbird VPN (dev network)
-
Download & install tools:
- Netbird VPN client: Download
- Git:
git --versionto check if installed - Code editor: VS Code, JetBrains, or your preference
- Docker:
docker --version
-
Configure Git:
git config --global user.name "Your Name"
git config --global user.email "your.email@company.com"
# Set up SSH key for GitHub
ssh-keygen -t ed25519 -C "your.email@company.com"
cat ~/.ssh/id_ed25519.pub # Add to GitHub Settings → SSH Keys -
Join Rocket.Chat:
- Login at
https://chat.company.com - Join channels:
#general,#engineering,#random - Introduce yourself in #general!
- Login at
Manager Completes (Day 1)
-
Add to team group in Keycloak:
- Example: Add to
engineering-backendgroup - This auto-grants GitHub team access
- Example: Add to
-
Welcome meeting:
- Team introductions
- Overview of current projects
- Assign onboarding buddy
-
Share team-specific resources:
- Team channel in Rocket.Chat
- Relevant documentation
- Current sprint board / project management
Week 1: Development Environment
Development Setup
-
Clone key repositories:
# Main application repos
git clone git@github.com:company-org/api-server.git
git clone git@github.com:company-org/web-app.git
# Infrastructure repo
git clone git@github.com:company-org/infrastructure.git -
Install dependencies (varies by project):
# Example for Node.js project
cd api-server
npm install
# Copy environment template
cp .env.example .env
# Ask team for dev database credentials -
Run locally:
# Start development server
npm run dev
# Verify it works
curl http://localhost:3000/health -
Connect to Netbird VPN:
- Login with your Keycloak credentials
- You now have access to dev/staging networks
-
Access development database:
- Connection details in
infrastructure/inventory/development/group_vars/ - Or ask in team channel
- Connection details in
First Contribution
-
Pick a starter task:
- Manager/buddy assigns "good first issue"
- Small, well-defined task
-
Create feature branch:
git checkout -b feature/your-first-task -
Make changes, commit:
git add .
git commit -m "Brief description of change"
git push origin feature/your-first-task -
Create pull request:
- Go to GitHub
- Create PR from your branch to
main - Add description of what you changed
- Request review from team member
-
Address review feedback
-
Merge your first PR! 🎉
Week 2: Tools & Processes
Learn the Stack
-
Read core documentation:
- Company Handbook
- Architecture Overview
- Engineering Guides
- Your team's project docs in
03-projects/
-
Understand the workflow:
- Feature branch → PR → Review → CI passes → Merge
- Staging auto-deploys
- Production deploys are manual
-
Review security policies:
- Security Principles
- Secrets Management
- Never commit secrets!
Set Up Local Tools
-
Pre-commit hooks (prevents committing secrets):
pip install pre-commit
cd your-repo
pre-commit install -
Ansible (if you'll touch infrastructure):
pip install ansible
# Get vault password from DevOps lead
echo "vault_password_here" > ~/.ansible_vault_password
chmod 600 ~/.ansible_vault_password
# Test it
ansible-playbook playbooks/site.yml \
-i inventory/development \
--vault-password-file ~/.ansible_vault_password \
--check -
Docker setup:
# Add yourself to docker group (Linux)
sudo usermod -aG docker $USER
# Log out and back in
# Test
docker run hello-world
Access Requests (As Needed)
-
Production read access (if on-call):
# In Rocket.Chat
/access request resource=production-read justification="Will be on-call next week" -
SSH to staging (automatic for engineering team)
-
Any team-specific tools
Month 1: Become Productive
Project Work
-
Completed 3-5 tasks independently
-
Participated in code reviews:
- Reviewed others' PRs
- Learned codebase by reading code
-
Deployed to staging via PR
-
Understand the architecture:
- How services communicate
- Where data lives
- Key dependencies
Team Integration
-
Attended team meetings:
- Sprint planning
- Standups
- Retrospectives
-
Pair programmed with team members
-
Asked questions (encouraged!)
-
Contributed to documentation:
- Fixed typos or outdated info
- Added clarifications
- Shared knowledge
On-Call Preparation (If Applicable)
-
Shadowed on-call engineer for a week
-
Reviewed incident runbooks:
- Incident Response
- Service-specific runbooks
-
Practiced emergency procedures:
- Rollback deployment in staging
- Restart service via Ansible
- Check monitoring dashboards
-
Added to on-call rotation (after 6-8 weeks typically)
Ongoing: Continuous Learning
Regular Activities
- Read incident postmortems (learn from mistakes)
- Attend tech talks / knowledge sharing sessions
- Contribute to documentation
- Propose improvements to processes
- Stay updated on security policies
Resources
Documentation:
- This Docusaurus site (regularly updated)
- Team-specific wikis
Communication:
- Rocket.Chat channels (ask questions!)
- GitHub discussions
- Team meetings
Learning:
- Pair with senior engineers
- Code review feedback
- Post-incident reviews
- Architecture discussions
Checklist Summary
Day 1: Accounts, tools, first login Week 1: Dev environment, first PR Week 2: Tools, processes, access Month 1: Productive contributor Ongoing: Keep learning and improving
Getting Help
Stuck on something?
- Check documentation first
- Ask your onboarding buddy
- Ask in team channel (Rocket.Chat)
- Tag relevant team: @backend-team, @devops, etc.
Having trouble with:
- Access/accounts → #it-support or @devops
- Code/technical → Team channel or buddy
- Process/policy → Manager or #engineering
- Anything else → Your manager
Feedback
How can we improve onboarding?
- Tell your manager
- Suggest changes to this doc
- Submit PR with improvements
Goal: Get you productive and happy within 1 month!
Welcome to the team! 🚀