We have good options these days for getting answers to programming questions. Stack Overflow provides answers to fact-based questions. They can be targeted questions like How to sort a Collection
As essential as Stack Overflow is for programmers, sometimes you need an answer to a question that doesn’t work there. For those types of questions, there is Quora. Although Quora does have mechanisms to maintain content quality, the rules are much looser. The advantage of this approach is that you can get answers to a wider variety of questions. The disadvantage is that it’s a lot harder to control quality. For example, Quora gets bombarded with questions of the form Is it too late for an X-year-old to learn how to program? But questions like How should I get started in competitive programming?, which would get closed on the Stack Exchange sites, can actually collect some useful answers on Quora.
There are other sources of programming information that people use for questions and answers. Reddit and Hacker News come to mind. They have voting and, in the case of Reddit, even an “accepted answer” feature. But in my experience, these sites are not as effective when used for Q&A. They are mainly designed to show a link to an article followed by comments from users. This can be adapted for Q&A, but it’s easier to use a site that was designed from the ground up for questions and answers.
Questions and Answers
Answering a question on a Q&A site isn’t too complicated. You read the question, do some online research or draw on your existing knowledge, and write up an answer. People can give you upvotes, downvotes, and comments. Your answer can be one sentence (or one word), or it can be the size of a novella, like this famous Quora question about airplane cockpit controls. It can be straightforward or sarcastic, though the latter tends to be discouraged.
What I find more interesting is the question half of the Q&A process. Some aspects of question-asking were a surprise to the designers of early Q&A sites. You might think that getting answers to questions is the hard part. That’s the activity that requires effort and research. But it turns out that getting good questions can be just as hard. Question quality is also what generates the most controversy over site policies. Stack Overflow was the first major Q&A site to be strict about question quality. People might mock a site like Yahoo! Answers for its low question (and answer) quality. The approach that Stack Overflow moderators use to deal with question quality can provoke much stronger responses. Why I no longer contribute to StackOverflow has hundreds of comments, and continues to generate more, over a year after it was published. More recently, My Love-Hate Relationship With Stack Overflow, a more balanced assessment, has generated some interest, including a response on Hacker News from Stack Exchange co-founder Jeff Atwood.
The question quality issue isn’t an easy one to solve. Poor question quality is a serious problem for a Q&A site, as demonstrated by sites that don’t put a lot of effort into regulating it. The two articles I linked to make some good points about the dangers of having a site culture that is too strict, thereby driving away users who have trouble figuring out the rules. Rather than take on the overall question quality issue, I’d like to discuss a specific approach to asking questions.
A programmer who is using a Q&A site to ask a genuine question (i.e., not one whose main purpose is humor or idle curiosity) is ultimately asking for advice. They may have a specific question (more suited to Stack Overflow) or a general one (more suited to Quora), but they always have a problem to solve and they are asking the community to advise them on a solution.
One thing that such questions have in common is that they originate with a specific problem rooted in the experience of the person asking the question. This is where the needs of the individual may conflict with the needs of the community. For the individual, the best outcome is that they get an answer that exactly fits their needs, as if they were getting one-on-one advice from an expert. But for the community, the best answer is one that can be used by subsequent visitors with similar but not identical problems.
There are a lot more people reading questions than answering questions. If a question is too specific to one user (“too localized,” in old Stack Exchange terminology), then it can create scaling problems by taking away resources from questions that are applicable to more people. So one way to get useful advice is to ask something slightly more general than your original problem. Once you do this, you may find that your question has already been asked and answered.
While Stack Overflow works best for specific questions, Quora users are happy to contribute answers to questions as general as How do I learn to code? Now that Stack Overflow and Quora have been around for a few years, these popular questions tend to have plenty of answers already. So people who have these questions can just read the existing answers, right? Generally it doesn’t work that way. Popular general questions tend to get posted over and over. Sometimes they get merged, and sometimes they don’t. The duplicate question problem is something that the Quora leadership knows about, and is trying to fix in various ways. It’s an old and tricky challenge — a similar problem in early 1980s ARPAnet led to the invention of the FAQ. The problem has many causes, but I’ll point out just one: asking for advice is easier than taking it.
And More Advice
The best advice is specific advice that applies exactly to your situation. A person who can provide that kind of advice is known as a mentor. Scott Young provides a lot of ideas about mentorship in that article, but two are particularly applicable to using Q&A sites as a kind of virtual mentor:
“Have I already read all the public advice on the topic?“: Although Quora sends very mixed messages on this question, standard question-asking advice is that you should Google your question before asking it. This is closely related to the duplicate question problem, for obvious reasons.
“What I feel most mentors are looking for is a high action-to-advice ratio.“: At this point in the trajectory of the major Q&A sites, many popular programming questions already have answers. Unless your question is about a new technology, is highly original/creative, or is highly specific (“too localized”), there’s a good chance that it’s a duplicate. This means there is a lot of advice out there that is waiting to be taken. I think one reason that people post new versions of popular questions again is to avoid having to do the hard work of taking the advice. On Quora’s competitive programming topic, some of the most popular questions are variations on How should I get started in competitive programming? and How can I improve my competitive programming skills?. It’s possible that some of these duplicate question askers have just stumbled on Quora, typed in the question, and didn’t notice any of the suggested duplicates. But it’s more likely that rather than taking action on the surplus of advice already available, they instead decide to ask for more advice.
To quote a comment exchange on How should I prepare myself for the coding challenges and problems asked in sites like codechef.com, HackerRank, etc?:
- User 1: Tonnes of question like this is on Quora.
- User 2 (the question author): I prefer answer to mine…
(Image credit: Laughlin Elkind)