On Problems vs. Questions in Competitive Programming: My solution

Правка en1, от Ari, 2021-05-26 21:05:01

TL;DR: The most reasonable solution to the problems vs. questions debate is to use none of the currently accepted terms.

As we have seen many times, particularly over the past few days, the task of assigning a label to the activities we perform as competitive programmers is a bigger problem than one might think at first. Time and time again we have seen people questioning what we should call our activities, often to the point of eliciting some rather harsh responses.

To give some context to this discussion, I will focus on two of the terms that members of the community have adopted over the years, problems and questions. (Sorry task lovers! You have some fine points for sure, we frequently talk about subtasks rather than subproblems or subquestions after all :P). All quotations here are posted anonymously, but if you want to claim ownership of one of them or have one removed, just tell me. If you are familiar with the arguments, feel free to skip to the final section of the blog.

The semantic argument

Cause question is just a wrong word for describing algorithmic problems. Question is meant to be shorter and in some sense more lightweight like "could you pass me the salt?" or "why is the sky blue?". When you are given whole story and presented a convoluted statement "problem" or "task" seem much more appropriate and serious and everybody except Indians recognizes that difference. It's not like it is fundamentally wrong, but it somehow feels worse

Quiz sounds like something that can contain questions, because you can answer them. There can exist even algorithmic questions like “what’s the complexity of Dijkstra algorithm?” but problems request something like “write a code which solves this problem”. There is even a difference between “solve this problem” and “how would you solve this problem?”, where the first one is a request and the second one is a question. On a quiz you can give an answer to a question, but on a contest you would rather call it a solution than an answer.

2 synonymous words do not need to have the exact same meaning. It's true that "problem" and "question" both test knowledge. But "problem", especially in competitive programming, also tests skill, and "question" does not.

The gist of this argument is that the terms "problem" and "task" refer to a significantly more complex pursuit than the word "question", which makes them more suited to the complex intellectual pursuit of solving algorithmic problems. Even though language is highly dependent on the context in which it is used, and I personally believe that dictionaries and the like should be descriptive rather than prescriptive, here are some dictionary definitions (from Merriam-Webster) to give context to this argument.

I believe the definitions closest to what we are looking for are 1a and 1b.

Here I believe the first definition is the one we are looking for.

There is another different semantic argument, which I admittedly was not familiar with until yesterday, which is about how the words we use sound in the context of full sentences. One part of this is simple. If you were presented with the blanks "_____ problems", "_____ tasks", and "_____ questions", you would likely come to something similar to "solve problems", "complete tasks", and "answer questions". As "solving" is most similar to what we consider we do in competitive programming, it might seem more correct. The second part of this is a bit more subtle. Consider the sentences

Codeforces has 6651 problems

Codeforces [problemset] has a lot of problems

This is a perfectly normal assertion for a competitive programmer, and yet to an outside observer, it can be interpreted as saying that Codeforces is an extremely flawed website with an inadequate problemset. Point is, the other meanings associated to words matter, and for something like this the word "question" does not carry the negative connotation that "problem" does.

The racial argument

The first screenshot is enough. "question" instead of "problem" or "task" — Indian detected.

Wat? No, it doesn’t work like that. People do grammar mistakes, but I’ve noticed that this one is made mostly by Indians.

I'm American, and I say "problems". However, it's my impression that "questions" is a common term in much of the Indian competitive programming community, and I don't think it's right for a high-rated, influential member of our community to use their platform to constantly point it out and make fun of it. Indian English is different from American English or British English, but it's just that -- different, not wrong.

There is another angle to this question, which is a significantly bigger problem, and as unfortunate as it is, the task of describing the context of this debate would not be complete without discussing it. It is no secret that many members of this community are heavily biased against members from India (see blog posts such as this and this).

Why does this happen? Well, the use of terms such as questions instead of problems, or other terms such as giving or writing a contest is one of many stereotypes associated with competitive programmers from India, the majority of which are negative and perpetuated by the constant mention of them by members of the community. Even if one doesn't have extensive knowledge of the community it takes no more than a few simple google searches to realize how overwhelming the distaste towards Indian users in particular is.

One may argue that pointing out the use of "questions" instead of another term is not racist, as the distaste doesn't come from any particular race or nationality. However, context matters, and the mention of such terms as "Indian English", combined with the generalized distaste towards the Indian community gives additional meaning to such callouts, which is not reasonable to ignore.

The solution

Luckily, the English language is vast, and we don't need to restrict ourselves to one or two words. Let's take a look at theasaurus to try to find some other terminology that we can use. When I search "problem" and look at the relevant meaning, I get the following terms:

There are many great terms in here (man, that twister sure was difficult!). But of all of these, I believe the first one listed, bugaboo to be the best. Here is my analysis of this term:

Pros

  1. The word itself sounds extremely funny.
  2. According to theasaurus, it is one of the most relevant synonyms of "problem".
  3. Moreover, if you look the word up in more traditional dictionaries, you will find multiple definitions which range from being completely unrelated, to nonsense, to straight-up contradictory. This is to say that very few people know what the word means, thus freeing us from any associations such as problems being complex and questions being simple or whatever.
  4. The word is very uncommon, which means it is very unlikely for users from either native English or international communities to know the word, freeing it from racial associations.
  5. It's just really funny lol. "I solved four bugaboos last round".

Cons

None whatsoever.

So yeah, that's it, by adopting a different term, we can free ourselves from this seemingly endless debate and use the time we save to be happier instead. Of course, I don't expect the community to adopt this term soon, or ever, but for those of you willing to join me, I look forward to solving a lot of bugaboos with you in the upcoming rounds!

Thanks for reading, and remember, your waifu is real and she loves you.

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en1 Английский Ari 2021-05-26 21:05:01 8123 Initial revision (published)