Mastering the Art of Asking Questions
Tags: interview, softwareengineering, developer, career
Published: 2024-05-21 16:39:52

"Learning how to learn anything is one of the most essential skills you can acquire in your life." As soon as I realized it, I started learning about it. And I found out that “asking the question” is one of the key branches of it. The more I dig down into “Asking Questions," the more it astonishes me. Some of the greatest individuals in the history of mankind have talked about its power, from unlocking the mysteries of the universe to self-improvement. Confucius, who is also a favorite philosopher of mine, said,

> The man who asks a question is a fool for a minute; the man who does not ask is a fool for life.

After learning for a while, I felt I should share some with you guys. As we are developers, I’ve written from our arena’s perspective. So, without further ado, let’s focus on the point.

**1. Paint the Full Picture:**

A question without background information is like a story without context. To articulate your question beautifully to others, consider giving background information about it. For instance, instead of asking, "Why isn't my code working as expected?”, say: 
"I've been crafting a web application using React, and I'm trying to implement a state management solution with Redux. My problem is that the state isn't updating as expected when I dispatch actions. Here's the relevant part of my code: [your code snippet]. Could you help me clarify what I'm doing wrong?”

With the addition of context, you help others grasp your problem better, which makes it a piece of cake for them to give you a useful solution.

**2. Be Specific and Clear:**

Don’t make it vague, ambiguous, or cryptic. Make it specific and as clear as possible.
Example of a vague question: "Can someone explain JavaScript closures?"
An example of a specific and clear question: "I'm trying to understand JavaScript closures, specifically how they work in the context of callbacks. Here's a code snippet where I'm struggling: [insert code snippet]. Could someone explain why the variable i is behaving this way?”

The quality of the answer depends on the quality of the question. So, don’t expect perfect and precise answers to a sh*t question.

**3. Show What You’ve Tried:**

Make your hands dirty before throwing the question at others. Do a minimum amount of brainstorming and debugging. Take assistance from LLMs, ChatGPT, and Gemini-like tools. Include in your question what you have done to get the result. For example:
"I've tried debugging with console.log, and I have noticed that the state is correct before the action is dispatched, but it doesn't update afterward. I've also checked that my reducer function is pure. What else should I look at?”

This demonstrates that you are not a goofy or noob developer. You’ve worked on it and tried to resolve it by yourself. And now you’re asking for help on the next steps.

**4. Ask One Question at a Time:**

We humans are extremely poor at memorizing multiple things at a single moment. And best at doing one thing at a time. So don’t overwhelm others by asking multiple questions at once. Write down all the questions on a list, sort them accordingly, and then ask them one-by-one to get the best possible output. For example, instead of asking, "How do I set up Redux, and can you also explain how to connect it to my components and how to debug it?”
Ask one at a time, like, "How do I set up Redux in my React app?”
Once you get the answer, ask your next question, and so on. By following this strategy, you show respect for the respondent's time and make it more manageable.

**5. Be Polite and Appreciative:**

Being respectful and polite is a fundamental trait of Homo sapiens. A simple "please" and "thank you" can make a huge difference. For example:
"Could anyone please help me understand why my state isn't updating in Redux? Thank you in advance for your valuable time.”
Remember that the people answering your questions are often doing so voluntarily. Showing appreciation can encourage more people to help you, and it fosters a positive community spirit.

By following these tips, you'll not only get better answers but also build a reputation as a thoughtful and assiduous developer. Stay curious, ask questions, keep learning, and spread knowledge.

I appreciate any feedback and suggestions you may have.