← All writing
Craft · · 7 min

Ask a question that gets answered

Three openings that guarantee silence, and six things to include instead.

Careers Culture

The one that got answered:

Trying to get the filter state into the URL so it survives a refresh. Expected history.replaceState not to fire a popstate, but the listener runs anyway and re-reads the params, so the filters reset. Tried the flag-and-ignore approach and it works but feels wrong. Chrome 138, this is the router in search.js:40. Is there a proper way to distinguish my own updates, or is a flag the accepted answer?

The one that didn’t:

anyone know much about the history API?

Same person, incidentally, two weeks apart. Second one first.

The three that guarantee silence

“Does anyone know about X?” The meta-question. It asks people to volunteer before they know what they’re volunteering for, so the only safe answer is not to reply, because saying yes might commit you to an hour. Anybody who does know about X is now weighing an unbounded obligation against carrying on with their afternoon.

Ask the actual question. If somebody knows the answer they’ll say it, and if they don’t they’ve lost eight seconds.

“It doesn’t work.” No reproduction, no error text, no statement of what was expected. To answer this, the reader has to conduct an interview: what doesn’t work, what did you expect, what did it say. That’s several rounds over an hour, and most people will not start.

A wall with no question in it. Four paragraphs of context, a screenshot of an entire screen, and no question mark anywhere. The reader has to reverse-engineer what you want, and they’ll assume you’re thinking out loud rather than asking.

And a fourth, not about format at all: asking in a direct message. It halves the chance of an answer, because one person is either free or isn’t. It puts the entire cost on that person. And the answer disappears into a private conversation instead of being findable by the next four people with the same problem, which is the thing I was going on about back in 2017 when everything moved into channels.

"Does anyone know about X?" asks people to commit before they know what to. The only safe reply is silence.

What to put in

Six things, and the first is the one people skip.

What you’re trying to achieve. The goal, not the mechanism. “I want the filters to survive a refresh” rather than “I’m trying to get replaceState to behave.” About a fifth of the time somebody replies that you don’t need to do that at all. That’s the best possible answer and is unavailable if you only describe your current approach.

What you expected. This is where the wrong assumption lives, and it’s often visible to a reader in one line. Half the answers I give are “your expectation is the bug.”

What actually happened, verbatim. The exact error text, copied, not paraphrased and not screenshotted if it’s text. Somebody can search a copied string.

What you’ve already ruled out. Which saves them suggesting it, and which signals that you’ve done some work, and which you already have written down if you kept the notes file I recommended in 2020.

The smallest reproduction you can manage. Not the whole project. A person is much more likely to look at 15 lines than at a repository, and shrinking it is usually how you find it anyway.

And a specific ask. “Is there a proper way to distinguish my own updates?” is answerable. “Any ideas?” is not.

Writing it solves it, a third of the time

The thing nobody warns you about: you’ll be drafting this, get to “what I expected,” and stop, because you’ll have noticed that your expectation was wrong.

That happens to me perhaps a third of the time and it used to feel like wasted effort. It isn’t. It’s the same mechanism as explaining a problem out loud to a colleague, and the same mechanism as the reproduce-and-shrink method: stating your assumptions in order forces you to look at each one, and one of them is wrong.

So the writing is doing work whether or not you send it. Which is a good thing to know when you’re deciding whether to bother.

How long before you ask

The honest arithmetic, which people get wrong in both directions.

The junior instinct is to keep going for four hours rather than admit to being stuck, because asking feels like a status move. The senior instinct is to say “just ask sooner,” fine advice that doesn’t address the reason.

What’s worked for me as a rule: ask when you’re genuinely stuck and you have no next hypothesis to test. Not when it’s hard, and not on a timer. If you’re still generating things to try, keep going, because that’s the method working. When you’re out of ideas and are down to changing things at random, that’s the moment, and it’s usually somewhere between 30 minutes and an hour.

And it’s worth noticing what it costs. An hour of your time against five minutes of theirs is not a close call, and it’s the team’s hour either way.

And the other side

Because most of the responsibility here belongs to whoever answers.

Answer in public. In the channel, not the DM, so it’s searchable. I have found answers to my own questions from three years ago this way more than once.

Answer the question, then say how you’d have found it. “It’s replaceState, and the way I’d have got there is the spec’s note about popstate firing only on navigation.” The first part unblocks them and the second part means they don’t need you next time, which is the whole job.

Never reply with “have you read the docs.” If the documentation had contained a findable answer, we wouldn’t be here, and the reply’s actual content is that the question was beneath you. Same for “just search for it.” If you don’t have time, say you don’t have time.

And give people a number. I’ve said this before and I’ll keep saying it: telling somebody they should be asking you roughly once an hour for their first two weeks is worth more than any amount of “my door is always open,” because it converts permission into an expectation, and an expectation is something you can meet.

Why writing it properly works

The four-minute answer, for what it’s worth, was that a flag is indeed the accepted answer and everybody hates it.

Which is a completely satisfying outcome: not a clever solution, just confirmation that you’re not missing something, delivered by somebody who’d been through it. That’s most of what asking gets you, and it’s worth an enormous amount, and you only get it if the question is answerable.

Read similar posts
8 min

Things I unlearned

I read a post I wrote in 2015 and found the person who wrote it insufferable. That turns out to be the useful part of keeping an archive for 11 years.

6 min

Nobody's leaving now

Eighteen months ago it was six recruiter messages a week. This month I've had one, and two of the three people who left have been made redundant.