unrust

Use case

How do you approach this?

How to Practice Before an On-Call Shift

Published · Updated

Published by Unrust. Scoring and editorial method

Quick answer

Practice before on-call by rehearsing a small evidence loop: describe a symptom, identify the important state, choose a discriminating check, and decide what a safe next action would be. Keep drills short and connected to recurring service boundaries rather than trying to memorize every alert or recreate a full outage. The goal is to make a calm investigation routine easier to retrieve when tools and time are limited.

Practice the investigation sequence, not heroic guessing

A useful drill starts with a limited symptom and asks what evidence would narrow it. Rehearse separating observations from explanations, noting which logs or metrics matter, and choosing a reversible action. This builds a repeatable first response without encouraging unsafe production experimentation.

Review local runbooks alongside code skills

On-call readiness also includes escalation paths, ownership boundaries, dashboards, rollback steps, and security procedures. Pair small code exercises with the actual runbooks for the services you support so recall work remains connected to the decisions you are authorized to make.

Separate malformed data from a healthy empty queue

Parse a JSON array of jobs. A valid empty array means no jobs. Malformed JSON or a non-array payload must produce an explicit error result, rather than looking like normal emptiness.

The quiet fallback erases the difference between an outage symptom and an empty queue. This local example returns a bounded error flag; a production service should preserve diagnostic details in its approved logging channel, without leaking payloads to end users.

The outcomes below are checked by executable tests against the exact displayed snippets. NaN and undefined are written by name so they remain visible in the table.

Proposed implementation
function run(raw) {
  try { return { jobs: JSON.parse(raw) }; }
  catch { return { jobs: [] }; }
}
Repair for the stated contract
function run(raw) {
  try {
    const jobs = JSON.parse(raw);
    return Array.isArray(jobs) ? { jobs } : { error: "invalid-queue" };
  } catch { return { error: "invalid-queue" }; }
}
Inputs and checked outcomes
Arguments to runBeforeAfter
"invalid"{"jobs": []}{"error": "invalid-queue"}
"[]"{"jobs": []}{"jobs": []}
"{}"{"jobs": {}}{"error": "invalid-queue"}

Practice loop

  1. 01Choose a recent low-risk incident and rewrite its first ten minutes as observations and hypotheses.
  2. 02Trace one request boundary in a service you support and name the log or metric that confirms each handoff.
  3. 03Review the escalation and rollback steps for one service after completing a short unassisted exercise.

Limits of this page

Practice cannot reproduce incident severity, real customer impact, team coordination, or access constraints. A timed diagnostic snapshot should not be used to judge on-call readiness or to infer why someone found a particular scenario unfamiliar or difficult that day.

Source context

Published by Unrust as practical teaching material using public language documentation and original examples. See the scoring and editorial method for scope, checking and limitations.

Check your own starting point

One diagnostic session is a snapshot, not causal proof of why a result occurred. It can help you choose a focused next practice step without making a broader claim about your ability.

Take the free diagnostic