Why you should participate in Stack Overflow

If you’re reading this blog, you’re probably a programmer and you probably use Stack Overflow daily. It launched back in 2008 and I’ve been using it, sometimes without knowing it for these past few years. This year, I decided to consciously contribute back to Stack Overflow and also try to rack up 1000 reputation points, aka rep. As of this writing, I’m up to 2,106 rep and very happy about my experience contributing. So… why should you participate on Stack Overflow and what tips can I offer on how to do that?

Save the programmer, save the world (or Why you should participate)

Stack Overflow (SO) shows up frequently in Google searches. Google any Android exception or iOS error message and you’ll get at least one SO hit, if not several. It is the programming world’s equivalent to Wikipedia, being somewhat of a canonical resource for programming questions and answers.

Programmers seem to turn to SO first nowadays, even before asking other programmers or consulting documentation. Why is that? Well my theory is that we don’t want to interrupt other people and documentation can be hard to parse. On the other hand, a lot of times you can find either working code or good pseudo-code in an SO answer. If you think this is just my opinion, consider that SO has 15,000,000+ software developers visiting every month.

SO is also a great case study in gamification. Most programmers I know are avid game players (both board and video), so incentivizing us to contribute by rewarding us with points is a natural fit with our brains. SO has tuned this game mechanic over the years to encourage good questions, great answers and discourage spam, which is the natural enemy of any online community. I confess that some nights I would stay up later than I would so I could try to answer just one more question, which might lead to a few more rep.

Stack Overflow icon

Those are the obvious reasons, but there are deeper, more meaningful ones to contribute to Stack Overflow:

SO is good for your resume. Before I interview a potential programmer to join my team, I always check their SO profile, not just to see how much rep, which is a rough measure of how much they participate and how valued their contributions are, but to see how well they communicate. Programmers don’t just write code, but they also have to discuss potential problems, solutions, relay their progress, etc. Reading someone’s set of SO answers is a proxy for that. In past years, I would have said that I would go to read their technical blog, but those are sadly in decline due to a combination of SO, Twitter, Google+, App.net, etc.

You will learn as a consequence of answering questions. Even if you already know it, having to communicate an answer clearly to someone else will ingrain that knowledge into your brain further. Sometimes it is good to find a question that has interested you before that you can do a bit of research into and you’ll satisfy your curiosity while answering someone’s question.

“I play the Stack Exchange game happily alongside everyone else, collecting reputation and badges and rank and upvotes, and I am proud to do so, because I believe it ultimately helps me become more knowledgeable and a better communicator while also improving the very fabric of the web for everyone. I hope you feel the same way.”
- Jeff Atwood in The Gamification

Best of all, you will be helping people. We exist in a larger community of programmers and I think it is a good policy to help others when you can. Whether you subscribe to The Golden Rule, you should consider that if you use open source, if you rely on the answers in Stack Overflow, that it took someone willing to help to write those things that you use when you write your own apps.

Now the hard part… (or Tips on participating)

When you first register with Stack Overflow, you’ll start out with 1 rep. Which means that the only thing you can really do is ask a question or answer one. You can suggest edits too. I would suggest starting out by asking a good question, including what you have tried and any relevant code. That’s probably the easiest way to get started and you’ll get 5 points every time someone votes your question up. Voting a question up means that it is well worded and usually meaningful to the voter.

If you ask a question, make sure to check back and accept the best answer that you get. You will reward the answerer and you’ll get an additional 2 points yourself. Note that your accept rate is tracked and if you ask too many questions without accepting, people may stop answering your questions, since that is a sign that you’re not being a good member of the community.

Another way to participate is to share your knowledge by answering questions. That’s what I have been doing, since I’ve learned a thing or two over my 18 year programming career. (I feel old now.) In any case, I think everyone has some expertise to share and that’s how we all learn as a community: I share what I know, you share what you know, we both get better.

Make sure you answer questions thoroughly. Don’t just do a quick link to a blog post. Code is probably the best. If you do include code, make sure it compiles and works correctly. Include screenshots if it is relevant, for example if someone is asking how to change the background of an action bar, show a screenshot with a multi-colored action bar. Learn the right markup, which is in Markdown or use the toolbar to format your answer to properly insert hyperlinks, quote the question, quote documentation, etc.

Multi-color action bar

Once you get up to 15 rep, which shouldn’t take too long, then start to vote up questions and answers. This will help others figure out which answer is better than the others if there are multiple answers to a question. It also helps figure out which questions are popular.

Fill out your profile and include an avatar. I greatly prefer answering people’s questions that have a face to them, not just some randomly generated artwork. Include your qualifications and this might also help people judge whether you are credible or not, especially when you are first starting out.

Be persistent. Ultimately, you’re dealing with other people who have their own schedules. Just because you ask a question, it doesn’t mean that people are going to answer it right away. If you really want it answered and haven’t had any takers yet, then share the link to it on App.Net or Google+ or Twitter. Conversely, just because you answer a question, it does not mean that the system will automatically recognize your contribution and award you 15 points. The person asking the question has to do that and they may have some follow-up comments. Sometimes you just have to wait. Sometimes you will never get rewarded and that’s alright – you still have contributed to the community. And who knows – weeks, months or years later, someone might come across your question because they have it themselves or appreciate the answer that you gave and upvote you, sending a few more rep your way.

4 thoughts on “Why you should participate in Stack Overflow

  1. Tiago Almeida

    I started to participate in StackOverflow when I got some rep (300?) because of one year sign up. I signed up to create a question and then one day I answered one. As simple as that.

    One day, when I was seeing one question I received that rep and I decided that it was time for me to give something back to the com unity. I had a season where I would there daily to answer questions. However, in the last season I have been working more and decided to invest my time in creating a good feed to receive articles/news than investing my time in the StackOverflow.

    I feel that I don’t understand the way voting works. Some answers are upvoted that have 0 info, or some people just create an answer with 0 content then they upgrade it just to be the first one. In the meantime I am doing a decent answer and someone receives upvotes and keeps updating his answer. Basically I found hard to get upvotes unless I am the first one answering .

    In the questions I can’t be too specific but I can’t be too generic either. Is hard to balance those factors.

  2. Jonathan Wight

    I refuse to participate any more in SO due their actively hostile editorial community. Too many good questions with useful posts are deleted because they don’t fit into SO’s narrow view of what belongs there. I’m not going to waste my time contributing if some SO editor on a crusade can just destroy useful information at a whim.

  3. luis Post author

    Tiago:
    I have found that my answers can get upvotes even if it isn’t the only one if I have more thorough answers with good formatting, possibly with either sample code or screenshots. However, sometimes you won’t get an accept or an upvote and I think that’s OK too since you’re giving back to the community.

    @schwa:
    I know what you’re saying – more general questions aren’t encouraged on SO like your one about Singletons in Objective-C. I’m not sure what the best answer is, but perhaps Quora, programmers.stackexchange.com or your own technical blog.

  4. Joe Lapp

    SO has been a great resource for me as well, helping me overcome little problems as I get up to speed with new technologies. I wonder if perhaps the single most important reason to contribute to SO is to empower the world. I’m rarely stuck for long on stupid details, because there’s usually an answer to overcoming the problem on SO; and when there isn’t, there seem to be a slew of people eager to help. “Can’t figure it out” is no longer a valid excuse.

    I have also encountered Jonathan’s issue, even though I’m not an active SO contributor. I was looking for some design advice and found my exact question in SO, complete with a beautiful answer. But the question had been marked inappropriate and rendered unable to accept further comments or up-ticking. I found no other decent answer on the net.

    It appears to me that SO only allows questions having provable answers and doesn’t allow questions whose answers boil down to wisdom or experience or opinion. That limits SO to dealing with just the lowest-level questions. SO might help people to become better coders, but it’s not likely to help people become better designers.