---
id: productivity-onboarding-process
title: Engineering Onboarding — first 30 / 60 / 90 days
category: Coding
status: draft
source_trust_level: B
verification_status: conceptual
created_at: 2026-05-09
updated_at: 2026-05-09
tags: [productivity, onboarding, vibe-coding]
tech_stack: { language: "process", applicable_to: ["Engineering"] }
applied_in: []
aliases: [onboarding, ramp up, buddy, first PR, 30/60/90, new hire, devcontainer]
---

# Engineering Onboarding

> 새 engineer 의 첫 90 days. **Day 1 = code clone. Week 1 = first PR. Month 3 = own feature**. Buddy + doc + checklist.

## 📖 핵심 개념
- 명시적 timeline.
- Buddy + manager 1-on-1.
- Doc 가 catchup.
- 첫 PR 가 빠른 (small task).

## 💻 코드 패턴

### Day 1 checklist
```markdown
## Day 1
- [ ] Laptop setup
- [ ] Account: GitHub, Slack, AWS, Linear
- [ ] Read [Engineering Handbook](#)
- [ ] Read [README](#)
- [ ] Run app locally (devcontainer 권장)
- [ ] Buddy 1-on-1
- [ ] Manager 1-on-1
- [ ] First Slack post (introduction)
```

### Week 1
```markdown
## Week 1
- [ ] 첫 PR (typo fix / docs)
- [ ] Architecture overview 읽음
- [ ] 5 ADR 읽음
- [ ] Pair on a feature
- [ ] Standup 가입
- [ ] Sprint planning 참여
- [ ] Daily 1-on-1 with buddy
```

### Month 1
```markdown
## Month 1
- [ ] 작은 feature 완료 (1주)
- [ ] On-call shadowing
- [ ] Code review 시작 (1-2 PR / week)
- [ ] Customer 한 번 talk
- [ ] Retro 참여
```

### Month 3
```markdown
## Month 3
- [ ] 큰 feature 완료
- [ ] On-call (primary)
- [ ] 다른 사람 onboard 의 buddy
- [ ] 90-day review
```

### Devcontainer
```json
// .devcontainer/devcontainer.json
{
  "name": "MyApp Dev",
  "image": "mcr.microsoft.com/devcontainers/javascript-node:20",
  "postCreateCommand": "npm install && npm run db:setup",
  "extensions": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"],
  "forwardPorts": [3000, 5432, 6379]
}
```

→ "Clone + open in Codespaces / VS Code = 동작".

### Setup script
```bash
# bin/setup
#!/bin/bash
set -e

# Detect OS
if [[ $OSTYPE == 'darwin'* ]]; then
    brew bundle
fi

npm install
docker compose up -d
npm run db:migrate
npm run db:seed

echo "Ready! Run: npm run dev"
```

→ "1 command setup".

### First PR (intentional small)
```
- Typo in README.
- 1 unit test 추가.
- 작은 refactor (rename variable).

→ Goal:
- Git workflow 익숙.
- Code review 경험.
- 매 commit.
- CI pass.
```

### Buddy
```
같은 team 의 mid-senior.
- Day 1-7: 매일 30 min 1-on-1.
- Week 2-4: 매일 짧은 check.
- Month 2+: ad hoc.

→ "Stupid question" channel.
```

### Manager 1-on-1
```
주 1회.
- Career goal.
- Feedback.
- Block / 어려움.

→ Onboarding 의 first 30 days = 매주.
```

### Architecture diagram
```
새 사람 이 큰 그림 잡기:
- System diagram (Excalidraw).
- Service map.
- Data flow.
- Critical path.
```

→ Onboarding doc 의 1 page.

### Codebase tour
```
30-60 min:
- 매 module 의 owner.
- 매 큰 file 의 purpose.
- Dependency graph.
- "Don't touch" zone.

→ Walk-through video (Loom).
```

### Reading list
```
1. README.
2. CONTRIBUTING.md.
3. Architecture overview.
4. Top 5 ADR (recent decision).
5. Coding style guide.
6. Deployment process.
7. Incident playbook.

→ 1 week 안 read.
```

### Stupid question channel
```
Slack #help-{team} 또는 #ask-anything.
- 질문 가 환영.
- 매 답 가 doc 가능 (FAQ).
```

### Pair programming (early)
```
새 사람 = navigator.
Buddy = driver.
- Real task 가 함께.
- Implicit knowledge transfer.

→ 1주 후 swap.
```

### Mentor vs buddy vs manager
```
Buddy: same team, 작은 questions.
Mentor: career, technical depth.
Manager: career, performance, growth.

→ 매 다른 role.
```

### Anti-pattern
```
- "Sink or swim": 친절한 X.
- 매 사람 가 다른 process: drift.
- No buddy: lonely.
- No 1-on-1: signal X.
- 큰 first PR: discouraging.
- No documentation: 모든 거 ask.
```

### Onboarding survey
```
30 day 후 survey:
- Setup 가 smooth?
- Doc 가 clear?
- Buddy 가 helpful?
- 첫 PR experience?
- 무엇 missing?

→ Onboarding 자체 의 improvement.
```

### Remote onboarding
```
First-day video call (manager + buddy + team intro).
Loom 가 walkthrough.
Async doc 가 baseline.
Periodic sync (weekly) — 사람.
Coffee chat (random).

→ In-person 의 lonely 방지.
```

### Tools setup automation
```bash
# bin/onboard.sh
- Generate AWS access key.
- Add to GitHub team.
- Slack invite.
- Set up 1Password vault.
- Schedule 1-on-1.
- Send welcome email.

→ 매 onboarding 가 manual = drift.
```

### Pre-day-1
```
Offer accepted → Day 1 까지 1-2 weeks:
- Hardware ship.
- Account 미리 setup.
- 첫 day schedule.
- Welcome package.
- Reading material (optional).

→ Day 1 가 "ready".
```

### Buddy 의 commitment
```
Buddy = 매주 4-8 hour (first month).
- Manager 가 buddy 의 work load 감소.
- Buddy reward (review, perf).

→ Buddy 가 "free time" 가 안 됨. Recognized work.
```

### Quick win
```
1주 내 ship 가능 task.
- Bug fix (low risk).
- Small feature.
- 작은 refactor.

→ "I shipped to production!" 가 self-confidence.
```

### 90-day review
```
Manager + new hire:
- Goal achieved?
- Onboarding 가 좋음?
- Career direction?
- Improvement?

→ 명시적 milestone.
```

### Ramp-up time (industry)
```
Junior: 3-6 month.
Senior: 1-3 month.
Staff+: 1 month (큰 codebase) - 6 month (큰 system).

→ "Productive" = first PR 보다 own feature.
```

### Public examples
- **GitLab handbook**: 매 process public.
- **Basecamp**: shape up + onboarding.
- **Stripe**: pair programming heavy.
- **Shopify**: dev environment 자동.

## 🤔 의사결정 기준
| 단계 | 추천 |
|---|---|
| Day 1 | Setup + buddy meet |
| Week 1 | First PR + read |
| Month 1 | Small feature + on-call shadow |
| Month 3 | Big feature + own |
| Big team | Cohort (group hire) |
| Remote | Async + sync sync |

## ❌ 안티패턴
- **Sink or swim**: morale ↓.
- **No buddy**: lonely.
- **Big first PR**: discouraging.
- **No doc**: 모든 question = sync.
- **Manual setup**: 매 사람 가 다름.
- **No 90-day review**: signal X.
- **Buddy 가 free time**: 안 됨.

## 🤖 LLM 활용 힌트
- Day 1 / Week 1 / Month 1 / 3 timeline.
- Buddy + manager 1-on-1.
- Devcontainer 가 "1 command setup".
- First PR 가 small + quick.

## 🔗 관련 문서
- [[Productivity_Documentation]]
- [[Productivity_Knowledge_Sharing]]
- [[Quality_Mentoring]]
