Skip to content

Knowing when and how to ask for help

Count both people's minutes, timebox the dig, and send one question the helper can answer without asking back.

Predict first

Before you read: predict

A chat app's backend developer looks back at her last six snags, the times she got stuck, and at how long each took her to solve alone: 5, 10, 10, 15, 150 and 240 minutes. A question to the queue's owner costs him 25 minutes (reading, answering, getting back into his own work) and her 15 (writing it, reading the answer), and his answer always unblocks her.

Counting both people's minutes on this lesson's help-cost model (time spent waiting for an answer is not counted), which habit would have cost the fewest over those six snags?

Pick one

The 30-second version

A question costs the helper minutes too, so count both people's. Choose a timebox before you start digging; most snags end inside it, and the long ones stop costing you at its edge. Skip the timebox when users are failing or the next step cannot be undone. Then send one whole question the helper can act on.

Count both people's minutes, timebox the dig, and send one question the helper can answer without asking back.

How it works

Step 1 of 9

Both people pay. Stuck time is yours; a question costs the helper reading, answering and getting back into their own work. Count both.
In the kitchen
  • the manager's time to read a note, walk over and get back to her own bench → the helper's minutes (step 1)

Analogy: A doctoral student whose experiment keeps failing, and the lab manager down the corridor

In the lab Asking for help
the manager's time to read a note, walk over and get back to her own bench the helper's minutes (step 1)
"two more tries, then I ask", written in the lab book before the run a timebox set before the dig (step 2)
a splash on someone's skin goes to the safety officer at once users hurt: no timebox (step 3)
asking before using the last tube of a sample nobody can collect again a one-way door (step 4)
the note: what the experiment is for, the two changes and each result, what she expected beside the photo of the gel the question's parts and the evidence (steps 5, 6)
a small tube of the failing mix the manager can run on her own bench a reproduction that travels (step 7)

Breaks down when: a lab run takes days, so her timebox counts runs; a developer's timebox counts minutes, and the helper is often one message away.

Contrasting case: the student who never asks and repeats the same failing run for a month, sure that asking would look weak.

In real terms: before you start, write down when you will ask; when that time comes, send one message that a stranger to your machine could act on.

Examples, run for real

repro.mjs is the developer's real 10-line file, run alone from a fresh folder; it models a full Redis in a few lines (labelled: a model of memory, not Redis).

4.1 ExamHall EXH-4430: forty minutes on a stall that happens only on staging

ECON-201's grading jobs stall on staging and nowhere else. A developer digs for forty minutes: he restarts the workers, doubles their concurrency and replays one attempt by hand, and each time job 7 stalls again. Then he posts to the queue's owner:

Goal: ECON-201 grading jobs finish on staging as they do in production.
Tried: restarted the workers; concurrency 4 -> 8; replayed job 7 by hand. Job 7 stalled each time.
Expected: job 7 completes. Seen (worker log): job 7 stalled, its key gone.
Reproduction: repro.mjs, 10 lines, runs alone with node; output below.
4.1 EXH-4430 repro.mjs from a fresh folder · allkeys-lru: job 7 key evicted, the job stalls
4.1 the same file · noeviction: write cache:c refused (OOM) · noeviction: job 7 still queued

The owner answers five minutes later: staging's Redis is shared with a cache and set to evict keys, and BullMQ "cannot work properly if Redis evicts keys arbitrarily". Nothing in the message needed a reply before he could answer it (steps 5–7).

4.2 MR !4730: the fix, and a check that keeps it fixed

MR !4730 sets staging's Redis to noeviction, the only policy BullMQ's guide says "guarantees the correct behavior of the queues", and makes each worker read the policy at startup and refuse to start on any other.

4.2 MR !4730 startup check · allkeys-lru: refuses to start · volatile-lru: refuses to start · noeviction: starts

The forty minutes were his to spend; the answer took the owner five, because the question carried everything the owner needed (steps 1, 5).

Try it

Answer first, then check. Nothing is saved.

Question 1 of 6

At 20:00 a streaming service's new player build starts failing on smart TVs: 40 viewers a minute try to start a title and fail. The developer who shipped it thinks she may find the cause alone. The player team's on-call answers a page 5 minutes after it is sent, then needs 10 minutes to roll the build back. She digs alone for 30 minutes, does not find it, then pages.

Counting from 20:00 on this lesson's help-cost model, how many starts fail in all?

Pick one

Question 2 of 6

A payments-ledger developer digs alone for 20 minutes before asking. In one sprint he hit five snags that would have taken him, alone, 12, 50, 8, 75 and 40 minutes. A bare question ("settlement is broken, any idea?") costs him and the helper 45 minutes between them in back-and-forth before the answer; one carrying the goal, what he tried, the log line and a reproduction costs them 15, but takes him 10 more minutes to write.

Counting both people's minutes on this lesson's help-cost model, how many does always writing the full question save over the sprint?

Pick one

Question 3 of 6

Chat previews on staging sometimes end in a broken character (�): staging cuts each preview after 40 UTF-16 code units, which can split an emoji in two. On your laptop previews look fine. The setting lives in your repo's config/staging.mjs, and on your machine also in PREVIEW_UNIT, which your shell exports. Before asking the previews owner, you write three reproduction files.

Which one shows him the broken preview when he saves it on his laptop and runs it with node?

Pick one

Question 4 of 6

A ticketing site's developer works 09:00–17:00. Ines, who owns the seat map, works 09:00–17:00 on her own clock, which is three hours ahead of his. Each answers a message one hour after it arrives if that moment falls inside their working day, otherwise one hour after their next working day starts. At 16:30 he sends Ines only "Hi, got a minute for a seat-map question?", and sends the question itself as his answer to her reply.

On this lesson's help-cost model, when does her answer to the question reach him, by his clock?

Pick one

Question 5 of 6

A streaming service's developer asks the encoding team's owner why transcoding jobs time out on staging only. Her message gives the goal, what she tried and what each attempt showed, the log line and a reproduction. His first reply asks which version of ffmpeg staging runs. She is sure the version cannot matter: the same job finishes on her laptop.

What should she do next?

Pick one

Question 6 of 6

A payments-ledger developer sends her questions to the ledger's owner through the ledger team's triage queue, which passes each message on 30 minutes after it is filed, in either direction. By the developer's clock, the owner works 05:00–13:30, its last minute included. The owner answers a message 45 minutes after it arrives if that moment falls inside her working day, otherwise 45 minutes after her next working day starts. The developer will send one full question.

On this lesson's help-cost model, what is the latest time, by the developer's clock, she can send it and still get the owner's answer today?

Pick one

Go deeper

Pro tips
  1. Before sending, reread your question as the recipient: if they could not answer without asking you something back, add that piece first. When: the row's typical question "How do you ask a senior colleague for help in a remote team?" (steps 5–8). Source: the curriculum row's pro tip, an authored writing aid; it keys nothing. Status: NOT RUN.

Checked against the tools and docs as of 2026-10-15.