Riddle Me This, Riddle Me That

10 Sep 2020

Whenever the Riddler had a puzzle for the Batman to solve, he would often use the catchphrase "Riddle me this". In the same sense, many aspiring software developers use the platform Stack Overflow to get their own problems solved, but many times these questions pale in comparison to what the Batman had to solve for The Riddler. This reminds me of the idiom "ask a stupid question, get a stupid answer. There are right ways to ask a question and there are wrong ways, and for various reasons, people don't often put the thought behind their questions before they ask them. This can lead to "stupid questions" being asked, wasting time for both the asker and the askee. It is important for Software Engineers to ask "smart questions" to both further their learning and to show that they are actually trying to solve the problem instead of passing off the burden to the people they are asking, because solving problems are the keystone of what makes someone a software engineer.

What Makes a Question Good?

In general, "smart questions" are concise and have a precise goal in mind and can further the education of both the asker and everyone else with a similar problem. One example would be <a href= https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-processing-an-unsorted-array>this question</a> about the runtime performance of a sorted array vs an unsorred array. The asker presented two examples of arrays and described their runtime performance which happened to be more than 5 times faster (11 seconds vs 1.9 seconds) after adding one line of code that sorted a large array before processing it. The asker made a good point of trying out various scenarios and it paid off because the answer was a "smart" one as opposed to a stupid or sarcastic response. This particular question helped me learn about processor branch prediction with a great explanation from one of the responders, as it was highlighted as a correct answer leading me to the post quicker.

A “Stupid” Question?

By stark contrast, there are also "stupid" questions like <a href= https://stackoverflow.com/questions/63840573/can-anyone-please-convert-this-python-code-to-vba>this one</a> in which the poster is essentially asking someone to do his homework for him, translating a snipet of code from python into vba. This is an example of a question that does not result im any sort of learning because the poster can simply copy and paste the answer (which is considered cheating or plagiarism) and likely won't even review the code to see how the responder translated the code into the target language. This also does not provide any learning for anyone else that comes accross the code because it does not provoke any thought to how one might go about doing something similar in the future. It is important for software developers to avoid "shortcuts" like these because in the long run it will only make it take longer if they have to debug the code or write anything else in VBA in the future.

Education for the Future

Asking proper thought-provoking questions can benefit the software engineering community as a whole, because even future generations of engineers can learn to avoid the same types of problems with a simple Google search. By showing that you are putting in the effort before you ask a question, you can let other people augment your efforts by building on them. Without a strong foundation of a question, it only makes sense that the answer would flop. In this sense, I feel like The Riddler was actually helping Batman by exercising his mind, and one can only stand to gain by improving themselves in this way.