9
\$\begingroup\$

Got this comment:

Please take rest, you already have monopolized the Code Review.
S. M. 2023-09-20 18:28:46Z, License: CC BY-SA 4.0

Not sure what the best action is.

Going forward, should I limit my requests?
Should I put everything into a single request?
Any suggestions on best approach.

Original Post: C++ Mock Library: Part 1

\$\endgroup\$
12
  • \$\begingroup\$ Would it have fit in a single request? Assuming for the moment the current 6 parts are split up logically, would splitting them up over less parts have made the questions harder to follow? \$\endgroup\$
    – Mast Mod
    Commented Sep 20, 2023 at 20:08
  • 2
    \$\begingroup\$ It could have been done in a single review. But I don't think it would have been an easy review (given the amount of extra context I needed to write). But on the other hand, I don't want to induce negative sentiment (either from too many reviews or potentially from people thinking I am trying to farm reputation points (even though I don't need them)). \$\endgroup\$ Commented Sep 20, 2023 at 20:32
  • 2
    \$\begingroup\$ I've spent like 30 minutes looking for a meta post similar to yours. The user asked to post multiple questions each in a different language, but in execution fumbled the bag and got downvoted to oblivion. A concise answer in lue of a proper one, S. M.'s comment is inappropriate. Additionally user's on the site are allowed to look less favourably on someone 'spamming' questions. 1 q/d seems to be too much, however posting 6 questions in 6 weeks seems too slow. Honestly what's 'right' is unanswerable. \$\endgroup\$
    – Peilonrayz Mod
    Commented Sep 20, 2023 at 22:39
  • \$\begingroup\$ Thankfully Mast managed to find the meta post I was looking for. I'll write a proper answer tomorrow. \$\endgroup\$
    – Peilonrayz Mod
    Commented Sep 22, 2023 at 19:01
  • \$\begingroup\$ It seems that you edited every question as each new one was added. But "Linked questions" is bidirectional, so I don't think you needed to do that. One suggestion might be a post here (Meta) with an index showing the scope of each part; link to the meta post from each question. On the headline topic, I think that six medium-to-large reviews is better than a single enormous one, but would have appreciated an overview introduction letting us know what to expect in the upcoming questions. \$\endgroup\$ Commented Sep 23, 2023 at 10:01
  • 1
    \$\begingroup\$ @TobySpeight As in post a question on Meta to index the Main posts? Such a post would be somewhat odd and may not be well received. \$\endgroup\$
    – Peilonrayz Mod
    Commented Sep 23, 2023 at 10:05
  • \$\begingroup\$ @Peilonrayz, that's my proposal, but I've not fully thought it through. I would like to hear better suggestions, and I thought that opening up with that one might stimulate other peoples' imaginations. \$\endgroup\$ Commented Sep 23, 2023 at 10:20
  • \$\begingroup\$ The alternative might be to put the question index into Part 1, and just have all the others link back to that. \$\endgroup\$ Commented Sep 23, 2023 at 10:21
  • \$\begingroup\$ @TobySpeight The problem (with what I believe you are suggesting (The overview)) is that it would need me to know what each article was before I started posting. I was aiming for about 4 articles, but this evolved. As I wrote each question I found myself going ohh this is not clear (and cleaning the code). Which led to more explanation which meant more articles (It was quite cathartic to clean and write the questions though). \$\endgroup\$ Commented Sep 25, 2023 at 16:32
  • \$\begingroup\$ Ah, I completely misunderstood. I thought you had a large code-base to review, and had planned the split into independently-reviewable parts. That's how it appeared to me with the "Part X" titles. Perhaps it's worth writing all the questions (locally, not on the site) and reorganising around your discoveries, before beginning to post the series? \$\endgroup\$ Commented Sep 25, 2023 at 17:08
  • 1
    \$\begingroup\$ @TobySpeight: That was the plan. BUT it morphed as I was writing them. But I was also expecting input from earlier reviews to change the code for later reviews. But more planning is probably not a bad idea :-) \$\endgroup\$ Commented Sep 25, 2023 at 17:22
  • 1
    \$\begingroup\$ Yes, that's why I recommend writing them all before posting the first one (but of course be prepared to update the unposted ones in the light of advice received). \$\endgroup\$ Commented Sep 26, 2023 at 6:13

1 Answer 1

5
\$\begingroup\$

Well Received Examples

1. Question Series

In my experience the exemplar question series is a specific manifestation of follow up questions:

  1. The asker, typically a more beginner programmer, posts a question with a lot of points to improve.
  2. The answerer(s) don't comment on the entire program.
  3. The asker incorporates all feedback and asks a follow up question.
  4. Goto step 2.

Let's break down my rationale of why such question series do well:

  1. The number of issues with the code is 'too much' for answerers to review in one answer.
  2. Answerers are happy to write a second review. And a new question removes any issues stemming from 'flooding' answers to the same question, which can look like rep farming.
  3. The user has shown clear intent to learn.

2. Programming Challenges (PC)

We get a lot of users who only/predominantly post PCs. For example; overexchange, CodeYogi, and Lin Ma. Each with over 100 questions.

PC users can post a question a day for weeks and months and not get the "f*** off" response the OP got. Lets look at characteristics of PC questions:

  1. The questions are simple.
  2. The question is very short.
  3. The code is normally non-optimal.
  4. The challenges within a memorable time frames are normally diverse.

Lets break down why PCs do so well.

  1. Anyone can answer most PC questions which have been asked. A non-insignificant number can be solved with high-school-level math alone -- requiring no experience with programming.

  2. You can read the entire question in 5 seconds. The question is not daunting.

  3. To critique the question you need to read the question, at which point the glaringly obvious problem in the code is at the forefront of your mind. Now you have three options:

    • Downvote and move on,
    • kick up a fuss, or
    • post an answer and just get the easy rep.
  4. The user basically becomes a community PC bulletin board, with enough variation for users to not burn out.

Please note users who post a lot of PCs do still gather some controversy: Policy regarding "flooding" Code Review with questions

Key Points

To more easily refer back, let's name the benefits of each of the above situations:

  1. Beginner (1.1 & 2.1): most can answer the question.
  2. Minefield (1.2): so many problems a second question is needed.
  3. Respect (1.3): the asker has shown our time won't be wasted.
  4. Short (2.2): people aren't scared away by a wall.
  5. Ez Rep (2.3): getting rep is easier than anything else.
  6. Diversity (2.4): variance to not become boring.

Poorly Received Examples

3. Same Program, Three Languages

A long time ago now, we had a user ask to post the same question in three languages. The idea was well received, but the user fumbled the bag.

  1. Beginner: ✔
  2. Minefield: ❌
  3. Respect: ❌
  4. Short: ✔
  5. Ez Rep: ✔
  6. Diversity: ❌

The post didn't go over well mostly because of the "Respect" point.

You may also want to consider to post your questions a bit apart, as answers to one of the languages might improve the code for another language.
Simon Forsberg License: CC BY-SA 3.0

You were advised in meta to wait between asking similar questions.
200_success 2015-11-10 13:28:24Z, License: CC BY-SA 3.0

@LostBam no problem! Also don't forget 'wait between asking similar questions'. People were annoyed by your three similar questions. Making a forth some time soon would be a bad idea...
Peilonrayz 2015-11-10 13:57:59Z, License: CC BY-SA 3.0

4. OP's Example

  1. Beginner: ❌
  2. Minefield: ❌
  3. Respect: ❌
  4. Short: ❌
  5. Ez Rep: ❌
  6. Diversity: ❌

I'm going to be honest. "Beginner", "Minefield" and "Ez Rep" are probably impossible for a domain expert to accidentally stumble across.

I've put a cross for "Respect" because you only posted a new question after getting an answer for part 3 and part 4. I'm rating on what I expect an average user would vote. I saw your questions in the 2nd but I didn't investigate the posts before today. As such any strong arguments, such as "Part 1 is programmed in C and Part 2 bash," are largely irrelevant.

I've put a cross in "Diversity" because, even if the code is diverse, most people's experience of your questions will be "business logic - part 1", "business logic - part 2", ..., "business logic - part 6". All the same hard to answer, and boring question types.

I've put a cross in "Short" because you are adding what seems like unneeded breaks between code blocks making your question look as long as my answer here is.[1]

5. Take Aways

The better you get a programming, the harder getting answers on Code Review is. Never mind a well-received question series. So, unfortunately, you have to try to min-max posting a good question each and every time.

All advice I've found on Meta always says "you can post multiple questions". [2] [3] [4] [5] So someone giving you grief for nothing more than posting a question series is completely inappropriate. But posting multiple well received questions is hard.

I wish I could say just maximise "Respect", "Short" and "Diversity". But I'm pretty sure such advice would be extremely incomplete. However, ignoring "Respect", "Short" and "Diversity" is likely to kill your question series.

How to Make a Well Received Question Series.

Learning from Existing Question Series

First off, all questions have a high Tim Post and Zombie rating. Any and all advice is fundamentally a gross simplification based on nothing more than hypothesis.

One important part to note is people don't really care about facts. You need to focus on the optics to a largely disinterested party.

  • Be a programming noob.

  • Avoid looking like you don't "Respect" the community.

    • Putting "Part 1" in the very first question will make people go "will my advice just fall on deaf ears, as the person may need to radically change part 2."

      And honestly, whenever I see "Part {n}" in a title I just think "oh no, I hope the question does well regardless".

    • Posting two questions in the same day is not enough time to get amazing answers.

    • If your posts are not being well received, stop. Hypothesize, or ask people, why the question isn't doing well and fix the problem.

  • Make your questions look "Short".

    • Limit questions to two code blocks:

      1. The code.
      2. The test suite.

      Any more and your question is a wall of code and text. Ain't nobody got time for that.[1]

    • You can fit 65536, or thereabouts, characters in a single code block. And your question will look no longer than most PC questions.

  • Make your questions look "Diverse".

    • Look how diverse the titles are. Each and every question looks radically different and interesting from title alone.

A Radical Approach

Should I put everything into a single request?

We know large code bases are 100% on-topic;[6] we also know reviewers are typically just going to review the low hanging fruit.[7] And our "any or all" rule means even if you ask answerers not to review something, answerers can just ignore the request.[8]

So the answer is complicated. Do you want a review of every part? If so then splitting into separate parts may be the only way.

But I don't think it would have been an easy review (given the amount of extra context I needed to write).

If by "context" you mean code, then the above answers your concern. Otherwise, most of the time when I answer I read the question title, copy the code and an answer appears out of nowhere. The times I can't are when the code is so convoluted and hard to read I need an English explanation of the code.

Typically the more time you spend writing a section of text, the shorter the text becomes. If you feel strongly that some minutia need to be explained in English, then I'd ask "why have you not explained the importance of these minutia in the code?"

If I Had More Time, I Would Have Written a Shorter Letter
– Blaise Pascal


What you should do is highly dependent on the review(s) you want. So I'll explore two high level approaches I assume would maximise the degree to success.

  1. A 'Natural' Question Series

    You post an initial question:

    • The question contains all, or most of, the code.
    • The title doesn't say "Part 1" or indicate in any way you want a question series.
    • You employ common strategies to maximise an answer, any answer. Make sure you achieve "Short".

    You get an answer going over the low hanging fruit, and if lucky a bit more depth. You'll have achieved "Minefield". You incorporate all feedback, even the stuff you disagree with, to achieve "Respect".

    When posting the follow-up question you can post everything again, or narrow the code to a section. Posting everything again can have some issues around a lack of deep review. Whereas posting a section which gathered no feedback can seem like a "ugh, you didn't review the code I wanted reviewed".

    The approach likely has a high degree of risk: if the first question isn't answered the strategy can't continue.

  • A 'PC' Question Series

    Rather than posting a conventional 'question series' we try to make the questions look like programming challenges. Take an algorithm from the code, write a short programming challenge and post your home-made PC.

    The aim here is to maximise "Short", "Ez Rep" and "Diversity". Boring things like business logic, or getting the Lego bricks to plug together don't get asked.

    At the end you can post one giant question tying all the 'unrelated' questions together. And, if you want, attempt the "A 'Natural' Question Series".

    The approach only works if you have PCable algorithms in your code. And you'd have to be willing to not mention in any way the questions are related.

I'm not saying the above two approaches are the only way. "A 'Natural' Question Series" tries to turn a weakness of Code Review into a strength. And "A 'PC' Question Series" is to explain how you can highly tune a question for Code Review.

Again all questions have a high Tim Post and Zombie rating, and everything is just speculation. However "Part {n}" and posting follow ups not even a day after each other doesn't work.

\$\endgroup\$

You must log in to answer this question.

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