Have you ever been in a situation where you are in a rush and trying to open a door, but then you have this bundle of keys and do not know which one opens the door? I think most of us, if not all, had a similar experience like this. Looking for the right key to open the door, among other keys, is a solid analogy to formulating the right question in software engineering. With the rapid growth of the software engineering industry, problem-solving, programming languages, and concepts are bound to get more complicated (and it is already complex right off the bat). In connection with this, asking for help from other people who know more about the field (many of them exist) might not be a bad idea if you find your back against the wall solving a problem or figuring out the hows of a new programming language you are trying to learn. Therefore, asking questions the smart way is vital to a computer programmer trying to venture into the deep and confusing world of software development, along with good problem-solving skills and solid logical thinking. However, mastering this skill may not be as easy as it sounds, based on “How to Ask Questions The Smart Way” by Eric Steven Raymond.
In programming, more often than not, we encounter problems that we do not even know or at least have an idea about why it exists. This is one of the many reasons why asking meaningful questions and hoping for the right help is a tough job. Another possible reason is associated with the nature of how we ask questions. I have tried to look up some stupid questions posted in StackOverflow, and I luckily found a weird one. In this question, the author asked why different versions of C++ compilers reject their program. However, how the author showed the program is rather unorthodox because it was handwritten. This garnered various forms of answers, from totally sarcastic ones to profound solutions. One response was in the form of a handwritten code. Another one pointed out that maybe the symbols such as equality, parentheses, and curly braces were drawn a bit off (implying that his handwriting may be the problem). Due to the nature of the question asked, the responses became sarcastic. This shows that even though the author did enough work to try and solve the problem on his own (which complies with one of the guidelines mentioned in Raymond’s essay), the way he posted his question drew various sarcastic responses, albeit he/she managed to receive one well-formulated answer.
We can only open the door right before us when we find the right key. This is why asking the right question as a software developer has become a cornerstone to success. I remember my friend telling me about some of the perks of being a Computer Science major, and she mentioned that “You can find free resources anywhere.” It is indeed everywhere and is present in different formats: videos, online courses, and online forums. In high school, I came across a meme that alluded to Stack Overflow being better than attending school. I did not know what the meme meant before, but now I know why. Stack Overflow contains many questions a programmer may generally have and answers to them. I believe that because of the note-worthy questions posted in Stack Overflow, experts could give well-thought-of answers, which in turn became helpful to other people who encountered the same problem, hence the meme. I found one example of a good question. The author was asking how
for... of loop is different from
for... in loop. For context, this question was posted eight years ago, so documentation to ES6 might have been limited at the time. Going back, the author described the
for... in loop (which he was used to) and presented a code block showing both variations of for loops. He explained what
for... in does and seemed intentional about asking how
Ideally, software development is not done by only one individual. Most software programs that changed the world were created by people collaborating, learning from each other, and solving problems through meetings and brainstorming. In between these processes, I believe, are questions being thrown to provoke everyone’s mind to think differently or to satisfy one’s curiosity. This is why, as future software developers (possibly), we should not waste our bountiful resources and ask questions to help us get unstuck or have a different perspective on the problems that arise. However, at the same time, we must remember that just as wrong keys won’t open a door for us, asking a stupid question won’t get us a keen answer either.