You have been stuck for three hours. You ping “it doesn’t work.” A senior spends twenty minutes reconstructing your setup, then asks for the error, then asks what you tried. They are not cruel. You did not pack the question.

Asking for help is a skill. It is not an admission that you failed. It is how teams avoid duplicate pain. A good question is a gift: it is searchable, it is specific, and it shows you did the first pass.

This is how to ask so you get an answer, and so people still like working with you.

Do the minimum hunt first

Read the error. Search the exact message, in quotes, in the repo and on the web. Read the stack (see the stack trace article). Reproduce it once more, reducing inputs. Check if you are on the right branch, the right env, the right user.

If the README has a troubleshooting section, read it. If you skip it, the first reply will be a link to it. That feels like a slap. It is a process.

Time-box the hunt: 30–60 minutes for a junior, less if you are blocking a release. Then ask. Sitting for a day is not grit. It is hiding.

Pack the question

Include:

  • What you are trying to do (the user outcome)
  • What you expected
  • What happened, including the exact error
  • Where it happens (local, CI, prod, which env)
  • What you tried, in bullets
  • Links: PR, logs with request id, screenshot of the URL
  • The smallest reproduction if you have one

Do not include secrets. Redact tokens.

“It doesn’t work” forces a debugging interview. The packed question lets someone pattern-match in two minutes. Often they will say “we don’t support that flag in staging” and you are done.

Ask a specific person a specific thing

“Can you look at my PR” is vague. “You wrote the billing retry last quarter; does this retry on 500s look like it will loop?” is answerable.

Public channel vs DM: if the answer would help others, public. If it is a user screenshot with PII, DM or a private channel. If you are blocked on prod, use the incident channel, not a random mention.

Do not @channel for a TypeScript error.

Show the work without a novel

Three bullets of what you tried is enough. A five-page autobiography is not. If you went down a rabbit hole, say “I tried upgrading foo; it didn’t change the error.” Do not paste 80 links.

If you have a theory, label it as a theory. “I think it’s a race because it happens twice as often on the larger pod count.” Then people can confirm or kill it. A theory is useful. A theory presented as fact is how you send a senior to the wrong file.

Timing and follow-up

If they are in a meeting, wait. If it is an incident, interrupt. Calibrate.

When they answer, try it before you ask the next thing. Close the loop: “that was it, the env var was empty in compose.” That sentence trains people to help you again. Silence after they spent 15 minutes trains them not to.

If it still fails, say what you tried from their advice and the new error. Do not restart at “still broken.”

Rubber duck first

Explain the problem out loud or in a draft message. Often you will see the missing await while writing. Send the message only if you still need them. Drafts are allowed to never send.

Help others the same way

When you know the answer, answer the packed question. Link the doc. If there is no doc, write the three lines in the README after. That is how the org gets cheaper.

If you do not know, say you do not know, and who might. Fake certainty is expensive.

Ego

You will ask “stupid” questions. The stupid question is the one you wait three days to ask. The other kind is how everyone learned.

If someone is dismissive, still pack the next question. You cannot control them. You can control the quality of the ask. Good asks also make dismissive people look unhelpful in public, which is a side effect, not the goal.

Async help and time zones

If the expert is eight hours away, the packed question is even more important. They will answer once per day. A thin question burns the day. Include “I will try X next if I do not hear by 15:00 UTC” so they can redirect you before you dig a deeper hole.

Record a 60-second loom only if the bug is visual. A loom of a terminal with no error selected is worse than a paste.

Pairing vs asking

If you have been stuck past the time-box and the system is unfamiliar, ask to pair for 25 minutes instead of a written novel. Pairing is expensive and faster for “I do not know where the spine is.” Written Q&A is better for “here is the error, here is line 40.” Choose.

When you pair, take notes. The point is that you can do the next one alone.

How not to ask

Do not demand they drop a customer call. Do not send four pings in five minutes. Do not paste 2,000 lines of logs; paste the error and twenty lines of context. Do not make them clone your branch to see a typo you could have shown in the PR.

What “I already googled” should mean

It means you searched the exact error, you opened the first three results, and you tried the one that matched your version. It does not mean you typed “react not working.” Include the query if it helps: “I searched ECONNREFUSED 5432 docker compose and tried healthchecks; db logs show ready; API still uses localhost.” Now they can skip the beginner steps.

If the error is unique to your company, search the Slack export or Notion if you have it. Then ask. “I searched Slack for billing retry and only found the 2022 thread” is useful.

After you are unblocked

Write the answer where the next person will look: a comment, a README, a Slack thread with a clear title. If the help was a tribal “oh yeah we always export JAVA_HOME,” that belongs in the README. Asking well includes leaving the trail.

Screenshots that help

Crop to the error and the URL. Include the time. Dark mode screenshots of a black error on black are useless. If the bug is a layout, a full page is fine. If the bug is a JSON error, paste the JSON, do not photograph it.

Offer a hypothesis last

Pack facts first, then one guess. If you lead with the guess, helpers argue with the guess and skip the error. Order matters. Error, then tried, then “I think it is the clock.”

Language for non-native teammates

Write the error in full. Avoid slang that hides the problem. “It’s borked lol” is not a packed question. Simple English is faster for everyone, including you at 2 a.m.

Artikals is a community-shaped site. DEV and Medium work when people write like they are asking and answering in public. Pack the question. Time-box the stuckness. Close the loop. That is engineering, not a personality test.

Leave a Reply

Your email address will not be published. Required fields are marked *