I’m working on a project this year to build a competitive programming FAQ. This is one in a series of articles describing the research, writing, and tool creation process. To read the whole series, see my CPFAQ category page.
Last week I discussed how question merging works for Quora and CPFAQ. Related to question merging is the idea of canonical questions. Although I have written about canonical questions in the past, I haven’t explained why they’re critical for CPFAQ. That’s the topic for this week.
Canonical Questions on Quora
Quora employees wrote official blog posts in 2015 and 2017 explaining why canonical questions are important to the platform. Their main point, introduced in the first post and repeated in the second: Having one version of a question, the canonical version, gives writers one place to apply their writing efforts, and gives readers one place to look for the answer to that question.
Both blog posts generated many comments, mostly negative. People didn’t like canonical questions as described by Quora. In some cases, people just had a different idea of what Quora’s mission should be. For example: “This is a real blow to people who want help on their personal problems – which usually require a lot of context and specificity.” And similarly: “If only one person is helped by receiving an answer, isn’t that mission accomplished?” No, not according to Quora. Personal answers to personal questions is an area where the Quora and Stack Exchange philosophies agree. Both companies believe answers must help more people than just the original question writer. They argue that optimizing the site for person-to-person support is not scalable and won’t keep the site healthy in the long run. In addition to the original question writer, Q&A sites need to help people who have the same question later and who look for the answer through a Web search.
To encourage people to write canonical questions, Quora made user interface changes, which they described in the blog posts: In 2015, they limited the question title to 150 characters and the question details to 300 characters. In 2017, they increased the question title limit to 250 characters, removed the question details entirely, and added an optional question source field allowing the question writer to include a hyperlink related to the question.
Robert Frost, a NASA instructor and one of the most followed users on Quora, disagreed with the 2015 change, arguing that Quora should accept longer question titles to discourage “stupid answers from people that have no idea what they are talking about.” In his view, specific questions encourage specific, detailed answers from experts, while general questions, which look easier to answer, encourage answers from people who have little to contribute. I think he is generally right about this. However, just making the question text limit longer doesn’t make people write good, specific questions. It also encourages questions that are near duplicates of existing questions, with just a few personal details added.
Another commentator wrote simply: “Canonical questions are boring.” In other words, it’s more interesting to read or write answers to someone’s personal question — like What was Anudeep Nekkanti’s Competitive Programming strategy to become 35th in Global ranking, in just 6-7 months? — than answers to a canonical question like How do I become a top competitive programmer? I think this is also generally correct. But again, if question writers don’t make the effort to write good-quality personal questions, rather than the 100th duplicate version of a question that happens to mention personal details, having a longer question title won’t help.
One commentator points out an area where Quora and Stack Exchange differ:
I question the very existence of what is referred to here as “canonical questions”. I also doubt that many questions asked on Quora can have a “definitive answer”. My own perspective is that the greatest value of answers lies in their diversity, not in their adherence to some standard of canonical correctness.
Stack Exchange requires that questions have definitive answers that are objectively true. Questions like How do I get better at competitive programming? get deleted from that platform, because site rules classify them as matters of opinion. Jeff Atwood, a Stack Overflow founder, has said that when a question attracts a large number of answers, it becomes more of a “chatty, open-ended discussion” than a good Q&A artifact. A question with an objective answer can still have answers from multiple writers who each want to explain the answer differently. But eventually, all the information someone needs to get an answer to the question should be available, and there’s no need for writers to keep adding more answers. I think the same rule could be applied to Quora-style opinion questions. While there may be more opinions than facts about a topic, there are not an unlimited number of opinions. Eventually, people start repeating opinions as well. One of the goals of CPFAQ is to enumerate this finite list of opinions so that people don’t have to read the 100+ answers to popular questions like What is the best strategy to improve my skills in competitive programming in C++ in 2-3 months?.
Canonical Questions on CPFAQ
While there are mixed opinions about the value of canonical questions on Quora, I think the arguments are stronger for using canonical questions on CPFAQ. Here’s why.
CPFAQ is like an encyclopedia
CPFAQ looks like Wikipedia, and the two have more in common than just the underlying software. Like Wikipedia, CPFAQ has the goals of finding the right way to classify knowledge and then providing articles about each node in that knowledge graph. For CPFAQ, articles often have titles that are written as questions. This is less common on Wikipedia. And CPFAQ allows user-generated sources (e.g., Quora) that Wikipedia doesn’t. But just as Wikipedia editors choose when to split and merge articles, each CPFAQ entry represents a judgement about what combination of sources belongs in a single article. And that single article needs a canonical title to help people find the collected information on a topic.
CPFAQ contains definitive answers
CPFAQ rules combine aspects of Stack Exchange, Quora, and Wikipedia. Like Wikipedia, CPFAQ has canonical article titles, and requires that claims be supported by references. Like Stack Exchange, CPFAQ uses questions and answers, and relies on input from experts. But like Quora, CPFAQ allows questions whose answers are opinions. I think opinions can be definitive if the person writing the opinion has the right experience. The benefit of using Quora as a source for competitive programming Q&A is that many competitive programming experts write answers for that platform.
CPFAQ doesn’t accept questions directly
A competitive programming question is frequently asked when users on other platforms, like Quora, have repeatedly asked or upvoted it. Because people don’t ask questions directly to CPFAQ, there’s no need to allow for personal details in FAQ page titles. If a personal detail is essential to a question, it will appear in the Quora question titles found in each CPFAQ article.
CPFAQ consolidates existing questions and answers
One goal of CPFAQ, like Wikipedia, is to organize information from other sources. A single FAQ page consolidates information from multiple Quora question pages. But I don’t have to include all information found in these references. I can filter the source content so only the useful information makes it onto the page. That makes the link between the question title and the answers less important. If someone writes an interesting answer to a Quora question that is less popular (perhaps because of its “boring” canonical title), I can still include it on the page along with information from more popular questions.
CPFAQ page titles are summaries of multiple Quora question titles
I only create a CPFAQ page once I find multiple Quora questions that ask the same thing. That allows me to review the titles from multiple Quora question writers and come up with a canonical title that captures the essence of the canonical question. This is easier than writing a good canonical title for a brand new question, which is what Quora asks question writers to do.
So as you browse CPFAQ, you’ll see canonical question titles for each page, like these:
- How do I get better at competitive programming?
- How do I get started with competitive programming?
- How did (person) become a top competitive programmer?
(Image credit: Jules & Jenny)