Specifying Questions Saves Lives (and Code)

27 Jan 2022

Needy for Knowledge

I am a very curious person - and I mean VERY curious. Once I get interested about a topic, I make sure that I fully understand every aspect of it’s inner workings. Throughout the initial COVID-19 quarantine in the United States, just like millions of other Americans, I had picked up on a new hobby. Unlike many Americans, however, that hobby was keyboards. I had developed the need to have the best keyboard that I could in terms of comfortability, performance, and aesthetics, all because it was a tool that I knew I would be using for the rest of my life. I had researched about every type of keyboard, the different sizes, the different switches, etc.

In case you were wondering, keyboards have different sizes that fit different needs. Someone without a lot of desk space would rather have a smaller keyboard than having a “Print Screen” button; thus, sizes like “60%” and “80%” have been more popularized.

After extensive research, I had realized that I still had no clue what kind of keyboard would suit me the best. I knew that I wanted an “80%” keyboard because my desk is miniscule in size; however, I didn’t know how I wanted the keyboard to feel.

Underneath the keycaps of mechanical keyboards are actuators called “switches”, these tell the keyboard whether or not a key has been pressed - kind of like a boolean, but in real life. There are different kinds and depending on which you get, affect the way that typing feels. This caused me to have lots of questions. I then realized, without doing all of the previous research that I had, I would not know how to ask any questions that would get me the answers I wanted.

Raymond’s Way

In my ICS314 class, we were introduced to an essay written by Eric Raymond called “How to ask Questions the Smart Way”. In this essay, he discusses that before any questions are asked about an issue, proper research needs to be done. All the knowledge regarding the topic needs to be gathered in order to explore an unexplored portion of the topic. For instance, this StackOverflow question about translating from RGB values to L*ab values clearly shows that the user has done a lot of research about the topic. They have experimented and tried validating their code against an outside source; however, they have come up on the wrong values when translating, which is the topic that is clearly depicted in their title. This allows any forums user to: 1) know what their topic is just by the title, and 2) know how to answer more specific to the forum posters’ scenario.

!Raymond’s Way

Jeff posted on StackOverflow about creating an object in C++ and returning it to JavaScript with v8. Or at least, that is my interpretation of the post because Jeff lacked any kind of explanation regarding what they expect the problem to be - if there is one - and there was no explanation on what Jeff wanted to happen regarding their code. They literally posted their code without much thought about how they could figure out the problem themselves. They post one question with the post, which is the same as the title. I’m honestly not sure how I would try and even go and figure it out because they don’t explain any context with their situation.

Software Engineers and Questions

The software engineering field itself has many different aspects and requires many technical fields of knowledge. One project can include utilizing JavaScript, HTML, CSS, and even SQL, all while each language contains many different libraries and APIs. No software engineer can possibly know every detail regarding every language, to the degree that they make no mistakes. This means that every software engineer needs to be adept at debugging code or working out why code does not work. As opposed to just copying and pasting code to StackOverflow, software engineers need to be able to explain what their code is supposed to do, what it’s actually doing, and why they think so in order to receive any kind of constructive feedback.