Software development is a team game. And no one on the team has all the answers. Sooner or later, you will find yourself needing to ask a question. But you know how to ask questions! Right? You’ve been doing that your whole life. How hard can it be? Literally, a child can do it. Well, it turns out asking questions is something that you can improve. I have put together the best tips and tricks I have for asking the questions, the right way.
Do your research
Before you ask any question, you have to do a bit of research. Look at the docs, do some form of googling. If you have any wiki docs, give those a quick read. You may be lucky and find the answer.
If you can, try a few things. Build an MVP of whatever you want to ask. Even if it doesn’t work, then you have a lot more context and you should be able to ask a much better question.
Chose the right medium
Now that you know what you need to ask, it’s time to think who you are asking. Who has the knowledge you are looking, or who can point you in the right direction? Different people prefer different mediums to receive questions. Some would rather batch the questions and email makes that much easier, others like the speed that instant messaging brings. There are people who would rather talk on a call, and there are those who always prefer a face to face conversation. Knowing what medium someone prefers to receive a question, makes answering your question easier and more likely to get answered.
It’s even better if can you include a timeframe with your question. Include things like “I will need the details by 2PM today”. People have their own tasks to deal with, and it’s not fair to always expect them to be available to answer your question. If you provide them with a reasonable timeframe, it allows them to schedule time for your question or let you know if they cannot answer in time. Try and give as much time as you can and give a reason for the timeframe “I have a question about X. I can work on Y for a while but if I don’t get this fixed I expect to be blocked by 2 PM”
Respect people’s time
Other people have a job to do and to as well. Showing that you care about your colleagues and their time is a great way to improve a chance of getting a response back.
My first advice would be to remember the answers you’re getting. There is no fun in answering the same question over and over, particularly when it comes from the same person. Pay attention when someone answers your question, and remember the answers for the next time the same issue comes up.
If you’re worried about asking a stupid question (spoiler alert, it probably isn’t), or if it feels like the question is too simple and you should already know the answer, include your research in the question. This serves three purposes:
Firstly, it ensures that you do the research, and this is always a plus.
Secondly, it shows to the person you are asking that you put in some effort before asking the question. It’s always a good idea to show that you put in some effort, rather than just assume the other person can read your mind.
Lastly, it allows the other person to take a look at your thought process. You may have missed a step somewhere, or there is a neat trick you just don’t know yet, and you can benefit from.
Every question has some built in assumptions. It’s a nice exercise to take a step back and identify what those assumptions are. And them, add them to the question. You might find out you’re trying really hard to solve the wrong problem.
A good question would look something like this: “I have a question about X project! I’m getting Y error when I try to run Z. I tried googling the error message and I did not find anything useful, I read the docs, and they don’t seem to mention this error. I’m using a Windows machine, running node 12.18.3. I still have some other work I can do by 2 PM, but after that I will be blocked until I manage to get this working. Let me know when you have a few minutes to do some pairing and hopefully solve this. “
I truly believe that, deep down, everyone enjoys helping out when they can. The trick is to make sure your questions don’t get in the way of their priorities. You want to make helping you as easy as possible, and people will love you for it.
You’re not writing code, you’re solving problems