Levels and expectations
Asking good questions
Show what you tried, time-box being stuck, and batch questions so help is cheap to give.
Questions are a skill, not a confession of weakness. Teammates feel the difference between "I am lost" and "I got this far; here is the gap." Julia Evans's How to ask good questions is the standard reference. The habits below are what people actually notice.
Walking through a better ask
Show what you tried. "I cannot find where invoices are created" is weaker than "I traced POST /invoices to InvoiceController#create, then into Billing::Create, but tax seems to apply in a callback I cannot find — I checked after_create and the tax package. Where should I look next?"
Time-box being stuck. A useful default: 30–60 minutes of focused investigation — docs, code search, one experiment — then ask. Waiting half a day to "not bother people" wastes their calendar later when you are more lost.
Batch questions. Collect three non-blocking questions for a buddy sync or Slack thread instead of pinging every twelve minutes. Mark which are blocking a deploy versus curiosity.
Aim at the right person. Prefer the person who last touched the code, or the on-call for that service, over the most senior engineer in the company. Spread load; get fresher context.
Ask for the map, not only the answer. "What is the intended invariant here?" and "What would break if we changed this?" teach more than "what should I type?"
Trade-off
Ask now vs dig longer. If the cost of being wrong is an irreversible production change, ask earlier. If the cost is only your time and the question is navigation, dig until your time-box. Never ship a guess that could corrupt data to avoid a Slack message.
Common mistakes
- Question flood. A ping on every symbol trains people to mute you. Time-box and batch.
- Hiding for half a day. Courtesy that makes you more lost is expensive for everyone.
- Asking the most senior person by default. The last author or current on-call usually knows more.
Check yourself
You have been stuck for 20 minutes on where tax is applied. Ask now?
Not yet for a navigation question. Dig to 30–60 minutes, then ask with the path you already traced.
The change could corrupt invoice rows if you guess the invariant. Ask now?
Yes. Irreversible data risk means ask before you ship a guess.
Key takeaways
- Show the path you already tried. Helpers can start from your last step.
- Time-box stuckness at about 30–60 minutes, then ask.
- Batch non-blocking questions; mark what is blocking.
- Ask earlier when being wrong is expensive.
Further learning
How to ask good questions (Julia Evans)How to ask good questionsJulia EvansRelated
Ramping up on a new team and codebase
Your first 90 days: read code by tracing paths, ask well, ship early, and map people as well as systems.
Reading an unfamiliar codebase
Trace one request from an entry point. Tests and git history beat reading src/ top to bottom.
Written and verbal communication
Lead with the point, write for skimmers, and adjust depth for engineers, PMs and executives.