When I get stuck on a computer thing, I tend to ask a question in an irc channel or Slack or Zulip.
Sometimes it takes a while for my question to be answered. This is OK! Sometimes the act of asking the question helps me get unstuck. Often I end up making some progress after asking the question. At this point I can say “nevermind, I don’t need this question answered anymore,”
or I can wait for an answer anyway. Sometimes even if I say I don’t need an answer, someone will have been typing up a response already and be excited to share it, so I can ignore the their response instead.
And sometimes the answer is still useful - maybe they suggest a different solution than the one I found!
Often before I the answer back, I make enough progress to come up with a new question!
If I’m asking a specific person these questions, it might especially make sense to cancel the first question so they can focus on my next question.
But if it’s to a group, this might not get me my second answer any quicker. I might as well read these answers to the questions I’ve figured out.
If I’m trying to value the question answerers’ time, I might limit myself to one question every 10 minutes. If I have more than one question while in my 10 minutes cool-down period, I’ll ask the most recent one since it’s the most relevant.
If I want a response faster from a single question-answerer that doesn’t listen to me when I try to cancel previous questions, I might wait a bit each time I have question to see if I come up with another more relevant one.
For a single dedicated question-answerer that won’t stop what they’re doing do answer a new question, this might get me the answer to my latest question more quickly on average, despite this added self-imposed delay.
If getting a quick answer to an earlier question would still be somewhat useful, I might immediately ask the first question, resorting to the waiting-before-asking strategy only when the question-answer is busy answering a question.
A similar approach ignores the time between questions completely, instead keeping at most a single question in flight:
If the transmission of questions and answers takes a significant amount of time and I want to keep the question answerer as busy as possible to wring the maximum amount of knowledge out of them, I might instead try to keep up to two questions in flight; depending on the relative value of old responses, the profile of question answering times, and the transmission times of questions and answers.
I do have a real question though: what are these techniques called?
- cancelling a request: cancelling
- limiting to 1 request per time period: throttling
- waiting for fixed time after each request to replace: debouncing
- maintaing no more than 1 request in flight: ?
- debouncing, but no delay if no request currently in flight (letting the first request through un-debounced): ? (“debouncing, letting first request through,” “debouncing while a request is out”)
- maintaining no more than n requests in flight: ?
Let me know!