I used to think that the job of software engineer was to write code in front of the computer every day after getting a task, but the truth is that communication is one of the most important skills for any career, and software engineer is no exception. Whether in school or in the workplace, we may have to communicate with different people every day, and having good communication skills can make our life more efficient. What can we do to learn good communication skills? Asking questions in a smart way is the first step we should understand. Eric Raymond’s How to ask questions the smart way gives us a guide to effectively interacting with the open-source community. I learned a lot from this guide specifically about how to better ask questions in the technical community. I looked at the questions on stack Overflow and tried to check whether the questions were good or bad based on the rules mentioned in Eric Raymond’s guide.
I didn’t find the perfect good question in the community, but I picked two questions to make a comparison that gives us a more intuitive idea of how good or bad these questions are. The first question is: “Why can T not be deduced for std::span when passing a std::vector?”. The second problem is: “Queue and Stack Homework”. If we only look at the subject header, we can find that the first question is much more clear, while the second question makes people still unclear about the problem. The first question describes the problem in detail and sets four related tags. He provides code that shows errors, and he also shows his attempts to do so, “I have tried this with GCC, Clang, and MSVC; all fail. “So that people can quickly get into questions to help and answer. For the second question, his question is confusing. All he said in the subject header was “Queue and Stack Homework.” We can’t identify his concerns from it. Those words are too broad for us to do a filter of information. Second, he just dropped a part of the homework question in the problem description, and the explanation of the content in this sentence is available on the Internet (use Google search for the definition of “palindrome”). Third, he should be more specific about his problems rather than just saying, “I don’t understand.” Also, it is best not to post homework problems in the technical community because homework needs to be done by yourself so that you can learn from experience. Smart questions can help us establish effective communication to solve complex problems quickly. I think this is an important skill that every software engineer should have.