It’s going to be my 2nd Stack Overflow anniversary on Saturday (the 5th of Novermber, I know, it wasn’t on purpose). A quick summary: I (profile) just entered the top 20 users of all time, and I just provided my 5000th answer. Ranked 3rd in the Java tag. But enough about me – what’s so cool about stackoverflow, that it has become the most popular Q&A programming site so quickly? Many things. I haven’t changed the views that I expressed after my first month, but here are a bit more details from the perspective of an experienced user:
- learning – there are questions that you can’t answer, and when you see others’ answers, you learn something new. There are questions that you research before answering, so you improve your knowledge. Why do people ask questions that they can also research? Because you have a higher level of general programming knowledge that allows you to look at the right place and find the information. Even if you already know the answer, you get a better understanding when writing it down. Answering questions on SO can be compared to reading blogs that discuss common technical issues.
- you see where you stand – if others agree with your answers (and upvote them), that makes you feel confident in the topics that you follow. Which is a good thing (if it’s not overconfidence). Questions that people ask show you areas that you probably didn’t know about, but that are important. That way you get a more adequate view of where you stand with your programming knowledge.
- improving communication skills – (I should have put this on the top of the list). That’s something Joel and Jeff have emphasized on. Writing good answers doesn’t necessarily mean you are a good programmer. But it certainly means you are a good communicator. And that’s a very important skill. It might even be better to be a good programmer and a good communicator than to be a slightly better programmer that can’t communicate his ideas.
- improving analytical skills and problem-solving – you get to know what the questions is about. In many cases the questions are not well-phrased or miss important information. You have to analyze what information is needed, or what the poster has meant. Problem-solving is that job-ad buzz-word, but it actually has a meaning.
- speed matters – for some questions you must act fast, otherwise other answers will appear before yours and get all the upvotes. Actually, if I happen to answer a question 2 minutes after another correct answer, I simply delete mine and upvote the other – credit goes to the faster. How is that important outside SO? Well, sometimes you need to act fast in your programming career. Production issue, unhappy customers. If you can analyze and solve the problem in 5 minutes it will be way better than 10 minutes, let alone an hour.
- job opportunities – I don’t know if that’s a benefit, but some HRs look on stackoverflow and stackoverflow careers. You can be noticed and invited to an interview because of your stackoverflow profile. Apart from that, you can put your stackoverflow profile on your CV. That alone can’t be a reason to get hired, but it will likely be a plus. Don’t overemphasize it, though. My SO profile is at the very bottom of my CV. As I noted above – being recognized on stackoverflow doesn’t mean you are a good programmer (I’m not that good programmer, to be honest). But being ranked high might give you slight advantage.
- the game – yes, it’s actually a game. Jeff wrote about gamification recently, and stackoverflow is a usual example. Playing the stackoverflow game is addictive – trying to gain more reputation than others, trying to be ranked higher in the tags that you answer questions in, trying to get more badges. This is something that makes you return to the site and answer more questions.
- popularity – if you are giving good answers, and you are among the top users, you become recognized by the community. Someone might say “hey, I’ve seen your answers on SO”. And as a side-effect, your profile gets more views (12k in my case – not that much, but still a good figure). Well, in fact I wouldn’t say I’m popular, but I’m certainly less “nobody” than I was before.
- that “helping others” thing – the point of Q&A sites is for people to get answers. And from everything above it doesn’t look like answerers are exactly the selfless samaritans that are ready to help anyone in trouble. But it is always a nice feeling when someone writes “Thank you a lot, you made my day”.
Overall, the stackoverflow experience is very rewarding, in many aspects, and I’d encourage people to start answering questions. It’s not hard.
It’s not all roses, of course, so here are a few downsides:
- people often ask stupid questions. Don’t get me wrong, I’m not “bashing the noobs”, but dumping all your 400-line class and asking “Why do I get a NullPointerException” means you did not do any research whatsoever. I stopped answering questions about NPE a long time ago (unless they are something specific, or the NPE is not the only problem). Many of my downvotes are on these kinds of questions. There are probably hundreds of questions about NPE on SO, and thousands if you google it. The problem with that is that the database gets filled with many identical questions that obviously noone is going to benefit from (“Tell me what’s wrong with my code, I get a NPE” isn’t applicable to any other case). It is hard to ask a question. In fact, in many cases it is harder to ask it properly than to answer it. If you ask yourself “what information do they need to solve my problem”, you may eventually end up solving it yourself (happened to me). But that’s the problem-solving skill again
- answers on niche questions don’t get upvotes. When you answer a complex questions about spring (which is not the “smallest” tag out there) you may end up with 0 upvotes. If you answer a NPE question (fast) – 5 upvotes are guaranteed. More people know the answers to simpler questions, and therefore are ready to upvote you. That is a completely regular thing, but the end result may be a bit discouraging for niche-answerers. Then of course, these niche answers get accepted more often, and you can more easily have a top ranking in a specific tag.
- you may not get answers to very specific questions. I’ve asked 107 questions, and for some of them (the more specific ones that were about some not widely-adopted technology) I had to dig further down the issue and eventually come up with the answer myself. Again, this is a normal thing – way fewer people are ussing RabbitMQ than spring, for example, but for such tecnologies you’d better ask the questions on the support forum/group of the technology in addition to stackoverflow – you may get better answers there.
- it’s time-consuming. I don’t know how much time I’m spending on stackoverflow, but it’s certainly more than an hour a day. Probably 2. All the above benefits come at a price, of course. If you are too busy at work you may not be able to answer questions. It is still possible to reach the daily reputation cap from home, but that’s consuming time from other activities. But I think the time spent is worth it.
Will I continue answering questions? Obviously – yes.