Red-Green-Code

Deliberate practice techniques for software developers

  • Home
  • About
  • Contact
  • Project 462
  • CP FAQ
  • Newsletter

CPFAQ: The Value of Canonical Questions

By Duncan Smith Jul 25 0

Canonical

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)

Categories: CPFAQ

Prev
Next

Stay in the Know

I'm trying out the latest learning techniques on software development concepts, and writing about what works best. Sound interesting? Subscribe to my free newsletter to keep up to date. Learn More
Unsubscribing is easy, and I'll keep your email address private.

Getting Started

Are you new here? Check out my review posts for a tour of the archives:

  • 2023 in Review: 50 LeetCode Tips
  • 2022 in Review: Content Bots
  • 2021 in Review: Thoughts on Solving Programming Puzzles
  • Lessons from the 2020 LeetCode Monthly Challenges
  • 2019 in Review
  • Competitive Programming Frequently Asked Questions: 2018 In Review
  • What I Learned Working On Time Tortoise in 2017
  • 2016 in Review
  • 2015 in Review
  • 2015 Summer Review

Archives

Recent Posts

  • Do Coding Bots Mean the End of Coding Interviews? December 31, 2024
  • Another Project for 2024 May 8, 2024
  • Dynamic Programming Wrap-Up May 1, 2024
  • LeetCode 91: Decode Ways April 24, 2024
  • LeetCode 70: Climbing Stairs April 17, 2024
  • LeetCode 221: Maximal Square April 10, 2024
  • Using Dynamic Programming for Maximum Product Subarray April 3, 2024
  • LeetCode 62: Unique Paths March 27, 2024
  • LeetCode 416: Partition Equal Subset Sum March 20, 2024
  • LeetCode 1143: Longest Common Subsequence March 13, 2024
Red-Green-Code
  • Home
  • About
  • Contact
  • Project 462
  • CP FAQ
  • Newsletter
Copyright © 2025 Duncan Smith