One of the major problems with all the technical/scientific sites of SE was always the constant homework bombardment. This has always been the case for every programming community since the dawn of time. This causes major user friction, spawns rudeness in return and creates immense amounts of moderation work.
We even had a “homework” tag at SO initially, just so people could ignore such questions. Other communities like Programming and Electronics changed names to Software Engineering and Electrical Engineering in attempts to lower the noise question bombardment.
One easy solution to this problem would be to split technical/scientific communities into an open part where everyone can post, and a professional part where you are expected to know the basics in advance. It could either be a separate site per community, or something as simple as having a tag “professional” and then those who don’t want to wade through homework can add that tag to their search filters. Homework questions ending up in the wrong place could easily be moved to the right place by any user, creating a minimum of friction. And without the usual “elitist” debate, since everyone would be welcome to post whatever is allowed in the open part of the site.
This is something that SO has always severely lacked, so I believe the ability to swiftly move homework questions to where the sun doesn’t shine would attract experts to a site free of such questions. I’m guessing that many experts and people using SO in their line of work would abandon SO instantly for such a site - I know I would.
I believe one key to success for a new site platform is to offer a better programming community than SE. SO is without the flagship and cash cow of SE. What SO lacks though, is freedom from noise questions. There’s lots of programming sites with lower standards than SO out there, none nearly as successful. I therefore believe a new programming community must have higher quality standards.
If it is too early to speak of specific communities, it might still be worth keeping the “several sites with same topic” idea around during implementation of the platform itself.
This would be a major departure from the SE model, as Stack Exchange has always maintained it’s a site for everyone, and anyone at any level of knowledge is welcome. Using tags for this on SE would be frowned upon as they’d be meta-tags rather than content, which is supposedly Bad.
That said… I think this is worth considering. It’s worth considering here as a technical question: should we implement something (TBD) to allow for this possibility in the software directly? That might be adding categorization of posts as well as tagging, like here on Discourse; it could be an extension of the way we do meta to create three sub-sites within a community (all, expert, meta), or it could be something else entirely. How it’s done is mostly irrelevant, but we should answer the question: should we have explicit support for this in the software (non-MVP)?
If the answer to that is No, then there’s another debate to be had, because this could also be implemented as a community governance solution entirely separate from software concerns, simply by using tags. That’ll be down to each individual community over whether they want to allow meta-tags in general, or novice/homework/expert tags specifically.
Actually there’s precedent for this in Stack Exchange itself: There is the site Mathematics.SE for people at every level, and MathOverflow for professionals.
But I think it is important that the general site is not marked as a beginner site. For example, assume that StackOverflow would be split in the same way. Then consider a professional programmer who starts learning a new programming language. Then questions may pop up that are pretty basic, and thus probably not welcome on the professionals site. Moreover there’s a high chance to get an answer that isn’t helpful to you. For someone who knows C++ well, a statement like “the call does not work because the ternary operator in this case returns an an lvalue which doesn’t bind to an rvalue reference” makes perfect sense.sense. For a beginner in C++, even if otherwise an experienced programmer, I don’t expect that sentence to be helpful.
An experienced programmer who is a beginner in C++ should not be discouraged from asking on the general site, thinking it is only for non-professionals.
There is also “English Language Learners” which AFAIK was a way of cleaning up “English Language & Usage” which got a ton of low quality and off-topic questions from said learners.
I’m not very active on SO, since I’m very much a beginner, but perhaps each language could have a ‘beginner’ and an ‘experienced’ (or similar term) tag?
If we do it the way of some SE communities – à la Mathmatics/MathOverflow; ELL/ELU, etc – it shouldn’t be necessary to enable it in the code as there would be separate communities/sites. Tags would be another option, as you mention.
Adding something to the software seem to me to be an increase in complexity from a dev and UX point of view, and I can’t think of something that makes it necessary. It might be interesting to have sub-categories for sites; there may be other things it would enable other than expert/nonexpert divisions, but I’m not seeing it as a necessity.
I feel like the underlying issue is the “difficulty level” of questions on the same topic.
This can be used to filter out questions “too easy” for you which you don’t want to see, like homework or basic programming questions like “why is my loop not working” when you want to only see advanced/hard questions about non-trivial problems.
I’m kinda biased towards making sites more tightly coupled together in many different ways, and what I think could be a good solution is this:
Allow users to manually assign complexity level to their questions, and then allow other users to vote on the perceived complexity, so that the question will show a rough estimate of how “trivial” or “advanced” it is.
I don’t know how it should look like in the end, but I’d start with a permanent “poll” visualized as a bar chart. And I feel like the “perceived difficulty” votes should be displayed separately, so there won’t be a total score like votes on questions because there might be more than 2 votes and it wouldn’t be clear from just a total number what the public thinks of this question.
imagine something like this:
How does a while loop work?
6 - trivial
1 - average
0 - advanced
How does a branch predictor work?
0 - trivial
3 - average
5 - advanced
How do I find out how much memory my application is currently using?
0 - trivial
5 - average
2 - advanced
This should help users who only want to answer questions but don’t know the advanced stuff, to only see trivial or average questions, and those who are tired of seeing homework questions to only see average or advanced questions.
There can be a “preferred difficulty” range with 2 sliders for min and max average difficulty, so you can choose to see some questions with “advanced” votes or some questions dipping into the “trivial” range.
I don’t think the meta should be a sub site like it is on SO - this is perhaps the worst design mistake of SO. The Q&A format simply doesn’t work well at all for discussions. And comments with people ranting and leaving their own subjective opinions, without really willing to take part of the actual discussion, is counter-productive.
Rather, the meta needs to have it’s own design, more of a classical forum style with threads that can be expanded, like on Reddit. Also, it doesn’t make sense to vote on stuff like support requests or bug reports - what does such a vote even mean “no, I don’t agree that you need support”? But the format of meta is probably a discussion for another thread.
Some questions look trivial and turn out to be complicated, or vice versa. The asker often doesn’t know enough to know.
I prefer the model of either separate sites or some sort of tagging over a baked-in difficulty-rating system. Let a site define its own boundaries, like Math vs MathOverflow or EL&U vs ELL or Academia (which says graduate-level only and there is no undergrad site). Within a site, sometimes tagging is the answer, like on Workplace where there’s a tag for “entry-level jobs” (I forget what the tag name is).
Unix systems: Unix & Linux for people who are typically comfortable with a command line and who typically aren’t tied to a specific variant or distribution, and several sites specifically about one variant and catering primarily (but not exclusively) to people who don’t use the command line: Ask Ubuntu, Elementary OS, Ask Different (macOS).
What makes these sites work is that they’re different communities, with different standards. I don’t think every topic can accommodate this duality. It works for math and CS because there’s a research community (where everyone is a researcher) and there’s a teaching community (where the askers are mostly students and the answerers are mostly teachers). It works for the unix sites because there are different interests, but there there’s more overlap. It works, more or less, for ELL/ELU because ELL has a large pool of potential answerers (native speakers).
I don’t think it would work for programming. There’s no clear distinction between professionals and non-professionals. Non-professionals who are writing a spreadsheet macro or an automation script or a little JavaScript for their website have the same kinds of questions as professionals doing the same thing and need the same kind of answers. Students writing a project have the same kinds of questions as professionals doing the same thing and need the same kinds of answers.
Separating homework questions from the rest is not the same thing as separating amateurs from professionals. Separating homework questions has been tried, and failed on Stack Overflow. It failed because the only difference between a homework question and a non-homework question is the context in which the question arose: it doesn’t make a difference to the content or quality of the question. “Why isn’t my code working?” can be homework or not. Tagging certain questions as [homework] and others not was purely arbitrary, and often led to edit wars. The presence of the [homework] tag was moderately correlated with poor quality, but that was in part because people added it to low-quality questions and removed it from high-quality questions — but quality is a value judgement, not an objective yes/no judgement, so a tag did not work to convey it.
No. Difficulty level is a red herring. Some layman questions may look trivial, but take an expert to get a really good answer. Some professional questions may be subtle, but useless because they’re already covered in the manual. And a homework question could have any difficulty level.
In Rating and moderating questions and askers I discussed having two ratings on questions: usefulness and skillfulness (not necessarily the best names for the concept, please read my post). Adding a difficulty level would not help people find the questions that interest them.