Questions Before Code, Thinking Before Asking

A coworker and I had a discussion the other day about how some communities, such as the Golang channel, require people to post code before answering the question. This isn't a controversial opinion, we've all had newcomers wander into a channel before and start asking questions that are either 1. seem completely irrelevant to what they're trying to accomplish or 2. are so vague they help no one. By forcing newcomers to write code, this inherently fleshes out their question, reducing the scope of the question and can help them achieve tangible, realistic goals. "Talk is cheap. Show me the code." is nice quote from Linus Torvalds on that.

Yet a casualty of this is expertise of the domain and knowledge outside the community. For this heavy-handed questions approach to work, it presumes that there is a tribunal of a few people that know generally far more than the newcomers, and this tribunal can dole out knowledge of most, if not all, of questions asked. While this works on a Q&A basis, it makes for stagnant communities.

Reducing conversation down to the bare minimum (in this case, reviewable code) decreases the chance to learn. Lurkers (those who sit in a channel to observe, and, presumably, to learn) fail to gain any more knowledge than bare minimum passed around the community, as conversations can only center around the code, which are the only questions asked. Ideas that require a higher level of abstraction than the code will never be explored, leading the community to bikeshed over various code implementations.

Moreover, communities seek out this "example-before-question" type of self-regulation because they have seen countless communities fall prey to aimless and redundant questions being thrown around for no reason. Believing that the problem is caused by quality of questions asked, communities take steps to get people to ask more specific questions. This is a fundamental misunderstanding of the issue. The problem lies not in that the questions are poor, but rather that the people who ask them are uninformed. The "example-before-question" approach misses this, and rather than simply telling newcomers that the channel is not for newcomers and that newcomers should seek out some other channel, communities want to adopt an inclusive ideology. This is unsustainable, eventually leading to a stagnant community.

"The history of mathematics is a history of horrendously difficult problems being solved by young people too ignorant to know they were impossible."1. Newcomers to the community often have insights that those steeped in the community can no longer see. Newcomers can bring new expertise from different domains, but the style of "example-before-question" leads to all members in the community thinking along the same lines, eventually turning into cargo culting. We should embrace different domains of knowledge by allowing vague questions to be asked, but communities should be heavily moderated in order, such as StackOverflow and StackExchange. We should embrace the ban hammer more often, and be far more willing to pay the cost of heavy moderation than the cost of cargo-culting.



Dyson, Freeman. "Birds and frogs." Notices of the AMS 56.2 (2009): 212-223.

Posted: 2017-09-03
Filed Under: notes