The Other Side of Stack Overflow
Most programmers know Stack Overflow as the site where they seek out questions asked by the ancients about the error messages their code happens to be spitting out. Some might also know it as the place where they ask their own questions about code. But even fewer are the users who are answering all these questions posed by their fellow developers.
This other side is where I've been hanging out a lot for this last year or so, and since I'm still not done bragging about my third place on the top users list of the Kotlin tag (after my previous articles and talks about the most frequently asked Kotlin questions, which you should totally read starting here), I've decided to write a bit more about my personal experience and thoughts about the site.
I'd be remiss if I didn't mention at this point that this was partly inspired by this blog post by Simon Wirtz.
Why play the game from the other side?
Let's start with some of the aspects that can get you started with answering questions.
Internet points and shiny medals
Stack Overflow has everything gamified to a healthy level. You earn reputation for every upvote or accepted answer you get, which you can see coming in real time, with a little green notification showing up at the top of the site. You also earn badges for various achievements such as visiting the site regularly, having highly upvoted answers, or a large amount of answers under a given tag. These imaginary internet points might be a good motivator to start writing answers.
I don't particularly get a kick out of earning reputation on the site at this point, but having one of the just 6 gold medals in the Kotlin tag is something I'm rather proud of, as well as being in a prominent place on the All Time top answerers list for the tag.
If you're into the site enough that you have it open regularly to see questions coming in real time as they're being asked, being the first to answer them will likely earn you the rewards laid out above, especially if the question is fairly straightforward. In these cases, answering actually becomes a race against the others to see who can provide an adequate answer in the shortest amount of time.
I don't believe this is something that is a good way to go about things in the long run, but I had a period where this was the force driving me to write answers. I did attempt to avoid very short one-liner answers that just provided code, I'm not sure how well I did on this front.
Pure good will
This is something anyone who considers answering questions should have a base amount of. At the end of the day, the site is about helping out others, with the goal of having well written and well explained answers for everyone who'll find them later.
Sometimes this means sacrificing some of the other motivating factors - for example, not giving an answer that rewards you personal points on the site, but instead marking it as a duplicate to keep things organized.
But really, why?
And now, the things that really keep me answering questions today.
At the end of the day, software development (dare I say software engineering) is about problem solving. And that's what Stack Overflow gives you - a constant stream of widely diverse problems for you to solve every day. Not all of them are exciting, some of it will essentially be reciting and linking official documentation.
But every once in a while - and more frequently than you might think, this happens at least weekly for me - you'll learn something new while you're solving someone else's problem. This can happen while you're researching the problem trying to come up with your own solution to it, or when you come across someone else's clever answer.
In the specific case of Kotlin, I found that gathering some teaching experience on the site can also go a long way to be prepared for when your friends or colleagues need help, since you'll already be familiar with basically all common issues.
This isn't easy to describe without straight up gloating, but at the end of the day, it's nice to help people out. I'm still happy every time someone thanks me for an answer.
As much as the site might seem like a faceless mess of programmers stumbling all over each other from a distance, within smaller, confined parts of it some real communities start to appear.
This has been my own experience contributing under the Kotlin tag. Over time, I've connected with some of the people that I've mentioned a couple paragraphs ago as rivals to race when answering question, and they've proven to be great to discuss all sorts of topics with, for example on the Kotlin Slack or Twitter.
Playing the game from the other side is certainly not for everyone. You need to find both the motivation and the free time, plus you have to be knowledgeable enough about a topic to help others who are struggling with it. But if it happens to be the case that you have all of that, you should give it a try. You might find it rewarding too.
Lastly, if you use the site regularly, create an account, and upvote the answers that helped you. I have to admit that this is still something I keep forgetting, but I'm trying to get better at it. Doing so will help other people find the right answers faster, and the people on the other side who provided the answers will be happy to see the little green notifications.