Questions - the Good, the Bad, and the Ugly

07 Sep 2017

I’m sure we’ve all been that person before, the scrawny, wide-eyed, clueless middle-schooler roaming around on the internet for answers to that impossible homework problem, stumbling across a random help forum, and posting something like “HELP!!!!! I can’t factor [insert difficult quadratic equation here]!!!!???”, only to find that - of the billions of people connected to the internet and the hundreds of thousands participating in said forum - NO ONE has bothered to give you a decent answer. You sit in front of the screen for several hours picking your nose, refreshing your browser every two seconds, watching your URGENT, MATTER-OF-LIFE-AND-DEATH question slowly sinking to the bottom of the list, soon to be forgotten forever. After five hours, you see two new responses! Your luck has finally changed! You open your thread, only to find a dry, cringeworthy math pun from another bored middle schooler looking for entertainment, and a crude but ironic remark from an unemployed middle-aged man about how kids nowadays are too lazy to think or do anything for themselves. “Everyone on the internet is so rude”, you mutter to yourself, as you sink back into your chair and fling a crusty yellow dragon across the room. And while you certainly weren’t wrong about that, it isn’t until much later that you realize that there’s more to the picture than just internet forum dwellers being downright rude.

The importance of asking the right questions is something that I did not realize until, well, a few days ago. I generally stay out of forums because I too used to be this middle schooler, and I too have been very discouraged by all of the, in my opinion, obnoxious people that the internet is so cluttered with. In help forums especially, philanthropy is something you generally don’t find. From my own experience, often times, the people who actually know enough to provide useful help consider themselves a noble species undeserved by mankind and believe that unapologetically belittling the “newbies” - a term they use to describe people who do not share their profound understanding of the topics in question - is a key part of their sophisticated culture, and that one must prove him/herself worthy of their divine attention by asking questions perplexing enough that they get some sort of entertainment out of ansewring them (this type of attitude is particularly evident in this author’s writing). In all seriousness though, the truth which I did not realize until very recently is that if you do not ask a clear, in-depth, detailed question that shows that you have spent many hours trying to find the answer yourself first, you will simply not recieve an answer.

Now knowing this, we might think it is surprising that many adults still ask questions the way the nose-picking middle school versions of ourselves did, but Stack Overflow is full of examples of this. Here is one such example. While the asker of this question most likely knows what he/she is doing, nobody else does. The question is asked only in the subject heading with improper grammar, and the body of the message is entirely Java code with minimal explanation of what is being attempted. As a result, this thread only recieved negative votes, and the only responses are things along the lines of “what is your question?” Hence this is a very extreme but good example of a poor question recieving poor responses. There are many other less extreme examples of questions that aren’t necessarily bad (average people like myself merely seeking answers to small problems), but the fact that they are either badly written or duplicates of other questions generally diverts attention away from them, yielding not-so-good results.

Finding examples of good questions on Stack Overflow is a little more difficult, but they do exist. Here is one such question. The asker of this question wants to know why an unsorted array takes longer to process than a sorted array, even thought the order of the items being processed shouldn’t matter for the specific function. This is, first of all, an interesting question that applies to many people! I myself would like to know the answer, and obviously many other people feel the same. This thread has over 1 million views, almost twenty thousand positive votes, over eight thousand favorites, and has been active for over five years! To add to the effectiveness of the question alone, the asker provides lots of information of what they are trying to achieve - they provide details like the miliseconds it took to process a sorted vs. unsorted array to show that the sorted array took less time in more than one language, as well as their code which is very well commented and even brings attention directly to the lines in question so that hardly any searching is needed. The answers this thread recieved are amazing as well - one talks about Branch Prediction, the idea that the processor “guesses” the next input, halts and rolls back when wrong guesses are made, and continues speedily if correct guesses are made. This answer was complete with picture examples - relating the idea of Branch Prediction to a train going down a track and guessing which direction to proceed in a fork. This thread is a prime example of the outcomes of asking a very good question - I learned something useful and interesting just by reading the first two posts!

These two examples should lead us to the conclusion that, as obnoxious and condescending that the earlier mentioned author might have seemed in his guide to asking good questions on computer-related forums, all of the very bluntly-worded advice he gives is very applicable in the open-source community. As software engineers, we are guaranteed to run into problems that we’ll need a little outside help to solve, so instead of avoiding Stack Overflow like the plague for the fear of being belittled with the rest of the “newbies”, I’ve found that mastering the art of asking good questions that will yeild good results is a valuable skill that will benefit us throughout our entire careers.