Blogs

The question is the skill

Watch a junior and a senior developer hit the same bug and you'll usually see the same tools, the same docs, and the same error message. The difference shows up when they open their mouths. Juniors tend to ask questions that hand the whole problem to someone else. Seniors ask questions that hand over a narrowed, pre-investigated slice of it. The gap isn't intelligence. It's a set of habits, and every one of them is learnable.

Here are five upgrades, each framed as the weak version against the strong one.

1. "It's not working" vs "here's the expected result and the actual one"

"The API is not working" contains zero information. Nobody can act on it. Compare: "I expect a 200 from the checkout endpoint but I'm getting a 400. The logs show a validation failure. Was there a recent schema change?" The second version defines success, states the deviation, and offers a hypothesis. Before you report any problem, write down what should have happened and what happened instead. If you can't fill in the first half, that's your real problem, and it's worth discovering before you interrupt anyone.

2. "It's failing" vs "it fails at this step"

"The build is red" describes the outcome. "The first two jobs pass, then it dies during dependency install, and the lockfile hash changed in the last commit" describes the location. Most systems are pipelines, and a failure has a position in the pipeline. Finding that position is often 80% of the diagnosis, and it's work you can almost always do alone: read the output top to bottom, find the first line where reality diverges from expectation, and anchor your question there.

3. "I tried everything" vs "here's the trail"

"I tried everything" nearly always means "I tried two things and got frustrated," and everyone who hears it knows that. The useful version is a short log: "A threw a null reference, B failed on auth, C fixed part of it but not the final response, and here's where I'm stuck now." This does two things. It stops your helper from repeating your dead ends, and it forces you to organize your own attempts, which surprisingly often produces the answer before you finish writing the question. Writing the trail is debugging.

4. "How do I fix it?" vs "how does this actually work?"

When a query is slow, one developer asks what to change. Another asks which index is used, what the planner chose, and how many rows get scanned. The second developer is slower today and faster for the rest of their career, because the understanding transfers to the next hundred slow queries while the fix transfers to none of them. That said, this one needs judgment. During an incident at 2 a.m., take the fix and schedule the understanding for daylight. Depth is an investment, and investments have a right time.

5. Staying quiet vs asking early

The source article I'm building on frames this as "seniors ask early," and that's true but incomplete on its own, because it seems to contradict takeaway 3. If seniors investigate before asking, how are they also asking early? The resolution is that these apply to different situations. For clarifying questions in a meeting ("which service owns this data?"), ask immediately. The cost is ten seconds of mild embarrassment; the cost of silence is building on a wrong assumption for a week. For debugging questions, investigate first, but timebox it. A common rule is 30 to 60 minutes: push hard on your own, and when the timer runs out, ask, bringing your trail with you. Never asking and asking instantly are both failure modes. The skill is knowing which clock you're on.

Why this matters more than it looks

A well-shaped question is a work sample. It shows how you decompose problems, what you verify before speculating, and whether you respect other people's time. Over a few years, that reputation compounds into the thing that actually separates seniors from juniors: people trust you with ambiguity. And the habit costs nothing to start. Next time you're about to ask for help, spend two minutes turning "it's broken" into expected result, actual result, failure point, and trail. That's the entire trick.