They can help you but they don't want to

26 Jan 2022

Computer Science is indeed a very broad field covering programming languages, software tools, different branches like artificial intelligence, human computer interaction, and it is always evolving. There is always a new tool, a new update, a new language available for us to learn and use. And with that increases the confusion as well. As a newbie in software engineering, I am learning that it is very important to find the bug on your own (or at least attempt to do so) before bugging others for the solution. With that being said, it is also important to know what the problem is, what the topic is and what question one should ask? Luckily I found this guide by Eric Steven Raymond, before I could embarass myself by asking “stupid” questions.

Mirror mirror on the wall Computer desktop in the study hall, am I dumb after all?

Sure enough, in high school, we are encouraged to ask whatever doubts we have, or we are being told no questions are stupid. But is this really true? In the article, Raymond boldly explains the idea of “smart” questions. When you are a software developer, a researcher or, in my case, a graduate student, communication and collaboration play a vital role in every project. Working in a team forces you to ask questions about other’s updates, source code or any explanation/question in general. But one should understand that they are not entitled to an answer. Just because your code didn’t work or a library in your code threw an error doesn’t mean you should straight up ask someone for help. Instead, this is a great time to think about the problem, go through the basics, search the answer on the Web or respective forum, discuss the problem with your friends, analyze how they are approaching the problem. And if nothing works, then ask your professor or an expert.

One of the surprising and possibly the best thing I learned from Raymond’s article is “experts will be able to tell from your questions how much reading and thinking you did, and will be more willing to help if you come prepared.” (This is the reason I gave my essay the title it has.) There are a plethora of web forums out there, with people asking all sorts of questions and it is interesting to note that some questions are more likely to get a response than others. And the reason is your ability to concisely explain the issue you are facing, what did you do about it, what errors you encountered while doing that, what platform are you working on, correct grammar. Shocking right! So yes, if we are still asking questions like "Help! This app is not working on my phone/laptop", then yes maybe we are dumb after all.

What’s “not smart?”

For example a question like this. One might say maybe he just started with a programming language and isn’t very familiar with the functionality. Fair enough. But if we notice he didn’t mention what platform he is working on, what the notebook model is, what error pops out on the screen (somebody already mentioned that the question is somewhat vague) or did he follow the instructions from the user guide, or the official documentation correctly? In response to this question, a reference to another question was posted, and we can immediately notice the difference between the two questions. The latter explains the problem more clearly and concisely, explains the steps he took and what error he got which shows that he knew what to do but didn’t know how? We are humans, and yes we make mistakes, miss out on few things and that is okay as long as you attempt to solve your problem and don’t demand for a solution to be shared with you.

What’s “smart?”

A little while back I was working on a project for which I had to use JAX, a tensorflow like framework, used for high-performance machine learning research. I never heard of it before and of course I wasn’t familiar with it at all. And since I was facing issues in installing the library, I started by searching for the issue on the Web and came across this question. Now I’m not sure if the experts will still count this as a smart question, but the way it was posed was quite neat. The user started the post with a clear header, mentioned the python version he was working with, his laptop model, what error he was getting, what he thought the reason could be, and what documentation he followed. And since Apple’s Mac M1 chip is a new software, a lot of apps, libraries and tools are not compatible with it and sometime have issues (but the developers are working on it).

Conclusion

The “experts” or “hackers” or “professional developers” have spent years mastering the skills and wants other developers to do the same. They want you to learn from the experience and help others with the same problems you faced, but in a positive way. For programmers working with continuously developing tools, asking questions the right way is an invaluable characteristic. This not only increases your chance of getting a solution to your problem but also help build up a better community in general. So go ahead, work on your code, find a bug, ask a question, but do it the right way!