Friday, September 19, 2014

How to do Stack Overflow Wrong

Stack Overflow is not just a resource; it can be a game.  A very addicting game, if you really get into it.  Here's how it's often done by those who really "play", but I don't suggest doing it like this if you want to maintain your sanity.

Well, first I want to clarify that I'm not advocating for everyone to just quit contributing to Stack Overflow entirely.  This is more of a parody of Stack Overflow as a addictive online game, which for some people reflects quite accurately how they participate (to the internets' benefit, I should note!).

Assuming you have something approaching expertise in a certain area of programming, say MATLAB or C++, life as a regular answerer on Stack Overflow could easily go something like this (dramatized for effect):
  1. Stalk the new questions section in your tag(s) of expertise.  For example, check the "newest" tab for [matlab] every 1 to 15 minutes, depending on how busy you are.
  2. A question that actually seems worth answering pops up.  Hurray!  [reward]
  3. Quickly, scan the new question.  Mind racing, blood pressure rising.
  4. Can you answer it and how fast?  Standard operating procedure - it's all in the chart:
guide to obsessive stack overflow participation

Before going on, I want to remind that this is a tongue-in-cheek breakdown of the Stack Overflow (hereinafter known as SO) game.  To actually do SO "right", this is a terrible guide.  See Duncan Lock's Smart Guide to Stack Overflow for some good suggestions.  However, as it pertains to the potential for SO be a powerfully addictive pastime, I think the process diagrammed above is pretty accurate.


There are several salient points in this process, marked with superscripts in the diagram:
(1)Appearance of a new, promising question.  Will it be something you can answer and answer faster than everyone else?  A sense of urgency begins to mount as you click the question.
(2)Maybe you know the answer or feel you can explain it really well.  Awesome!
(3)As soon as you decide to answer a new question, the clock starts ticking.  You know other regulars will try to pounce on this one too.  You need to write quickly, but also make your answer high quality to score that sweet rep.
(4)You've typed your answer, and no one else has answered, not yet.  You are the fastest gun in the west!  You almost can taste that rep now.  Post!
(5)But what if someone did answer before you.  Your heart sinks, but you force yourself to read the other answer, hoping that yours is still better or even that theirs is wrong.  If so, sweet.  Post!  If not, you've wasted your time and someone else will get the rep you know you deserve.  At this point, you might decide to post it anyway, especially if the timing is very close.  Let the mob decide your fate.
(6)Your answer has been posted. You've made a few edits to get things nice and spiffy.  You wait patiently and...

It's all about the votes.  Upvotes send endorphins rushing into your bloodstream (or at least happy feelings to your brain).  Ahhh, reputation.  You've mastered The SO Game.  But.... what if a downvote rolls in?  What the H-E-double-hockey-sticks did someone do that for?  Grrrr, not even a comment to explain.  Worse, some other crappy answer got an upvote.  This game is no fun.

Fortunately, the latter scenario is fairly rare.  In general, your answer has to really miss the mark to get a downvote.  But often, your gem of an answer simply will go unnoticed.  You've wasted your time.  Your efforts are unappreciated, but... every so often...  jackpot!  The upvotes flood in.  The question was clear and accessible to a broad audience, and your answer was spot on.  Your obsessive question-answering behavior is strongly reinforced.

The game is fairly well-designed.  It's so easy to get sucked in.  Go ahead and answer some questions here and there (and by all means, ask some good ones!), but don't play the SO game get carried away (I still like to play, more and more as of late).  Don't play for reputation.  The truth is, no one cares about your reputation on some site, even Stack Overflow; don't fool yourself into thinking there is any redeeming real-life value to it.  For every 100k+ rep user, there are 100 equally skilled programmers who never bothered to play the game.

In a subsequent post, I'm planning to give some advice on how to do SO "right", where right is defined largely by how well you moderate your participation and your motivation for contributing in the first place. Hint:  Don't let the game take you by the ears (don't take it too seriously) and remember to have fun!  Also, only help those who are willing to learn and help themselves.

UPDATE (10/20/2014): I've started playing a bit again lately, and I can honestly say I didn't realize how much fun I had and how much I missed it.  Playing casually is the way to go.

No comments: