44
\$\begingroup\$

I have only recently started browsing CR and have done 3 so far. I spent about 30 minutes on the first one, and 2 hours each on the others.

Sadly, because I am reviewing Ruby code (not as popular as JS, for example), and the site isn't nearly as active as SO, I have received almost no views or upvotes or any kind of recognition even from the person I am reviewing the code for.

My question is how are we supposed to stay motivated to spend our time and effort reviewing code when our efforts are barely recognised and, because of that, not valued by SE by way of reputation?

If a single upvote had more weight in terms of reputation vs other SE sites, I might be more inclined to spend a lot of time writing CRs, but as it stands, I am lucky to receive 10 points.

Contrast this to an answer I wrote on SO about Ruby an hour ago, which I have since received 55 points for that took me all but 30 seconds to write.

I understand it isn't all about reputation, but it is the gamifying of QA that has brought us all here. Seems the balance of it is falling flat in CR, or am I missing the point?

\$\endgroup\$
  • 1
    \$\begingroup\$ My motivation coming here again is obvious ;-P ... \$\endgroup\$ – πάντα ῥεῖ Dec 30 '16 at 20:56
  • 4
    \$\begingroup\$ The nice thing with this site though, is that you don't need to be FGITW to write up a well achieved answer vs high traffic sites like Stack Overflow. \$\endgroup\$ – πάντα ῥεῖ Dec 30 '16 at 21:05
  • 2
    \$\begingroup\$ We got one of the greatest communities in the SE network. That's reason enough for me. \$\endgroup\$ – Mast Dec 30 '16 at 23:18
  • 1
    \$\begingroup\$ True. I don't think I noticed until I started interacting with it! \$\endgroup\$ – Damien Roche Dec 30 '16 at 23:19
  • 1
    \$\begingroup\$ Community and a place where you provide longer more though out answers than in SO. With long though out answer you have more ability to show off your skills. \$\endgroup\$ – Martin York Jan 6 '17 at 19:13

11 Answers 11

39
\$\begingroup\$

You're not wrong.

Unfortunately, because we are a smaller site (we're 27th/166 of main sites in the network, and 27th/73 of graduated sites) and we only have ~40,000 questions, it's difficult in some more obscure languages to get up votes and accepts. It's harder to see the value.

If we compare ourselves to a site like DBA (they only have 11k more questions than us, which is 25% but not a lot to be completely fair) we see one major difference: DBA is specialized to one very narrow area. They work specifically with databases, SQL and the like. We work with any language out there. We're specialized to a very broad area. This makes it hard to garner a great deal of participation, simply from the fact that users see the same thing you have pointed out in this question: what is the value of participating?

I recently saw a comment on an SO question that was something as follows:

Don't recommend [Code Review] unless you are prepared to answer this topic there. There aren't enough skilled numpy and cython programmers hanging around that board to give good and timely answers. I'm currently one of the most active numpy coders there, and my reputation is only 1000.

This is in fact not at all wrong. We have a participation problem, and it makes it difficult to get good numbers of people participating. We have spent a lot of time trying to fix this, but it just hasn't happened yet.

Unfortunately, when you specialize in something like we do, but for a very broad selection of items, it creates this atmosphere of people feeling like we're not going to be able to help them.

To your problem, there are only two real solutions to this:

  1. Increase the number of users participating and asking questions.
  2. Learn an/some additional language(s).

Option 1 has obvious benefits, we increase the community drive, increase participation, etc. It's difficult to do, you have to find people to participate, but when done correctly you can increase the feel for all of the community. This would solve all of the issues I mentioned above, but it's a very long and ongoing process.

Option 2 has different benefits, you learn a new language, increase your skill, and venture out into new territory. Unfortunately, it requires a lot of work to do. (Learning a language isn't always easy.)

Personally, what I would advise you to do is come into The 2nd Monitor (our main chat room) and chat with us, increasing your visibility may be as simple as talking with the community in a more interactive environment. (Often times we do something referred to as "pimping" where we post questions/answers that deserve more +1's.)

We can also help you learn new languages and get more experience with them to help increase the number of areas you can work in. We're all here to help each other, and that is (in my opinion) the best place to do it.

Generally speaking, if it is a good answer, someone will see it and begin the process of up voting and spreading it around. (One of our regulars, Malachi, tweets questions periodically on Twitter.)


I'm Part of the Problem

As forsvarir said, one of the biggest issues is voting, by askers and answerers.

Take myself, for example. I'm going to call myself out because I know I am a problem with it, and I'm not going to get upset about it (I'm trying to fix it and recondition myself, but it takes time):

Member 1 year 7 months 800 votes

Those numbers are bad. Really, really bad. I've been a member for 1 year, 7 months (or 19 months), an average of 30 days per month puts us at 570 days (give or take, exact numbers don't matter here), which means I have voted an average of 1.4 times per day.

We get 40 votes in a day, that means I should have roughly 22,800 votes right now. I'm 22k short. I've used 3.5% of my total vote allowance for the lifetime of my membership of Code Review. That's not good. I am part of the problem.

Why?

You might ask why I don't vote as often as I should? And I don't really have a good reason. In fact, I don't have any reason. I voted all day every day when I first joined, now I hardly use a vote a day. This is a problem.

We should encourage more voting, not less. We should encourage users to use their vote allowance in a day. They don't have to all be up-votes. The world isn't cherries and sugar-plums, but as stated in the answer I linked to, if you're answering a question, you should usually up-vote it at the very least.

How bad is this?

Votes generate score, score generates reputation, reputation generates motivation, motivation generates activity. Therefore, votes generate activity.

If we don't vote, we don't generate activity. People don't want to participate in a site that doesn't have activity. It's plain and simple.

I've been collecting some stats for a while, and we have been getting roughly 27 questions per day, and 37 answers per day in the last month. That means we get a total of about 64 posts per day. There is no excuse for me to not use my vote allowance. None.

Also, I just did some math, and if all the people in our main chat room regularly used all 40 votes every day, we could create over 1,000 votes per day on this site. If we applied those to all the incoming questions and answers, we're looking at nearly 16 votes per post. Even if all those votes were only used on questions, just the regulars can generate 5,000 rep a day to spread around the site.


On a personal note, much like Thomas, I do most of my code reviews here simply out of fun. Internet points are great and all, but I have learned a lot more here than I ever though I would, which I think is also a very good value to this site. It's more about helping people, and providing knowledge than it is about gaining reputation.

\$\endgroup\$
  • \$\begingroup\$ " increase participation" << this is exactly part of the problem. The gamification of QA has increased participation, but the point system balance on areas of the network that don't have lots of activity is flawed. Not flawed by fact, just flawed in that I don't feel like participating. Even recognition from SE in terms of badges that see I have taken 2 hours to complete a CR would be a step in the right direction. \$\endgroup\$ – Damien Roche Dec 30 '16 at 19:01
  • \$\begingroup\$ @DamienRoche You're absolutely right, we have tried time and time again to increase participation, but it's difficult. \$\endgroup\$ – Der Kommissar Dec 30 '16 at 19:08
  • \$\begingroup\$ Hmm.. seems this is a much more difficult problem than I first imagined. Think I might stick to programming ;) \$\endgroup\$ – Damien Roche Dec 30 '16 at 19:09
  • \$\begingroup\$ @DamienRoche It's a very difficult problem. A lot of us regulars have tried to solve it many times, and it takes a lot of insight into information we just don't have or can't draw conclusions from easily. As a result we're stuck trying things regularly to see if they help. :) \$\endgroup\$ – Der Kommissar Dec 30 '16 at 19:11
  • \$\begingroup\$ Couldn't a solution to that problem be to split the site up into one for each language? Of course, that would be a huge amount of work, but aside from that, it would make the communities much more attached to SO I could imagine.. \$\endgroup\$ – Anton Lorenzen Dec 31 '16 at 17:41
  • 2
    \$\begingroup\$ @anfelor We review a lot of languages here, if we split the site up like that none of the language-specific sites would get out of beta. \$\endgroup\$ – Der Kommissar Dec 31 '16 at 18:18
  • 4
    \$\begingroup\$ I don't think voting just for the sake of voting is a good idea either. What we need to find is a reason for people to look more at other posts and really read the code and the answers. \$\endgroup\$ – Simon Forsberg Jan 2 '17 at 10:56
26
\$\begingroup\$

Forget about the rep. It's not about the rep. Or the badges, or the privileges. Oh sure, SE gamification is part of it, but it can't be all. This is probably going to read a bit like a rant, but...

Let me flip that around.

I monitor and answer Stack Overflow questions in the tag - a tiny little tag in SO-land: has 173,998 questions, has 73,666.

I'm tracking progress for my gold tag badge on SO.

SO VBA tag badge progress

I'm 124 answers above the criteria, yet still 138 votes short; that's 2.6 votes per answer. Contrast with Code Review, where I'm tracking the same badge:

CR VBA tag badge progress

That's 5.2 votes per answer, and a much more balanced progress (1000/200=5.0).

And to be honest, I don't know what it is that motivates me to keep answering SO questions in that tag; one is lucky to get an upvote at all (I suspect quite a lot of the votes come from a chat community), even if posting an answer doesn't take 30 minutes. Or does it?

I see all these SO answers written in 30 seconds, that give the starving OP a fish, when clearly what they really need is a fishing rod. OP needs to understand why things work a certain way, but will be happy to accept (when they do bother with that green checkmark- here's a recent example) an answer that basically boils down to:

try this:

{code-dump-you-can-just-paste-and-move-on}

And that's when the question is on-topic at all. 80% of the time it's either a {poorly asked} duplicate, a bad question asked by someone that can't be bothered to merely step through their code, or just plain unclear or blatantly off-topic: I spend more time closing and downvoting and searching for dupes than actually answering interesting questions and helping people.


Ok, so why answer on CR then?

Because as an answerer on Code Review, you can take the time to post a real helpful answer that actually teaches something. Not just "here's a better implementation" (code-dump answers are actually heavily discouraged here) - you get to learn things, and teach at the same time. When I hit the post answer button on CR I know I've just made the Internet a better place.

And improving code that already works feels much better than fixing broken that's only broken because the OP is being lazy and asks on SO whenever they forget a semicolon1.

What motivates me to answer on CR is simple: I have this obsessive-compulsive disorder that makes me cringe when I see poorly written code, and answering on Code Review helps me canalize the energy and keep my sanity. I think.


The VBA tag has just over 1/4 of questions on CR - and it's well alive and healthy. It didn't get there magically. Not too long ago a handful of CR regulars got together and decided to make a thing on this site - they created content, posted answers, self-answers even, offered bounties, commented on SO to bring new blood over to CR so that more content would be generated, more points of view would even be added to existing answered questions; before long, the tag hit 100 questions and became "badgeable", and now we regularly see VBA questions on CR, and every now and then there's a couple of new faces in the tag, which we greet with upvotes and welcoming comments. Chat plays a big part, too. VBA on CR benefited a lot from the project and its contributors, for example.

Bottom line, this is your site. Own it. That is the real motivation for answering on CR: seeing the site succeed in every way, seeing faces familiar from SO wander over here to help you make the Internet a better place, seeing a tag sub-community being born out of a handful of people, grow, and prosper. The votes, the rep, the badges, the game... comes far after that.


1 That's a figure of speech. VBA doesn't have semicolons.

\$\endgroup\$
  • \$\begingroup\$ Sometimes they even accept link-only answers that end up becoming obsolete, and I'm sure there are still more around. I hate link-only answers. /rant \$\endgroup\$ – Jamal Dec 30 '16 at 21:41
  • 5
    \$\begingroup\$ I just want to say I fully agree with everything you've said here, and you've touched on exactly what made me post CRs in the first place. The reputation doesn't mean much to me, anyway. Who cares if I have 150 or 150k. Is that going to help pay off a mortgage? It has zero value to me in the real world. I was just wondering, as I had lost some motivation due to the inactivity, if others had felt the same and what their opinion was. Happy to have found lots of balanced opinions here and a new sense of responsibility as a user of SE. \$\endgroup\$ – Damien Roche Dec 30 '16 at 22:22
  • \$\begingroup\$ of course, semi-colons are valid with Debug.Print "abc"; "def"; and they're valid in Excel constant arrays x = [{1,2,3;4,5,6;7,8,9}] \$\endgroup\$ – ThunderFrame Jan 3 '17 at 22:52
  • \$\begingroup\$ @ThunderFrame I meant as in instruction terminator token ;-) \$\endgroup\$ – Mathieu Guindon Jan 3 '17 at 22:53
16
\$\begingroup\$

My question is how are we supposed to stay motivated to spend our time and effort reviewing code when our efforts are barely recognised and, because of that, not valued by SE by way of reputation?

I don't really review for the reputation, there are questions that I simply wouldn't answer if that was the case. However, I know that there are people that do care about it and as a consequence I interact with the site accordingly.

My gut reaction when reading your question was, I wonder how many times they've voted. As it stands currently, you've been a member of the site for 2 years, 8 months. You got the association bonus, so have been eligible to vote for that entire period. Being a member doesn't mean that you visit the site (I was a member for almost 5 years before I started actually using it), however you have been interacting with the site since at least Nov 22nd (your first answer). In that time, you've cast 1 vote on meta and 2 votes on the main site (all for answers).

From my perspective, you appear to be a part of your own problem. If you're concerned about there not being enough voting to reward your efforts, why not start by paying it forward and voting on more answers if you come across them. There's a reasonable chance that this will help to reengage people that have come before you and encountered a similar situation.

I don't do ruby, so I avoid it, however I'm a fairly prolific voter. If I decide to answer a question, I'll generally:

  • Upvote the question. If it's good enough that I think it's worth answering, then it's usually good enough for an upvote. I say usually because there's always an exception, I will always vote on the question but occasionally it'll be a downvote.
  • Review the question to see if it is worth editing it to increase its visibility/readability. A good title can make a huge difference, particularly if you manage to get the question onto the HNQ list.
  • Review any other answers that are already on the question and if they have anything that could be useful I'll upvote them. Sometimes people are curious about why they get upvotes and they'll return to questions to look an see what they wrote / if anything has changed. Code review is a fairly friendly site, so these returning answers will often read new answers and vote on them.
\$\endgroup\$
  • 2
    \$\begingroup\$ Bang. On. It all starts with healthy voting. \$\endgroup\$ – Mathieu Guindon Dec 30 '16 at 21:21
  • \$\begingroup\$ Well that is a valid point, but there aren't many answers in the Ruby section for me to vote on, and I don't see them anyway because I generally only look at questions which haven't been answered. -- that's because I don't like to repeat what other answers have suggested and most answers I've seen on SE answer the question. I'm not going to waste time answering it again. Same reason I forward people to previous posts if their question was already answered elsewhere. I think that's just a side-effect of how I use the application, and yes, therein lies another problem. Here, take a +1 ;) \$\endgroup\$ – Damien Roche Dec 30 '16 at 22:15
  • 4
    \$\begingroup\$ @DamienRoche CR is rather different than other SE sites though: while most SE sites are purely Q&A and answering an answered (marked as accepted) question rarely brings much to the table, on CR you can often find things you see that other answers haven't mentioned - and learn things and reward other reviewers in the process. \$\endgroup\$ – Mathieu Guindon Dec 30 '16 at 22:46
  • \$\begingroup\$ @Mat'sMug I think that's another thing that's not sitting well with me. CRs are not answers to questions - and the QA format doesn't seem to work all that well, nor the tools we're given to effectively review code. Compare to Github, for example. But yeh I agree, it's not typically QA and shouldn't be treated as such. \$\endgroup\$ – Damien Roche Dec 30 '16 at 23:03
  • 2
    \$\begingroup\$ @DamienRoche The point is that github review tooling is made with a specific ideal in mind. It's made for line-by-line checking of things and it does that really well. What it's not made for is broadly applied critique on all aspects of code and it's also not made for contextual representation of code. It's hard to review design on github. But it's harder to do that than it is to do that on code review. github also has the disadvantage of allowing no other context than what you can find in the repo. on CR the OP can explain what their code is doing. You're comparing apples and bananas \$\endgroup\$ – Vogel612 Dec 30 '16 at 23:45
  • 1
    \$\begingroup\$ I'm not comparing the whole. I get that they are different. I'm just saying it would be really cool if we could actually get some decent code review tools on this application that is supposed to be helping us code review. \$\endgroup\$ – Damien Roche Dec 30 '16 at 23:57
  • 2
    \$\begingroup\$ I would love to see some better tools for doing the reviews. As it stands, I've taken to opening the same question in 2 windows - one scrolled to the question, the other scrolled to the answer I'm writing because it's such a pain to go back and forth. \$\endgroup\$ – user1118321 Jan 1 '17 at 3:29
  • 2
    \$\begingroup\$ I do all of my reviews offline and cut and paste my answer once I'm done. I use an updated version of the script in this question to automatically download the question in md format. \$\endgroup\$ – Edward Jan 3 '17 at 10:15
13
\$\begingroup\$

I'll offer a counter-perspective.

I recently started participating here on Code Review, after having my attention piqued by a particular "Hot Network Question" about optimizing a particular snippet of code in VB 6. It turned out that I had a lot of fun answering that question, even though it took considerably longer and required more effort than my average Stack Overflow answer. But I also noticed something else interesting: I received a lot more upvotes for that answer than I do for what I would consider a comparably good Stack Overflow answer.

Now, I don't really care about magical Internet points (although it is pretty frustrating at times to not have retagging privileges on this site when I'm so used to having them on SO), but I looked around and found a couple of more questions here that looked like they might be fun to answer. And indeed they were. And, lo and behold, those answers also netted me boatloads of rep—again, far more than I would normally expect from comparable SO answers.

Sometimes you get lucky on Stack Overflow, and an answer literally blows up, but that's a rarity and mostly caused by that question sitting in the "Hot Network Questions" list for a couple of days. Most of the time, you write a comparable answer and it gets one, two, maybe three upvotes—e.g., this answer or this other answer. The questions themselves never went supernovae, so the answers mostly got overlooked.

The critical difference between Stack Overflow and Code Review is that because we're a much smaller community, it is actually possible for active users to read and keep up with the new content. Questions and answers that get posted are bumped to the front page, and because we don't get hundreds of questions per-day, they're still there the next time you log on. Here, it is reasonable to start at the top of the "newest questions" list and go down it, reading/voting/answering all the questions that were posted since your last visit (assuming, that is, you've set tag filters to zap out questions for languages you're illiterate in). That just isn't possible on Stack Overflow. Even in some of the relatively low-activity tags that I follow, I often can't keep up! It is like drinking from a firehose over there, whereas we're more like a steady stream from the tap.

EBrown says he—and we—aren't voting enough, and I agree that definitely needs to change. The good news is, it is actually possible here for you to see everything that is relevant to your interests and spend your votes wisely. On Stack Overflow, I throw away most of my daily vote allotment downvoting sheer garbage.

Ultimately, though, I have to agree that if your motivation for participating is to earn reputation, you are probably doing it wrong. I can only speak for myself, but it is absolutely not the gamifying of Q&A that brought me here. Rather, it is (in no particular order):

  • the satisfaction of helping people
  • the desire to improve my knowledge and learn new things
  • the ability to subject my existing knowledge/skills to expert review
  • the fact that Stack Exchange does Q&A right, with high quality standards that are actually enforced, minimal chit-chat, absence of social-networking features, and so on.

Reputation is valuable only insofar as it is intertwined with moderation abilities, and thus furthers that last bullet point. So far, in my experience, Code Review is small enough that the diamond moderators do a superb job of keeping it clean, and I'm not even frustrated by my current inability to vote to close, vote to delete, etc.

\$\endgroup\$
  • \$\begingroup\$ Just stick around and continue participating and you'll have those additional privileges in no time. \$\endgroup\$ – Simon Forsberg Jan 2 '17 at 11:11
12
\$\begingroup\$

I'm probably going to get a tomato thrown at me for this, but here goes: if you're providing answers solely or mostly for the fake internet points, you're doing it wrong.

I'm "lucky" that I mostly work with well-known languages such as C++ and Python, which is a result of how I first learned programming through schooling. However, not all of my answers to these tags, even the shortest ones, get very many votes. In many cases, it's because these answers have gone under the radar, but could also be because they're not as "attractive" (take a look at my answers and see how redundant they are). Regardless, they still help the site in some way and document yet another example of clean code. And if there's one thing I like, it's having the cleanest code possible.

As a side-note: part of my role as a mod is to keep the site clean. I love this aspect of my "job" because it helps keep away the fluff so that it's easier for others to find the code that's best suitable for review on this site. Yes, this may not mean much in regards to answer motivation, but I see it as a piece of the puzzle of making this site a little more attractive to answering.

Overall, as long as this site is not as busy as other graduated sites, you may still have to decide whether or not the time spent on one answer may be beneficial. This could mean leaving few to no long answers, and that's okay. Even one small answer on an older question can knock that question off the unanswered list and help someone (not just the OP) who happens to encounter that question and can benefit from that review.

\$\endgroup\$
  • 5
    \$\begingroup\$ throws a tomato at you just because you said a tomato would be thrown at you \$\endgroup\$ – Thomas Ward Dec 30 '16 at 19:26
  • 4
    \$\begingroup\$ @ThomasWard: Good. I like tomatoes. :-) \$\endgroup\$ – Jamal Dec 30 '16 at 19:27
  • 1
    \$\begingroup\$ Thanks for your point of view. I've not brought this up because I'm personally butt-hurt over not receiving my fake internet points, but because I noticed my lack of motivation to spend time on other CRs after my first 3, and figured perhaps others had felt the same. I was essentially wondering is this a known issue and, if so, how do we fix it? I think I've got what I'm looking for. Here, catch! throws rotten tomato \$\endgroup\$ – Damien Roche Dec 30 '16 at 19:31
  • 3
    \$\begingroup\$ @DamienRoche: Apart from gamification, we just don't know. Maybe it'll still take more time, or maybe we just have to do the best we can. Maybe it's not a huge deal if we can't help much with lower-activity tags, and there's always the possibility of someone from SO covering there for a bit. As was mentioned earlier, other sites are very specific, while we're much more broad. Of course, SO is the same way, but that's an exception since it helped give SE its start. \$\endgroup\$ – Jamal Dec 30 '16 at 19:44
  • \$\begingroup\$ @Jamal I'm coming with some kitchen paper for aid! After a year coming here again, the whole site is still receiving low traffic. Lower than it should regarding the mass of pure review questions that should be moved here I have observed with the c++ tag at Stack Overflow alone. I'm going to leave a link on any of them as soon caught, but without an official migration close reason that will probably stay at that frequency. Unfortunately migration will be still left to mods, although frequently asked as a feature request. ... \$\endgroup\$ – πάντα ῥεῖ Dec 30 '16 at 20:08
  • \$\begingroup\$ @Jamal From my part I would appreciate that (at least as soon I'm in full ornate again). \$\endgroup\$ – πάντα ῥεῖ Dec 30 '16 at 20:08
  • \$\begingroup\$ throws a clean tomato \$\endgroup\$ – ThunderFrame Jan 3 '17 at 23:00
10
\$\begingroup\$

Part of the problem may well be that your answers are so massive. I've noticed there is a correlation between answer length and votes--simple answers between 3-7 paragraphs long garner the most votes, while complex and/or long answers garner fewer votes because people tend to vote after they finish reading (and probably more so when the vote button is still on the screen to remind them).

Just keep answering away, maybe give people shorter answers, or even multiple answers--one for the style and other technical details, and one on the algorithm, perhaps. Come join us in our chat room, and have fun!

\$\endgroup\$
  • \$\begingroup\$ Hmm. interesting. That sounds more like gaming the system for upvotes because the format simply isn't working for low-activity questions. I do actually run through general advice first, then go through the process of refactoring. Valid point, though. I see what you're saying. \$\endgroup\$ – Damien Roche Dec 30 '16 at 19:03
  • 1
    \$\begingroup\$ @DamienRoche: The advantage of shorter answers is that it allows others to review other aspects, also increasing rep opportunity for low-rep users. More answers per question is a good thing, and it could even make the question more attractive (you probably hardly ever see a Hot Network Question with just one answer). \$\endgroup\$ – Jamal Dec 30 '16 at 19:06
  • \$\begingroup\$ That is true @Jamal. I'll try to take all this into account and align more with the nature of how things work. \$\endgroup\$ – Damien Roche Dec 30 '16 at 19:06
  • 2
    \$\begingroup\$ This is probably true. And although my extremely long answers have gotten more than enough votes to make me happy, I'm not sure that they are actually the right way to be answering questions here. I have a hard time being concise in general, but here especially, where you're supposed to be reviewing all aspects of the code, I really don't know what to leave off, so I make the answer as comprehensive as possible, resulting in a pages-long diatribe that very few people probably ever bother to read. I see that some people just pick one or two things to comment about, but that seems incomplete. \$\endgroup\$ – Cody Gray Dec 31 '16 at 11:59
  • 1
    \$\begingroup\$ @Jamal The disadvantage of shorter answers is that there's no guarantee anyone will come and review the parts that was not covered. \$\endgroup\$ – Simon Forsberg Jan 2 '17 at 11:07
  • 1
    \$\begingroup\$ There is a potential feature request to SO. The vote buttons should be visable while the question is visible (ie they should float down as you scroll down). \$\endgroup\$ – Martin York Jan 6 '17 at 19:11
10
\$\begingroup\$

It's a fact of life that votes fail to reflect the quality of the answer or the effort you put into it, and the sooner you come to terms with this fact, the happier you will be.

People are motivated by different things, but as I see it, the benefits of answering questions on Code Review are as follows:

  1. It's fun to figure out and improve code.
  2. The poster (or other people reading my answers) might be helped to improve their code and their programming practice, contributing a little to the quality of my profession.
  3. I get practice in the skill of reading and reviewing code, a vital skill in my profession.
  4. I get to work on problems and with technologies that I might not otherwise encounter in my professional career. (For example, I learned NumPy through fixing people's NumPy code here on Code Review, and was later able to use my answers on this site to help win a contract to work on a large NumPy/SciPy codebase.)

Votes don't contribute much to the value I get from this site. I have answers with just one vote that I am prouder of than some of my highest-scoring answers.

\$\endgroup\$
  • \$\begingroup\$ Presumably, though, you would have had a harder time using your NumPy answers as evidence of your knowledge if they hadn't received any upvotes. :-) \$\endgroup\$ – Cody Gray Jan 3 '17 at 6:15
  • 2
    \$\begingroup\$ @CodyGray: As far as I know, my client did not look at the vote counts. \$\endgroup\$ – Gareth Rees Jan 3 '17 at 17:58
8
\$\begingroup\$

Personally, I think everyone has different motivations. Some of us want to help newer coders review their code and offer pointers for improvement so they learn. Some of us have nothing better to do.

I do code review every so often when I have nothing else to do and boredom is likely to set in. Code Review helps me help others, but also helps me to burn time when there's nothing else to do.

Just my two-cents. :)

\$\endgroup\$
  • \$\begingroup\$ I do agree. I've done these CRs when I've had R&D time at work. I've also enjoyed them because I am further solidifying my own knowledge about good code. Having said that, doesn't appear there is any actual nudge from SE itself apart from the reputation system, and yet participation is their lifeblood. Without it, the whole place would stagnate and crumble. \$\endgroup\$ – Damien Roche Dec 30 '16 at 18:57
5
\$\begingroup\$

I've been around for a while, though less so for the past year-ish. I too usually review Ruby but also a lot of JavaScript (since there's more of it).

Other answers talk about participation and voting (which I'm categorically bad at), but I'll just try answering your question directly from my own perspective.

What is the motivation to spend time doing a code review?

Learning. Even if you're the one answering, you're learning too.

To me the site is in some respects a never-ending stream of little programming challenges. Or at least, that's what got me hooked. Someone had to solve some task in code, and I couldn't help but try my hand at solving the same task, and see if I could do it better. (I don't always do that; sometimes I just do a point by point review without rewriting the code itself.)

But simply presenting alternative code is not a review - that's more like a StackOverflow "here, try this" answer. So the second part is making the case for one solution over another. Why is solution A better than solution B? Or at least, why do I prefer one over the other? And that has taught me a lot.

It also exposes you to new stuff. Sometimes I've had to understand a domain, or a technique, or use an API I didn't know in order to write a review. Sometimes that new knowledge has proven useful in my day-to-day work, and sometimes it's just neat to know.

And sometimes I've realized that a point of criticism was actually subjective, but which I'd left unexamined and thought of as objective (writing code is plenty subjective, so it's not inherently bad, but at least you should know if what you're arguing is fact or opinion). In any case, reviewing code gets me to think and learn.

It's the old schoolteacher refrain: Don't just give an answer, reason about it, and argue your answer. Show your work.

And of course, sometimes you come across a question that has better code than you can come up - and you definitely learn something from that.

By the way, I'm a sucker for fake internet points too. They're definitely a motivating factor. But while writing a review, I'm more motivated by trying to help, teach, and learn (and show off; I'm no saint). As soon as I've posted a review, though, I eagerly await those sweet, sweet fake internet points it'll (hopefully) yield.

\$\endgroup\$
4
\$\begingroup\$

I have a suggestion that might make it more interesting for you. I don't know if it's considered kosher, so feel free to downvote if it's a bad idea.

Why not take some questions or answers from StackOverflow in ruby and make them into code review questions? You could even post your own answers if you want to. That would bring more ruby question to Code Review and might make it more interesting to answer them, particularly if you see things on SO that make you cringe. :-)

\$\endgroup\$
  • \$\begingroup\$ Have already started doing that :) Saw a question the other day that I didn't know how to solve, but suggested the questioner post it on CR so I could review the design. He did and we now have another CR :) \$\endgroup\$ – Damien Roche Jan 1 '17 at 19:16
  • 3
    \$\begingroup\$ You could certainly do this, but be sure to link to the original SO post and give explicit credit to its author (by name). I know this probably goes without saying for many people, but I just want to point it out so no one can say they didn't know! \$\endgroup\$ – Cody Gray Jan 3 '17 at 6:16
  • \$\begingroup\$ There is also the rag-to-riches tag: you can start improving the code from another question in the network and ask the community here what else. \$\endgroup\$ – 409_Conflict Jan 7 '17 at 10:00
  • \$\begingroup\$ As stated at my comment on @Jamal's answer, I'd appreciate more questions migrated from SO to Code Review. Unfortunately at SO CR isn't considered as an official migration site (unless feature requested a lot). So we have to promote CR using appropriate comments or custom close reasons. \$\endgroup\$ – πάντα ῥεῖ Jan 9 '17 at 18:37
1
\$\begingroup\$

I only visit C# section of SR on somewhat regular basis, and it is fairly lively. Obviously, it is a desert island compared to SO, but you have a good chance of getting at least one good answer, if your question is good. I do not know how bad things are for other languages though.

As for my reasons... Votes are nice and all, but I do it mainly for myself:

  • Reviewing forces me to think outside the box. It is all too easy to get into habit of doing things a certain way without ever giving it a second thought. Reviewing someone else's code often gave me another, fresh perspective on how familiar problems can be approached.
  • Reviewing forces me to question my own convictions. It happens to me all the time: I make a claim in my answer and write a few sentences to back this claim up, only to realize, that it is not as convincing and straightforward as I initially thought. Or even straight up wrong.
  • Obviously, I learn a lot from reading a high-qulaity code, which often can be found in both: questions and answers. Looking at bad code can be a learning experience too.
  • I also prefer spending my time here over SO, because you do not have to be FGITW, as someone mentioned in the comments. I normally write my answers during coffee breaks or when I rebuild a solution. I often stop typing in the middle of an answer, just to come back a few hours later, finish it and find that my answer is still relevant. This feels much more rewarding, compared to what normally happens on SO.
  • I guess a sense of community and personal fame also factor in, as with anything in life, but I am not sure how much SR can deliver on those fronts and how important those are to me.
  • Edit: I completely forgot the most important point, which was brought up by others by relates to me as well: reviewing is actually pretty fun. :)
\$\endgroup\$
  • \$\begingroup\$ On a side note, I think it is worth researching what makes a question popular. By popular I mean >2k views. I am often surprised to see a question I find interesting getting 50 views next to a fairly basic question getting 5k. And i have no idea what makes the difference. Was it the way the title was formulated, that it pops in search engines? Was it the topic itself? Or was it because the question was linked on popular external resource? \$\endgroup\$ – Nikita B Jan 9 '17 at 12:37

You must log in to answer this question.

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