Skip to content

Post

A debugging playbook for new grads

2026-01-011 min read

Debugging is an engineering skill, not a personality trait. The fastest debuggers do three things well:

  1. Reduce the problem space
  2. Increase signal
  3. Verify assumptions

Reduce scope first

If you can’t reproduce it reliably, you can’t fix it reliably. Shrink the surface area until you can answer:

  • What changed?
  • What input triggers it?
  • What’s the expected output?

Increase signal

Prefer deterministic signals over guesses:

  • Add structured logs with correlation IDs.
  • Capture timings and error rates.
  • Write a minimal test that fails.

Here’s a tiny example of making logs actually useful:

export function withRequestId(requestId: string) {
  return {
    info(message: string, meta: Record<string, unknown> = {}) {
      console.log(JSON.stringify({ level: "info", requestId, message, ...meta }));
    },
    error(message: string, meta: Record<string, unknown> = {}) {
      console.error(JSON.stringify({ level: "error", requestId, message, ...meta }));
    },
  };
}

Verify assumptions

Most bugs are “I thought X was true” moments. Write down your assumptions and validate them with evidence.

Recap

  • Make it reproducible
  • Add the right signals
  • Prove or disprove assumptions quickly