Skip to content
ExponaBLOG
ENGINEERING CRAFT · DAY 062 / 100

Onboarding a developer in one week: a step-by-step guide

A plan that gets new teammates shipping fast.

Expona Admin7 min read

The cost of slow onboarding

I've seen new developers sit idle for their first two weeks, waiting for access, wrestling with setup, and reading documentation that stopped being accurate six months ago. Meanwhile, the team context lives in Slack threads and tribal knowledge. Onboarding a developer in one week isn't a luxury—it's a competitive advantage. Teams that get new teammates shipping fast reduce ramp-up friction, build institutional confidence, and let experienced engineers focus on mentoring instead of unblocking access tickets.

This isn't about rushing quality. It's about intentional structure. I've done this at three different companies now, and the pattern holds: a well-designed first week compounds into months of faster delivery and better retention.

Week one — A five-day progression

The goal is progressive independence. By day five, your new teammate should understand the system, have merged their first real pull request, and know exactly whom to ask when they're stuck. Here's the rhythm:

Day 1: Access, setup, architecture tour

Start before they arrive. Have their laptop imaged, their AWS account created, their GitHub team memberships set, and their Slack channels populated. Thirty minutes on day one should be spent logging in and verifying access—not setting up from scratch.

Then walk them through the architecture. Not a slide deck. A working demo. Open your browser, show them the product. Open your terminal, clone the repo, run the setup command (we'll get to that), and let them watch it come to life. Pair for twenty minutes while they do it themselves. Answer the "why is this service separate?" questions. Point out the critical service boundaries—where Kafka events flow, where PostgreSQL writes happen, where Redis sits.

By day one EOD, they should have a running local environment and a mental map of the system's shape.

Day 2: Pair on a small bug

Don't assign them to a big feature. Grab a small, well-understood bug—something that takes you ninety minutes alone, so maybe three hours together with explanation. The goal is teaching by doing.

Sit with them. Write code together. Show them how you navigate the codebase, which tests you run first, how you think about the change's scope. Let them type. Ask them questions: "What do you think this function does?" "Where might we break something if we change this?" This is where they internalize your coding standards and decision-making process.

Merge it by day two EOD. That merged PR, even if it's tiny, creates psychological momentum.

Day 3: First solo PR

Now they pick something—maybe the next small bug, or a documentation improvement they noticed. They write the code, they request review, they iterate on feedback. You're available for questions but not steering. This is where they feel ownership.

Don't delay the review. Turnaround time matters. Comments should be constructive and explanatory: instead of "rewrite this," say "this could race if two workers process simultaneously; let's add the lock here."

Day 4: Shadow a deployment

Whether you deploy daily or weekly, they watch the whole flow. Pre-deployment checks, monitoring, rollback procedures. If something breaks, they see how the team recovers. If it's smooth, they see what good looks like. This demystifies the production path and removes anxiety around "what happens after I merge?"

Day 5: Retro on onboarding

Spend an hour with them and whoever was their buddy. Ask: What was confusing? Where did the docs fail? What did we do well? Then write it down. Fix the docs while the gaps are fresh in their memory. Have them make one small PR that improves onboarding for the next person.

This is how onboarding gets better each cycle. You're compounding knowledge, not just transferring it.

Setup in one command

Nothing kills momentum like forty-five minutes of Homebrew installs, environment variable copy-paste, and "wait, did you clone it here or here?" A new developer should clone the repo and run one command. Everything else happens automatically.

Docker Compose is your friend here. Here's what I use:

typescript
version: '3.9'
services:
  postgres:
    image: postgres:15-alpine
    environment:
      POSTGRES_DB: myapp_dev
      POSTGRES_USER: developer
      POSTGRES_PASSWORD: localdev
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
      - ./scripts/init-db.sql:/docker-entrypoint-initdb.d/init.sql

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

  app:
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgresql://developer:localdev@postgres:5432/myapp_dev
      REDIS_URL: redis://redis:6379
      NODE_ENV: development
    depends_on:
      - postgres
      - redis
    volumes:
      - .:/app
      - /app/node_modules
    command: npm run dev

volumes:
  postgres_data:

Then a one-line setup script in your README:

typescript
#!/bin/bash
docker-compose up --build
npm run seed:dev

That seed:dev command matters. Running migrations is one thing; populating realistic test data is another. New developers shouldn't spend an hour figuring out "what do I search for to see a customer record?" Pre-seed your dev database with known accounts, transactions, users, and relationships. Include comments in your seed file:

typescript
// Standard test account: email test@example.com, password localdev
const account = await db.account.create({
  email: 'test@example.com',
  name: 'Test Account',
  tier: 'premium'
});

// 50 transactions for load testing and pagination work
for (let i = 0; i < 50; i++) {
  await db.transaction.create({
    accountId: account.id,
    amount: Math.random() * 10000,
    status: i % 3 === 0 ? 'pending' : 'completed'
  });
}

This removes days of friction. No "can I get a production snapshot?" requests, no "how do I log in?" confusion. They run one command and have a working product in front of them in two minutes.

A buddy — Pick the right person

One go-to person is better than the entire team being available. Ownership matters. If everyone is responsible, no one is. Pick someone who:

  • Knows the codebase deeply but isn't your principal architect (they'll be too busy).
  • Communicates patiently and doesn't assume prior knowledge.
  • Has time. Don't pick the person heads-down on the critical path.

Make it explicit. Tell your new teammate: "Ask Ravi anything. He's your go-to for the first month." Tell Ravi: "You're the primary point of contact. Block time for this." Set a weekly 30-minute pairing slot. This removes the friction of "is it rude to ask?" and ensures questions get answered fast.

The buddy system also protects your senior engineers from constant interrupts. Instead of five different people explaining caching strategy to the new person, they explain it once to the buddy, who then teaches it consistently.

Improve the docs — Close the gap immediately

Every developer who joins your team reads your documentation with fresh eyes. That's your signal. When they ask "how do I connect to staging?" or "where's the database schema diagram?"—those aren't gaps you can ignore. Fix them immediately.

Make it part of the first week. On day five, have them file three small PRs that improve the onboarding docs based on what confused them. Not a rewrite—small, specific fixes:

  • Add the exact command to set up the dev environment.
  • Clarify which branch you deploy from and how.
  • Document the test data accounts and their passwords.
  • Explain what each microservice does in plain language.

This creates a virtuous cycle. Each new person makes the docs slightly better. Over a year, you've built comprehensive onboarding from accumulated small improvements. And the new person owns some of it—they see their contribution, which reinforces their sense of belonging.

Common mistakes

Underestimating setup time

If your setup takes more than five minutes, you've lost before day one ends. I've seen teams that say "it's not that bad" while spending two days troubleshooting environment variables. Your responsibility is to make it frictionless, not to expect new developers to power through chaos.

Assigning them to too much

A new developer learning your codebase, your team, your processes, and your business domain is already at full cognitive load. Giving them a three-story feature as their first task creates stress, not competence. Small tasks with clear scope are better.

Skipping the architecture tour

Onboarding isn't just code access. It's context. If they don't understand why you have a separate notifications service or why you chose Kafka for this flow, they'll make poor decisions later. Spend time on the big picture.

Forgetting to pair

Some teams treat onboarding as "give them the docs and get back to your sprint." Pairing is where real transfer happens. Code review alone won't teach them your reasoning. Sit together, think out loud, let them see how you navigate uncertainty.

Not following up on documentation feedback

If they say "this is confusing," fix it. Don't defer it. The moment you dismiss their feedback as "well, you'll figure it out," you've lost the opportunity to improve. And the next person will struggle the same way.

Key takeaways

  • Structure week one as a five-day progression: access → pairing on a bug → solo work → production exposure → retrospective.
  • Automate setup to one command with Docker Compose and seed data; you're removing days of friction, not cutting corners.
  • Assign a clear buddy—one person, explicit, responsible for being available in the first month.
  • Have new developers improve the documentation on day five; it closes knowledge gaps and gives them ownership.
  • Pair heavily in the first few days; code review alone doesn't transfer context, reasoning, or culture.
  • Measure success on day five by a shipped PR, not by how well they can recite architecture; they'll learn depth over weeks, competence over days.
ShareXLinkedInReddit

Found this useful? Support the writing.

Buy me a coffee
Written by
Expona Admin
Site administrator

Comments

Loading comments…

Leave a comment

Comments are reviewed before they appear. Be kind and stay on topic.

Related articles