8
\$\begingroup\$

TL;DR: I have categorized ~140 tags. I believe some categories should be used more and some categories should be used less. Goal is to make it possible to use tags to find related questions, as well as providing objective tagging criteria for these categories, rather than "my question is about ". I also believe making tagging more objective will lead to making titles easier.


What tags should I stick on my question?

It sounds like a simple question but right now it seems like anything related goes.

I have a theory that tags belong to specific domains. And within these domains there could be hierarchy... so I went through the tag pages and categorized them. Bear with the tag wall with me here. Tags sorted in order of domain, then in order of usages. If a tag is categorized wrongly, please try to discuss it in chat, for I fear I will make many mistakes and we'd lose the focus I am trying to obtain in the discussion about which tag goes where.

Tag pages referenced: The first four + the enum tag. That is, every tag that has 73 usages or more. It's possible I have missed some lesser used tags that would fill categories on their own...

Tag domains

And lastly...

  • Tags I don't know to place.
    (seems used for both use of rng and implementation of rng)
    (eh... if your code makes use of...?)
    (sounds like a library, but it's ORM. Where's the orm tag?)
    (Again, something code makes use of, but doesn't implement)
  • Tags I have placed, but am not sure of.
    (Language used, but it's not a language in and of itself).
    (that a paradigm or a construct?)
    (I made it a language, but maybe it's just a library?)
    (I probably did everyone a disservice by saying it's a library)

So, now that we've classified the tags, let me ask you...

Which tags do you want to see on a question?

I want a language tag. And a language version tag too, if applicable. If you use a library, I don't really care, unless your question is about the proper use of that library. System targeted is something I don't really see as important... but maybe I screwed up on that category.

Then, when I know what language your code is, I wanna know two more things: First, what your code DOES, and what your problem is.

And that's something I'm missing here.

We have tons of tags for programming constructs such as strings and loops and functions and integers... but I'm not seeing any tags for things like "cleaning up my duplication", "improving my naming"... "making my public interface more usable"... We have very little "problem" tags. Maybe that's what the title of the question should be, though. Although... we tried that, and it leads to "Please improve my badly-xxx-ed code" titles. Not sure if that's what you want.

So let's talk about each domain.

Language Used

I NEED this on a question. No language, no review.

Language Version

This helps a lot. A strange thing happens here though - questions tagged are obviously also questions, right? So... do we even need the raw language tag, then?

Library / Language specific feature

I believe these should only be included when your code relies HEAVILY on them.

System Targeted

Helpful when you use system specific features. Otherwise, there's probably better tags you could apply.

Interface used

Erm, this is relevant how?

Programming Paradigms used

This has major overlap with Programming constructs/features. I dunno. I guess you should only include them if you have a question about them - else we could stick on a LOT of questions.

Programming constructs used

This one, same thing applies; only tag if your question is about proper use of or you implement that thing. Else we could start tagging each question with .

External formats used

This one seems really important when combined with a "task code does" tag. tells you a LOT about what the question is gonna be like.

Problem with the code to be solved

When you have a specific concern, tag it. Answers are likely to address that concern, so if I wanted to learn about detecting security flaws, I could browse through a combination of problem-tag and language-tag and learn interesting things.

Task code does.

This is helpful to understand the code. It's also a natural way of categorizing and I like it. It can define the problem domain and with it, the range of input, output and processing that may have to occur. I want to see more of these tags. How helpful they'll be I don't know... but they seem like a natural category.

Thing code will be when done.

This seems irrelevant. So it's a library, a plugin, a widget, a thingmabob, a application, a software-as-a-service thing... does that really matter? and seem to have some merit though, but maybe that's because they tell you what the code does.

Type of question

Yeeeeah. I dunno what to say about these. Do we need them? They seem really meta. Trigger words like "meta-tags" aside, I'm just not sure if the type of a question is something that you want to search on.

Details of asker

To me, these tasks don't make any sense, after a little thought. , , ... They actively seek to inhibit the responses provided to the question. Personally, I feel these should be replaced with one single tag: - for when you wrote the code to learn, rather than to accomplish a task or build a product. This allows us to review actual replacements of system classes too - things like high-performance libraries. There the answer to "why did you build a linked list, they already exist" is "because they're too slow, and I can do better".

Rant about those 3 tags aside, with a we just migrated it from a "don't be harsh" to a "code-purpose" tag. It's not supposed to do things, it's supposed to teach you things.

Back to the question;

What tags should I stick on my question?

It is my opinion that a question should have at least...

  • A language tag
    • If applicable, a language version tag
  • A task code does tag

And should have, if applicable

  • A problem tag
  • A library tag
  • Format tag

And then if you still have space left, you can add extra tags.

Why?

Because I feel that right now, tagging isn't clear yet, but more importantly, I feel there should be more focus on using existing questions to learn.

\$\endgroup\$
6
\$\begingroup\$

You've gone to a lot of effort to compile this list, I can tell. Let's take a step back and ask who uses the tags, though.

Background

Tags are used by potential question answerers more than they are used by askers. Tags are added by the asker in order to attract the interest of the most likely people to answer their question.

For example, I will personally skip over any , , , .... questions simply because I will not be able to answer them. If you want me to review your code, then don't tag it with . On the other hand, there's someone out there who probably is drooling at the opportunity for it.

People who review code use the tags to do a coarse form of filtering to find things to answer.

Personally, I have a set of 'favourite' tags, and I take those tags in to consideration when looking for questions to answer, after loose-filtering on tags, I then use the title, and description to see if there's something that interests me enough to investigate further. Once I have a set of questions that have aspects that interest me, I use the other tags on the question to filter out things that do not interest me. For example, a question tagged will likely be skipped by me, not because I don't know Java, but because I am not a 'GUI' person, and don't know how the MVC concept works properly.

When I ask a question, I use tags to direct my question to the attention of the people who would most likely give the sorts of answers I want.

When I answer a question, I use tags to filter out what does not interest me, and to reject concepts I am not familiar with.

Note, in my opinion, tags are not a form of indexing for questions. Just because a question contains a concept, does not mean it should be tagged with it. Only if the question would be of interest to a person who "likes" or "dislikes" those concepts, should it be tagged with it.

There is a limit of 5 tags per question. By default, on Code Review, one tag is the language. That leaves only 4 things 'conceptual' to add.

is a great example of what to tag. Some people will automatically skip it, other people will be drawn to it, even if it is in an unfamiliar language. Personally, I am like that with . I will often read algorithm questions regardless of the language they are in.

So, tags are mostly used by potential question answerers.

Questions:

Categories - Which are most useful?

The only useful category I see in there is the languages one. Every question on Code Review needs one of them.

What tags should I stick on my question?

A language tag, and then whatever tags you feel will interest the sorts of people that will answer your question with the details you want covered.

Which tags do you want to see on a question?

A language tag, and then the concepts and challenges I like, and the ones I dislike, so that I can filter in things that interest me, and filter out those that don't. Since everyone likes/dislikes different things, this makes tags a good way to attract the right answers.

We have very little "problem" tags. Maybe that's what the title of the question should be, though

NO NO NO!!!

We do not want tags that are designed to describe what the user thinks his problem is. Nor do we want titles to describe what the user thinks is wrong. The tags would be 'meta' tags - tags which describe what asker is thinking. We want primary tags - tags that describe what's actually in the code.

is often considered to be a meta tag - a user wants things to go fast, so they tag it as performance. When considered that way, it is a meta tag. But, also describes the environment that the code should run in, it is a performance-sensitive environment, just like tags for , or . It describes a constraint on the code.

As for the other meta tags (you have examples of "cleaning up my duplication" - , and "improving my naming" - ), those are things that should be common to every single question on Code Review, and they are implied. Every question is asking to have "good style" and "best practice", regardless of any other concerns.

Language Version

You need a language tag. If you feel the version of the language you use is important, and that some answerers will be more attracted to (or ignore) certain versions rather than others, then use whichever tags you feel necessary. Combining multiple if you want. There is nothing wrong with That will help some people who know C++ to ignore it if they don't also know C++14 (and similarly, it will attract people who have a special interest in C++14).

Conclusion

Apart from the language category, for which there must be 1 tag, the rest of the tags are a free-for-all, and are used to target whomever may be best suited to answer the question.

Imposing rules and structures about what has to be, or what must not be, in the remaining tags is doomed to fail, and would not be useful.

Tags are a tool that savvy askers can use to improve the visibility of their questions in the way that best suits the culture of their target audience. This is different for different people, and situations. Imposing a structure would be a mistake.

Tagging your question cleverly (just like a good title and good description) will lead to an improved quality of response. It is in your own interest to tag your question in the way that best suits your audience.

\$\endgroup\$
  • \$\begingroup\$ "We do not want tags that are designed to describe what the user thinks his problem is. Nor do we want titles to describe what the user thinks is wrong." This statement makes things go boom for me. What makes a good title? Maybe it's what the code does - then, how do you prevent duplication of titles? (Is duplicate question titles a problem)? How to have a good title if you don't have a question to ask? \$\endgroup\$ – Pimgd Feb 18 '15 at 13:36
  • \$\begingroup\$ "Imposing a structure would be a mistake." This I have realized before I even hit post question, but it seems like I have left it in, somehow... \$\endgroup\$ – Pimgd Feb 18 '15 at 13:39
  • \$\begingroup\$ I feel tagging should be objective, rather than subjective. Do you agree with that sentiment (leaving the conclusions one may draw from that aside)? Objective tagging makes it easier to determine what tags may help a question, since right now I couldn't tell you if a question would be better off or worse by adding or removing a tag like algorithm \$\endgroup\$ – Pimgd Feb 18 '15 at 13:44
  • \$\begingroup\$ @Pimgd - about the title, see: meta.codereview.stackexchange.com/a/2438/31503 \$\endgroup\$ – rolfl Feb 18 '15 at 14:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .