The field of software development is one that is always met with issues to solve and questions to be concerned with. Someone who’s made something beyond “Hello World” will most likely see such challenges come to fruition, over and over again, no matter one’s skill set. To encounter such problems and to resolve them is the name of the game of software development and programming in general. Of course, there are multiple strategies and approaches to addressing hurdles, but when they are not enough in terms of understanding and comprehending, what spawns is the formulation of a question, and with every question should come with an answer. However, as software engineering is a craft in it itself, so too is the creation of a question in order to achieve the end means of a satisfying answer.
Eric Seven Raymond’s “How To Ask Questions The Smart Way” provides insight on the methods and strategies to formulate a question that will generate a response that will hopefully address a challenging roadblock. The important word to take note of is “hopefully” as the construction of a question may not yield a helpful answer. The forum site, StackOverflow is an online ground to which one can deploy their questions of concern. Raymond’s guideline of what constitutes a good question is a useful rubric of evaluation, and using it to judge the pool of StackOverflow questions will allow one to discover that not all questions are good questions. The most common topic of a poorly crafted question is often those that pertain to an individual’s homework.
Here is an excerpt from a StackOverflow post titled, “Homework Python Questions”:
“The code below doesn’t work and I’m very frustrated. I know the correct outputs should be $310 but somehow my code isn’t getting there. This is homework for an edex course intro to CS and Python. I’ve tried to comment what I think the code is doing but clearly i’m not right. Any help or hints would be very appreciated.”
Immediately from the first word in the title, the user violates the principle that one should not post questions relating to their educational assignments. Though while the user does acknowledge that he requests only help or hints and not answers, the topic title nor his text provide context on what users should be searching for. This, in turn, results in another violation regarding to attached code. To note the output without context is to give a destination without the directions to get there. The user also incorporates their emotions and asserting that their strategy “clearly” does not work. As a result of these violations, viewers and potential commenters are immediately lost on how to provide help. Though the original poster does provide clarification, to note it afterward is a waste of other people’s time. This question ultimately yielded the product of only one answer, to which that single answer is one that came from the original poster themselves.
As StackOverflow is a platform that may contain not so smart questions, the forum site is also a platform for smart questions as well. After all, such questions are what demonstrates the value of online community forums. Therefore, if there are questions that do not get users anywhere, then what is a question that gets them to a desired destination? To begin with, a smart question is one that does not center around the topic of one’s homework, but rather one that centers around one’s curiosity.
In a StackOverflow post titled “How does data binding work in AngularJS,”, the user goes into detail with his question:
“I haven’t found technical details on their site. It’s more or less clear how it works when data is propagated from view to model. But how does AngularJS track changes of model properties without setters and getters? I found that there are JavaScript watchers that may do this work. But they are not supported in Internet Explorer 6 and Internet Explorer 7…”
The rest that follows is a line of code. Though while the material itself is outdated to some extent (as Internet Explorer 6 and 7 are no longer supported), the question and its construction is one that serves as an example of a smart question under the guidelines of Raymond’s precepts. The question itself from the title is one that is clear and straightforward to which it notes the specific issue/curiosity at hand and the environment that it pertains to. The user also goes to extra lengths to reword their initial question in the body of their post in order to provide additional details and clarification. Thus, viewers have a clear understanding of what exactly the user is asking for. Additionally, the user also acknowledges that they have explored other sources of information in regards to his question such as documentation, and the exhaustion of such resources is a valid justification to put a question out in the appropriate forms according to Raymond. With these details that make up the user’s question, viewers have clear directions on where to go and how to answer. To that end, the end result is responses with meaningful information in which viewers have also gone to additional lengths to organize said information in a clear concise manner. On top of that, the formulation of the smart question is one that has prompted users to clarify and correct one another in order to build upon each other’s responses. In other words, a smart question as demonstrated is one that fulfills the very purpose of these online forums: to generate meaningful discussion amongst the user base. A model smart question such as the one above is an articulation of words that not only yielded a single meaningful answer that the user most likely hoped for but rather, a collection of meaningful answers that builds upon each other.
The questions examined above are those that are deemed smart and not so smart questions under the principles established by Raymond. As questions and answers are intertwined with one another, the relationship between the two is that of equivalent exchanges. A not-so-smart question will yield an intentionally not-so-smart answer. Yet, a smart question will yield an intelligently smart answer. Given the technicality and critical thinking present in the field of software engineering, typically the not-so-smart answers are never enough to satisfy one’s needs. Then again, in regards to the human mind in general, a not-so-smart answer is also never enough to satisfy one’s curiosity. Therefore, to receive an answer that would help overcome a particular problem or satiate one’s interest, one must grab the pieces to construct a satisfying product that is an insightful question. To formulate a question is a craft afterall. Words must be articulated in a concise manner, information must be clear and to the point, and context must be relevant. As someone who is beginning to properly dabble into software engineering, the question that I may ask now may not be entirely insightful at first. Yet, like with any other craft, with enough practice, the questions that I may ask in the future may be those that are to be exchanged with a satisfying answer.