Help build the future of open source observability software Open positions

Check out the open source projects we support Downloads

We cannot remember your choice unless you click the consent notice at the bottom.

Community series: On asking good questions

Community series: On asking good questions

2020-04-16 7 min

Asking questions is one of the most fundamental things about humans. Yet many of us manage consistently to get it wrong. Asking and answering questions is one of the most common types of interaction in any given community, so we want to help with making this more efficient (quick to the point) and effective (actually achieving the desired result).

Try, try again
Try, try again

Old truths

There’s a saying I like to regularly remind myself of: “Nothing is as cheap as another person’s time.” Every time I think about it, I feel I understand its simple profoundness a little bit better. We all have a limited amount of time available to us in a day, in a week, in a lifetime. Much of what we do in life is trading time for other things, usually different vehicles for time. Working – and using that money to buy a coffee, or tea – is a transaction where you spend time, and in return, get the time spent by a myriad of other people.

Asking questions is similar to that: You are trying to save time for yourself by getting someone else to spend time instead. The underlying assumption is that they would be quicker in coming to a solution than you, so it saves time overall. Yet the simple fact is that you’re spending someone else’s time.

No matter if you’re asking a question in the context of friends, family, school, work, or a community, there usually is something the person answering is getting back. A parent or teacher might be happy to see their students grow and learn; hopefully your manager would feel the same way (and if they’re not, to put it bluntly, we’re hiring). Someone giving professional advice would expect the exchange for money. Community members might want to see adoption of their project grow, gain new contributors, or simply believe they’re bettering the world.

But what they all have in common is a sense of accomplishment. And what they all want to experience is a baseline of respect and thankfulness.

Asking a respectful question

Respect can take many forms and many, maybe most, of them are highly specific to the culture and upbringing of the people involved. Respect across cultures alone could be its own series of blog posts, or ten-year university course.

But there are some universal forms of respect. Many, many how-tos around asking questions properly have been written, but they are largely proxies for the following:

Make an honest attempt to help yourself first. Signal that you actually made this attempt. Give the context and information necessary for the person to help you. Talk about your goals, not your strategy. Signal appreciation of the time and effort spent.

And ideally, pay it forward by helping others; maybe in a way that makes it visible to the person who helped you.

An attempt was made

There was an attempt
There was an attempt

Unless we’re talking verification questions (such as “Based on X, my understanding of Y is that Z is the case. Is this correct?”), asking a question is the result of either a failure of helping yourself or not bothering to try to help yourself.

Usually, unless money is paid, the latter form of question is not regarded very highly and for good reason: You’re trying to spend someone else’s time. So it’s important to make an honest attempt. What I like doing is asking myself questions.

Talk to the duck

If you ever had the situation where you just couldn’t figure something out, asked, and then it came to you all of a sudden, this is what this step is designed to prevent.

I walk myself through the counter-questions I would be asking if I were the one answering. “Did you try X?” “What was the result?” “Based on that, did you try Y?” I walk myself through those and, quite often, don’t need to ask my question anymore as I helped myself.

Some of you might know the same technique under a different name, which has a slightly different angle but pursues the same goal: rubber duck debugging. It’s basically the same: Have a conversation with yourself in your head and try to figure it out together. There’s strength in numbers, after all.

On the 101 side of things

Sometimes you simply don’t know where to start, and that’s OK. But then it’s important to state this. “I don’t know where to start. Please give me some initial pointers so I can try and figure it out.” Just recently, I asked this in the KDE IRC channel, wanting to make KDE behave like i3 in some regards. And other than “I will need global hotkeys,” I couldn’t google the right term, didn’t know where to start, and said as much. No shame in that.

And, sometimes, instead of pointing out resources, someone will simply solve your problem for you. But that’s not always the case and should not be expected.

Document the attempt

So you tried your best to figure it out, but you couldn’t. That’s somewhat annoying, but it’s quite useful. You now have more context to understand future explanations. And you have a trail of what you tried and what didn’t work, which resources were partially useful, and which were not.

Writing this down serves three purposes at once.

Now you’re three people

By writing things down after the fact, you’re basically bringing structure into your conversations with yourself. You will be restructuring existing information, basically taking a third mental round through the topic. I can’t count how often I found my own answers during this stage.

Signaling the attempt

By offering, or giving, short information about what you tried, you signal that you invested the time and yet could not solve it. As someone who has answered questions on IRC and mailing lists for more than two decades, I find this to be one of my main deciding factors on if I will engage with a question or not. It shows you value my time, even though we might never have interacted before. It also signals you’re willing to invest more time and thought in case I have follow-up questions.

Giving context

By skimming through what you did before, anyone helping you can cut off some mental strands, or dig deeper into others, a lot more quickly. They can walk through part of your issues at full speed, coming to the interesting parts that much more quickly.

Goals, not paths

Similar to what we talked about previously, about needs and strategies, you should be talking about your actual goals, not only the path you chose. The path is important information, but it might not be the correct path. It’s also quite hard to think yourself into an intricate path someone else took down a winding round of trial and error with the help of their limited understanding. If that sounds unpleasant, that’s because that might be the other person’s experience.

It’s fine, and useful, to talk about what you tried and why – see above as to why – but it’s also important to understand what actual goal you are trying to achieve.

Be aware that some people only have a single mental hammer and everything looks like a nail to them. It’s OK to respectfully, but clearly, state that you’re not interested in their suggested solution or alternative goal. It is also OK if they choose not to try to help you based on that.

Signal thankfulness

And finally, even if you didn’t get the help you wanted, it’s important to signal thankfulness. Someone took the time to try and help you. By being someone pleasant to interact with, you’re increasing your chances for engagement the next time. Plus, it’s just basic human decency.

If you’re wondering, one might say asking yourself, why this blog post is very much different from the usual pieces on asking questions, there are several reasons.

First and foremost: Many of them are quite rude and based on the assumption that the reader is stupid. I don’t like that.

Secondly, I found it way more effective to think about the context and surroundings of the question and problem scope than the actual question itself. Simply because this means you will answer most questions yourself; which, almost by definition, makes the remaining questions more interesting, and thus “better” from the point of view of the person replying.

And last but not least, if I’m just reiterating what others said, why bother writing this in the first place?

I’m not stupid after all. And neither are you.