入职助手技能Skill onboarding-helper

这个技能用于为新加入团队的开发者生成全面的入职文档和指南,帮助快速上手项目,包括环境设置、代码架构、团队流程等。关键词:入职指南、开发者文档、团队协作、软件开发、效率提升、新员工培训。

员工培训 0 次安装 0 次浏览 更新于 3/11/2026

name: onboarding-helper description: 为新加入团队的开发者生成全面的入职文档和指南

入职助手技能

为新加入团队的开发者生成全面的入职文档和指南。

说明

您是入职和开发者体验专家。当被调用时:

  1. 评估入职需求

    • 项目复杂性和技术栈
    • 团队规模和结构
    • 开发工作流和流程
    • 领域知识要求
    • 常见入职挑战
  2. 创建入职材料

    • 欢迎文档
    • 开发环境设置指南
    • 代码库架构概览
    • 首个任务教程
    • 团队流程和约定
  3. 组织学习路径

    • 第1天、第1周、第1月目标
    • 渐进式复杂度
    • 动手练习
    • 检查点里程碑
    • 资源和参考资料
  4. 记录团队文化

    • 沟通渠道
    • 会议安排
    • 代码审查实践
    • 决策流程
    • 团队价值观和规范
  5. 启用自助服务

    • 常见问题解答部分
    • 故障排除指南
    • 资源链接
    • 询问对象
    • 常见陷阱

入职文档结构

完整入职指南模板

# 欢迎加入 [项目名称]! 👋

欢迎!我们很高兴您加入团队。本指南将帮助您快速顺利地上手。

## 目录
1. [概述](#概述)
2. [第1天:入门](#第1天入门)
3. [第1周:核心概念](#第1周核心概念)
4. [第1月:产生影响](#第1月产生影响)
5. [团队与流程](#团队与流程)
6. [资源](#资源)
7. [常见问题解答](#常见问题解答)

---

## 概述

### 我们正在构建什么
我们正在构建一个现代电子商务平台,帮助小企业在线销售。我们的平台处理:
- 产品目录管理
- 购物车和结账
- 支付处理(Stripe集成)
- 订单履行和跟踪
- 客户关系管理

**我们的使命**:让电子商务对所有规模的企业都触手可及。

**我们的用户**:拥有10-1000个产品的小到中型企业主。

### 技术栈

**前端**:
- React 18 与 TypeScript
- Redux Toolkit 用于状态管理
- Material-UI 组件库
- React Query 用于 API 调用
- Vite 用于构建工具

**后端**:
- Node.js 与 Express
- PostgreSQL 数据库
- Redis 用于缓存
- Stripe 用于支付
- AWS S3 用于文件存储

**基础设施**:
- Docker 用于本地开发
- Kubernetes 用于生产
- GitHub Actions 用于 CI/CD
- AWS (EC2, RDS, S3, CloudFront)
- DataDog 用于监控

### 项目统计
- **开始时间**:2023年1月
- **团队规模**:12名工程师(4名前端,5名后端,3名全栈)
- **代码库**:约15万行代码
- **活跃用户**:5000多家企业
- **月交易额**:200万美元以上

---

## 第1天:入门

### 您的第一天清单

- [ ] 完成人力资源入职
- [ ] 添加到沟通渠道
- [ ] 设置开发环境
- [ ] 克隆仓库
- [ ] 本地运行应用
- [ ] 部署到个人开发环境
- [ ] 向团队介绍自己
- [ ] 安排与经理和伙伴的1对1会议

### 访问与账户

**所需账户**:
1. **GitHub** - 源代码 ([github.com/company/project](https://github.com))
   - 向 @engineering-manager 请求访问
2. **Slack** - 团队沟通
   - 频道:#engineering, #frontend, #backend, #general
3. **Jira** - 项目管理 ([company.atlassian.net](https://company.atlassian.net))
4. **Figma** - 设计文件
5. **AWS Console** - 生产访问(最初只读)
6. **DataDog** - 监控和日志

**开发工具**:
- Docker Desktop
- Node.js 18+(使用 nvm)
- PostgreSQL 客户端(psql 或 pgAdmin)
- Postman 或 Insomnia(API测试)
- VS Code(推荐,见下文扩展)

### 环境设置

#### 1. 安装先决条件

**macOS**:
```bash
# 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 通过 nvm 安装 Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 18
nvm use 18

# 安装 Docker Desktop
brew install --cask docker

# 安装 PostgreSQL 客户端
brew install postgresql@14

Windows

# 使用 Chocolatey 安装
choco install nodejs-lts docker-desktop postgresql14

2. 克隆仓库

# 克隆仓库
git clone git@github.com:company/ecommerce-platform.git
cd ecommerce-platform

# 安装依赖
npm install

# 复制环境变量
cp .env.example .env.local

3. 配置环境变量

编辑 .env.local

# 数据库(本地 Docker)
DATABASE_URL=postgresql://postgres:password@localhost:5432/ecommerce_dev

# Redis
REDIS_URL=redis://localhost:6379

# Stripe(使用测试密钥)
STRIPE_SECRET_KEY=sk_test_... # 从 @backend-lead 获取
STRIPE_PUBLISHABLE_KEY=pk_test_...

# AWS S3(开发桶)
AWS_ACCESS_KEY_ID=... # 从 @devops 获取
AWS_SECRET_ACCESS_KEY=...
AWS_S3_BUCKET=ecommerce-dev-uploads

# 会话
SESSION_SECRET=您的随机密钥

获取凭证的地方

  • Stripe 测试密钥:1Password 保险库“开发机密”
  • AWS 凭证:在 #engineering 中向 @devops 请求
  • 会话密钥:用 openssl rand -base64 32 生成

4. 启动开发环境

# 启动 Docker 服务(PostgreSQL, Redis)
docker-compose up -d

# 运行数据库迁移
npm run db:migrate

# 用样本数据种子数据库
npm run db:seed

# 启动开发服务器
npm run dev

预期输出

✔ 数据库迁移成功
✔ 种子化100个产品,50个用户
✔ 服务器运行在 http://localhost:3000
✔ API 可用在 http://localhost:3000/api

5. 验证安装

打开浏览器到 http://localhost:3000

您应该看到应用主页,显示样本产品。

测试凭证

  • 邮箱:test@example.com
  • 密码:password123

故障排除

  • 端口3000被占用:用 lsof -ti:3000 | xargs kill -9 终止进程
  • 数据库连接失败:用 docker ps 检查 Docker 是否运行
  • 模块未找到:删除 node_modules 并重新运行 npm install

更多帮助见故障排除指南

VS Code 设置

推荐扩展

{
  "recommendations": [
    "dbaeumer.vscode-eslint",
    "esbenp.prettier-vscode",
    "bradlc.vscode-tailwindcss",
    "ms-azuretools.vscode-docker",
    "eamodio.gitlens",
    "orta.vscode-jest",
    "prisma.prisma"
  ]
}

设置.vscode/settings.json):

{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  "typescript.tsdk": "node_modules/typescript/lib"
}

您的第一次提交

让我们做一个简单更改以验证您的设置:

  1. 创建分支

    git checkout -b test/您的姓名-设置
    
  2. 将您的姓名添加到团队页面: 编辑 src/pages/About.tsx

    const teamMembers = [
      // ... 现有成员
      { name: '您的姓名', role: '软件工程师', joinedDate: '2024-01-15' }
    ];
    
  3. 测试您的更改

    npm run test
    npm run lint
    
  4. 提交和推送

    git add .
    git commit -m "docs: 添加 [您的姓名] 到团队页面"
    git push origin test/您的姓名-设置
    
  5. 创建 PR

    • 转到 GitHub
    • 点击“比较与拉取请求”
    • 填写 PR 模板
    • 向您的伙伴请求审查

恭喜您完成第一次贡献!🎉

第1天结束

您现在应该拥有

  • ✅ 本地运行开发环境
  • ✅ 在浏览器中访问应用
  • ✅ 创建了第一个 PR
  • ✅ 访问所有团队工具和频道

有问题? 在 #engineering 中询问或 DM 您的伙伴!


第1周:核心概念

项目架构

高级架构

┌─────────────┐
│   浏览器    │
│  (React)    │
└──────┬──────┘
       │ HTTPS
       ▼
┌─────────────┐     ┌──────────────┐
│ API 网关    │────▶│  认证服务    │
│  (Express)  │     │   (JWT)      │
└──────┬──────┘     └──────────────┘
       │
       ├────▶ 产品服务
       │
       ├────▶ 订单服务
       │
       ├────▶ 支付服务 ────▶ Stripe API
       │
       └────▶ 用户服务
              │
              ▼
         ┌──────────┐
         │PostgreSQL│
         └──────────┘

目录结构

ecommerce-platform/
├── client/                 # 前端 React 应用
│   ├── src/
│   │   ├── components/    # 可重用 UI 组件
│   │   ├── pages/         # 页面组件
│   │   ├── hooks/         # 自定义 React 钩子
│   │   ├── store/         # Redux 存储和切片
│   │   ├── api/           # API 客户端函数
│   │   ├── utils/         # 工具函数
│   │   └── types/         # TypeScript 类型定义
│   └── tests/             # 前端测试
│
├── server/                # 后端 Node.js 应用
│   ├── src/
│   │   ├── routes/        # Express 路由处理器
│   │   ├── controllers/   # 业务逻辑
│   │   ├── services/      # 外部集成
│   │   ├── models/        # 数据库模型(Prisma)
│   │   ├── middleware/    # Express 中间件
│   │   ├── utils/         # 工具函数
│   │   └── types/         # TypeScript 类型
│   └── tests/             # 后端测试
│
├── docs/                  # 文档
├── scripts/               # 构建和部署脚本
├── .github/               # GitHub Actions 工作流
└── docker-compose.yml     # 本地开发服务

关键概念

1. 认证流程

// 用户登录
POST /api/auth/login
{ email, password }
  ↓
// 服务器验证凭证
// 生成 JWT 令牌
  ↓
// 客户端存储令牌
localStorage.setItem('token', token)
  ↓
// 客户端在请求中包含令牌
Authorization: Bearer <token>
  ↓
// 服务器验证令牌
// 将用户附加到请求
req.user = decodedToken

代码位置server/src/middleware/auth.ts

2. 状态管理(Redux)

我们使用 Redux Toolkit 进行客户端状态管理:

// 存储结构
{
  auth: {
    user: User | null,
    isAuthenticated: boolean,
    loading: boolean
  },
  cart: {
    items: CartItem[],
    total: number
  },
  products: {
    list: Product[],
    filters: FilterState,
    loading: boolean
  }
}

从存储读取

import { useAppSelector } from '@/hooks/redux';

const user = useAppSelector(state => state.auth.user);
const cartItems = useAppSelector(state => state.cart.items);

分派操作

import { useAppDispatch } from '@/hooks/redux';
import { addToCart } from '@/store/slices/cartSlice';

const dispatch = useAppDispatch();
dispatch(addToCart({ productId, quantity: 1 }));

代码位置client/src/store/

3. API 通信

我们使用 React Query 进行服务器状态管理:

import { useQuery, useMutation } from '@tanstack/react-query';
import { api } from '@/api/client';

// 获取数据
const { data, isLoading, error } = useQuery({
  queryKey: ['products'],
  queryFn: () => api.products.getAll()
});

// 修改数据
const mutation = useMutation({
  mutationFn: (product) => api.products.create(product),
  onSuccess: () => {
    queryClient.invalidateQueries(['products']);
  }
});

代码位置client/src/api/

4. 数据库访问(Prisma)

我们使用 Prisma ORM 进行数据库操作:

import { prisma } from '@/lib/prisma';

// 查找一个
const user = await prisma.user.findUnique({
  where: { id: userId }
});

// 查找多个并过滤
const products = await prisma.product.findMany({
  where: {
    category: 'electronics',
    price: { lt: 1000 }
  },
  include: {
    images: true,
    reviews: true
  }
});

// 创建
const order = await prisma.order.create({
  data: {
    userId,
    total: 100,
    items: {
      create: [
        { productId: 1, quantity: 2, price: 50 }
      ]
    }
  }
});

代码位置server/src/models/ 模式prisma/schema.prisma

您的第一个真实任务

目标:为产品页面添加“最近查看”功能。

要求

  • 跟踪用户查看的产品
  • 显示最近5个查看的产品
  • 跨会话持久化(使用 localStorage)
  • 在产品详情页显示

步骤

  1. 创建特性分支

    git checkout -b feature/recently-viewed-products
    
  2. 前端:添加钩子client/src/hooks/useRecentlyViewed.ts):

    export function useRecentlyViewed() {
      const addToRecentlyViewed = (product: Product) => {
        // 获取现有
        const recent = JSON.parse(localStorage.getItem('recentlyViewed') || '[]');
    
        // 添加新项(避免重复)
        const updated = [
          product,
          ...recent.filter((p: Product) => p.id !== product.id)
        ].slice(0, 5);
    
        // 保存
        localStorage.setItem('recentlyViewed', JSON.stringify(updated));
      };
    
      const getRecentlyViewed = (): Product[] => {
        return JSON.parse(localStorage.getItem('recentlyViewed') || '[]');
      };
    
      return { addToRecentlyViewed, getRecentlyViewed };
    }
    
  3. 前端:在产品页面中使用client/src/pages/ProductDetail.tsx):

    const { addToRecentlyViewed, getRecentlyViewed } = useRecentlyViewed();
    
    useEffect(() => {
      if (product) {
        addToRecentlyViewed(product);
      }
    }, [product]);
    
    const recentProducts = getRecentlyViewed();
    
  4. 前端:显示组件client/src/components/RecentlyViewed.tsx):

    export function RecentlyViewed({ currentProductId }: Props) {
      const { getRecentlyViewed } = useRecentlyViewed();
      const products = getRecentlyViewed()
        .filter(p => p.id !== currentProductId);
    
      if (products.length === 0) return null;
    
      return (
        <section>
          <h2>最近查看</h2>
          <ProductGrid products={products} />
        </section>
      );
    }
    
  5. 添加测试

    describe('useRecentlyViewed', () => {
      it('应该将产品添加到最近查看', () => {
        const { addToRecentlyViewed, getRecentlyViewed } = useRecentlyViewed();
    
        addToRecentlyViewed(mockProduct);
    
        expect(getRecentlyViewed()).toContainEqual(mockProduct);
      });
    
      it('应该限制为5个产品', () => {
        // 添加6个产品,检查只保留5个
      });
    
      it('应该将重复项移到前面', () => {
        // 添加相同产品两次,检查它只出现一次在前面
      });
    });
    
  6. 手动测试

    • 查看几个产品
    • 在 DevTools 中检查 localStorage
    • 验证列表出现在产品页面
    • 测试边界情况(空状态,单一项)
  7. 创建 PR

    • 使用 PR 模板
    • 添加截图
    • 向 @frontend-team 请求审查

资源

第1周学习资源

必读

可选深潜

第1周结束

您现在应该

  • ✅ 理解整体架构
  • ✅ 了解关键技术和工具
  • ✅ 完成您的第一个特性
  • ✅ 理解我们的开发工作流
  • ✅ 感觉舒适提问

检查点会议:与您的经理安排30分钟以审查进展。


第1月:产生影响

第1月目标

  1. 发布特性:独立完成3-5个特性
  2. 代码审查:为10个以上PR提供有意义的反馈
  3. 修复漏洞:处理2-3个漏洞修复
  4. 改进某物:找到并修复一个小痛点
  5. 学习领域:理解电子商务业务基础

建议特性想法

初学者友好

  • 添加产品排序(价格、评分、最新)
  • 实现愿望单功能
  • 创建订单历史页面
  • 添加电子邮件通知

中级

  • 实现产品评论和评分
  • 添加搜索自动完成
  • 创建订单管理仪表板
  • 优化图像加载性能

高级

  • 实现购物车放弃恢复
  • 添加实时库存跟踪
  • 创建推荐引擎
  • 设置A/B测试框架

寻找任务:在 Jira 看板上查找标记为 good-first-issue 的问题。

代码审查最佳实践

作为作者

  • 保持PR小(< 400行更改)
  • 写清晰的描述
  • 为UI更改添加截图
  • 及时响应反馈
  • 在请求审查前彻底测试

作为审查者

  • 在24小时内审查
  • 友善并具有建设性
  • 提问而不是要求更改
  • 突出良好实践
  • 准备就绪时批准(不要挑剔)

审查清单

  • [ ] 代码遵循风格指南
  • [ ] 包含测试且通过
  • [ ] 生产代码中没有 console.logs
  • [ ] 实现错误处理
  • [ ] 考虑性能
  • [ ] 遵循安全最佳实践

资源代码审查指南

测试指南

测试内容

  • 业务逻辑(总是)
  • 用户交互(重要流程)
  • 边界情况和错误状态
  • API集成(使用模拟)

测试金字塔

       /\
      /  \    E2E 测试(少)
     /────\
    /      \  集成测试(一些)
   /────────\
  /          \ 单元测试(多)
 /────────────\

运行测试

# 所有测试
npm test

# 监视模式
npm test -- --watch

# 覆盖率
npm test -- --coverage

# 特定文件
npm test UserService.test.ts

编写测试

describe('CartService', () => {
  describe('addToCart', () => {
    it('应该将项目添加到空购物车', () => {
      // 安排
      const cart = new Cart();
      const item = { productId: 1, quantity: 2 };

      // 行动
      cart.addItem(item);

      // 断言
      expect(cart.items).toHaveLength(1);
      expect(cart.items[0]).toEqual(item);
    });

    it('如果项目存在应增加数量', () => {
      // 测试实现
    });

    it('如果数量为负应抛出错误', () => {
      // 测试实现
    });
  });
});

资源测试指南

部署流程

环境

部署流程

主分支
    │
    ▼
CI 运行(测试、检查、构建)
    │
    ▼
自动部署到暂存
    │
    ▼
手动QA测试
    │
    ▼
创建发布标签
    │
    ▼
部署到生产(逐步推出)

您可以部署:暂存(合并到主分支时自动) 您不能部署:生产(需要批准)

监控

  • 日志:DataDog 仪表板
  • 错误:Sentry 警报
  • 指标:自定义仪表板

团队与流程

团队结构

工程团队

  • 工程经理:@alice(1对1会议,职业成长)
  • 技术负责人:@bob(架构决策,技术方向)
  • 前端团队(4名工程师):@carol, @dave, @eve, @frank
  • 后端团队(5名工程师):@grace, @henry, @ivy, @jack, @kate
  • 全栈(3名工程师):@liam, @maya, @noah

相关团队

  • 产品:@olivia(产品经理)
  • 设计:@peter, @quinn(UI/UX设计师)
  • QA:@rachel, @sam(测试工程师)
  • DevOps:@taylor(基础设施)

沟通渠道

Slack 频道

  • #engineering - 一般工程讨论
  • #frontend - 前端特定主题
  • #backend - 后端特定主题
  • #deploys - 部署通知
  • #incidents - 生产问题
  • #random - 非工作聊天

何时使用什么

  • Slack:快速问题、讨论、FYI
  • Jira:任务跟踪、漏洞报告
  • GitHub:代码讨论、PR审查
  • 电子邮件:外部沟通、正式通知
  • Zoom:会议、结对编程、深入讨论

会议

每周

  • 团队站会(周一/周三/周五,上午10点,15分钟)
    • 您做了什么
    • 您在做什么
    • 任何阻碍
  • 冲刺计划(周一,下午1点,1小时)
    • 计划下一个冲刺
    • 估算故事
  • 回顾(周五,下午2点,45分钟)
    • 什么进展顺利
    • 什么可以改进
    • 行动项

双周

  • 与经理的1对1(30分钟)
    • 职业成长
    • 反馈
    • 问题

每月

  • 全体会议(第一个周五,下午3点,1小时)
    • 公司更新
    • 团队展示

会议规范

  • 可能时开启摄像头
  • 不讲话时静音
  • 准时
  • 做好准备
  • 做笔记

开发工作流

Git 工作流

主分支(受保护)
  ├─ feature/添加愿望单
  ├─ fix/购物车漏洞
  └─ refactor/支付服务

分支命名

  • feature/描述 - 新特性
  • fix/描述 - 漏洞修复
  • refactor/描述 - 代码重构
  • docs/描述 - 文档
  • test/描述 - 仅测试

提交消息

type(scope): 描述

feat(cart): 添加愿望单功能
fix(auth): 解决令牌过期问题
docs(readme): 更新设置说明
test(orders): 添加集成测试
refactor(database): 优化查询

PR 流程

  1. 创建特性分支
  2. 做更改
  3. 编写测试
  4. 创建 PR(使用模板)
  5. 请求审查(至少1个批准)
  6. 处理反馈
  7. 合并(压缩并合并)

值班轮换

您在头3个月内不会值班

当您加入轮换时:

  • 每月1周值班
  • 响应 PagerDuty 警报
  • 修复生产问题
  • 如果需要,升级

资源值班操作手册


资源

文档

学习资源

JavaScript/TypeScript

React

Node.js

数据库

系统设计

内部工具

  • 1Password:共享凭证
  • Notion:团队维基和文档
  • Figma:设计文件
  • DataDog:监控和日志
  • Sentry:错误跟踪
  • GitHub:代码仓库
  • Jira:项目管理

您的伙伴

您的入职伙伴是 @buddy-name

您的伙伴将

  • 回答日常问题
  • 审查您的头几个 PR
  • 向您介绍团队
  • 帮助您导航流程
  • 与您每周会面(第一个月)

不要犹豫问他们任何事情!


常见问题解答

开发

问:如何重置本地数据库?

npm run db:reset  # 删除所有数据并重新运行迁移
npm run db:seed   # 添加样本数据

问:测试在本地失败但在 CI 通过。为什么?

  • 检查 Node 版本匹配(使用 nvm use
  • 清除 node_modules 并重新安装
  • 检查环境特定测试

问:如何调试后端? 添加 debugger; 语句并运行:

node --inspect-brk server/src/index.ts

然后打开 Chrome DevTools。

问:在哪里找到开发 API 凭证? 检查 1Password 保险库“开发机密”或在 #engineering 中询问。

代码与实践

问:何时应创建新组件 vs. 修改现有?

  • 创建新:可重用、自包含功能
  • 修改现有:扩展当前组件能力
  • 不确定时,在 PR 审查中询问

问:期望多少测试覆盖率?

  • 总体目标 80%
  • 业务关键逻辑(支付、认证)100%
  • 关注有价值的测试,而不仅仅是覆盖率数字

问:我可以重构我工作的代码吗? 可以,但:

  • 将重构放在单独的提交中
  • 不要将特性工作与大重构混合
  • 对于大重构,创建单独的 PR

问:如果我不同意 PR 反馈怎么办?

  • 在 PR 评论中有礼貌地讨论
  • 解释您的理由
  • 如果需要,升级到技术负责人
  • 记住:我们都在学习

流程

问:如何报告生产漏洞?

  1. 在 #incidents 中发布详细信息
  2. 创建 Jira 票证(类型:漏洞,优先级:基于严重性)
  3. 如果紧急,@值班工程师

问:我可以处理不在 Jira 中的内容吗?

  • 小改进:可以,之后创建票证
  • 大型项目:首先与经理检查
  • 技术债务:在冲刺计划中讨论

问:如何请求休假?

  • 添加到团队日历
  • 在 Slack 上给经理发消息
  • 如果您有活跃工作,更新 Jira 看板

问:我在一个问题卡住几小时。应该怎么办?

  1. 尝试调试和谷歌搜索(30分钟)
  2. 在 #engineering 中询问(不要独自挣扎)
  3. 安排与队友的结对会话
  4. 如果仍卡住,升级到技术负责人

经验法则:卡住30分钟后寻求帮助。

职业与成长

问:如何评估绩效?

  • 每季度与经理审查
  • 基于:代码质量、速度、协作、成长
  • 提供透明标准

问:如何了解更多关于 [特定主题]?

  • 在 #engineering 中请求推荐
  • 检查内部维基获取资源
  • 向经理请求 Udemy/书籍预算

问:我可以切换团队/项目吗?

  • 6个月后与经理讨论
  • 鼓励内部流动性

欢迎加入!

记住:

  • 提问:没有问题是太小的
  • 休息:入职是累人的
  • 耐心:需要3个多月才能感觉有生产力
  • 玩得开心:我们一起构建很酷的东西!

需要帮助? 您的伙伴 (@buddy-name) 和经理 (@manager-name) 在这里为您服务。

欢迎加入团队! 🚀


## 使用示例

@onboarding-helper @onboarding-helper --type full-guide @onboarding-helper --type quick-start @onboarding-helper --type architecture-overview @onboarding-helper --focus frontend @onboarding-helper --include-exercises


## 最佳实践

### 使其个性化
- 按姓名称呼新团队成员
- 分配伙伴/导师
- 包括团队照片和简介
- 分享团队文化和价值观

### 渐进式披露
- 第1天:只是启动运行
- 第1周:理解基础
- 第1月:发布特性
- 第3月:完全生产力

### 使其互动
- 包括动手练习
- 提供起始任务
- 鼓励结对编程
- 设置定期检查

### 保持更新
- 每季度审查
- 从新员工获取反馈
- 为技术栈更改更新
- 基于常见问题改进

### 使其可发现
- 中央位置(维基,README)
- 易于导航
- 可搜索
- 版本控制

## 注释

- 入职是一个持续过程,不是一次性事件
- 优秀入职显著减少达到生产力的时间
- 文档应可发现且最新
- 为个人指导分配导师/伙伴
- 包括技术和文化入职
- 庆祝早期成功以建立信心
- 在头3个月内定期检查
- 鼓励问题并创建安全学习环境
- 提供带有里程碑的清晰学习路径
- 使资源易于访问
- 基于新员工反馈更新文档