What I've learned from my first week on Stack Overflow

In the last week, I’ve replaced much of the time that I normally waste spend on games and put it in to answering questions on Stack Overflow. To my surprise, this has been a much more fulfilling activity than I expected. I would even describe it as helping me rekindle my passion for software development and helping others. One of my favorite jobs ever was tutoring students in math, Computer Science, language arts, etc., at the university where I was attending. It paid almost nothing, of course, and sometimes it was not the easiest, but it was fun for me. I had to be ready for almost any question, had to learn how to explain things as simply as possible and using multiple techniques, and got a very real sense of satisfaction out of helping people figure things out that would hopefully improve their grades, but more importantly, increase their knowledge and improve their lives.

How did this happen?

Last week, I came across a software programming blog from Yegor Bugayenko, a very opinionated programmer and business owner. While I won’t comment overly much on his opinions, other than to say that I agree with some and vehemently disagree with others, one of the prevalent themes of his blog deals with how to place a value on programmers.

For example, in How Much Do You Cost?, he puts emphasis on several points that either do or do not add to the price that you can expect to charge for your skills. Three things that he identifies that increase your target price are (he lists more, but these are the ones that I want to focus on):

  • Contributing to Open-Source projects
  • High Stack Overflow reputation
  • Blogging about software

I’m an experienced programmer, and I make pretty good money (considerably more than Yegor would probably pay me based on his scale, but he’s a Java programmer, so whatever ;) Just kidding – I’m really not one of those people that goes around randomly bashing on other languages because it’s not one that I prefer to use), and I’ve programmed in one capacity or another for much of the last 20 years going back to when I was around 11 years old, but before this last week, I’ve never really done any of those three things. I’ve thought about doing all three, and I’ve derived a lot of benefit from other people’s SO posts, open-source software, and blogs, but there were always convenient reasons not to. For example:

Reasons against being on Stack Overflow

  • All the questions that I’ve seen on Stack Overflow that I could answer seem to get answered roughly 2.42 seconds after they’re posted.
  • People are really anal about the format of questions and answers, and will down-vote for stupid reasons sometimes.
  • I don’t have the time.

Reasons against blogging

  • I don’t want to deal with hosting a website, setting up and learning WordPress or whatever CMS, moderating comments, and trying to keep it up-to-date and not hacked/defaced.
  • I’m not sure that the things that I have to share with the world are all that interesting.
  • I don’t have the time.

Reasons against contributing to Open Source

  • I don’t know any open-source projects that are in need of help. Most seem to already have the features that are needed and I wouldn’t know where to begin.
  • Do I really want to deal with coding to someone else’s arbitrary standards, setting up my dev environment to match theirs, getting everything coded up, adding automated tests, adding documentation, etc., only to find out that they described the feature wrong, aren’t really accepting pull requests right now, or someone else beat me to the punch and my work’s been wasted?
  • I don’t have the time.

Well, this last week I decided to change all three of those things. Obviously, I’ve started blogging, or at the very least, I have written one blog post, which I feel like makes me a bonafide blogger. I submitted an issue to an open-source project that I use and like. The “open-source contribution” is still very much in a fledgling stage, but it’s a step in the right direction. Where I’ve made the most progress is in participating on Stack Overflow.

And so we finally get to the point, or: What I’ve learned from participating in Stack Overflow

I’ve now spent probably around 15 hours or so browsing on Stack Overflow, reading questions, making a couple minor edits, and answering questions. During that time, I’ve been able to increase my reputation from a paltry 16 (one auto-accepted answer from a few years back) to over 600, and I expect I could have as many another 100-200 points from questions I’ve already answered if people decide to ever check back and mark my answers as accepted and up-vote them (tip to new question askers: please up-vote at the same time that you accept an answer. If you don’t, you’re denying an extra 10 points to someone who took time out of their presumably busy day just to answer your question.)

The number one point that I took away from participating is that it can be really fun

Maybe that means I’m a little bit crazy, or easily amused (which are both probably true), but it was still fun. Of course, a bunch of times I refreshed the page and found nothing that was even remotely interesting/qualified to answer, but there were lots of times when I saw interesting questions that I was in a position to answer quickly and accurately, and it was satisfying seeing the “Thanks, you helped me understand what’s going on!” messages, and seeing the little +15’s, +10’s, pop up on my achievement tracker.

Even when you’re not answering/asking questions, you can learn a lot simply by reading others’ questions and answers.

Sometimes the questions are more helpful than their answers; for example, because of someone’s question, I found an open-source library that looked like it would considerably simplify writing administration UIs, admin-on-rest, which I’m now planning on using both in personal projects and work projects. I don’t know for certain yet, but I think the time that I might save using that one library might end up justifying the time that I dedicated to Stack Overflow last week. I hadn’t even thought of searching for a library for REST administrative UIs, so it’s likely that when I got around to writing my own UIs, I would never have found this library that could simplify a lot for me.

I need to start marking questions that I find interesting so that I can go back and read the answers to them. There have been probably at least a dozen times that I’ve thought upon reading a question: “I don’t know the answer to this question, but I’d like to see the answer, or at least see the thought process that others are applying when they try to answer it.” Beginning programmers especially could probably derive great benefit from just reading questions and answers, even if none of the questions are closely related to the subject matter that they’re trying to learn.

Gaining rep is a numbers game

Aside from the very literal numbers involved in calculating reputation, the more questions that you ask and the more answers you answer, the more likely you’ll be able to increase your reputation quickly. Of course, you do need to make sure that you have some idea of what you’re talking about, and that you ask clear questions and answer questions accurately, or you’ll get down-voted into oblivion, but you still greatly increase your chances of increasing your reputation with more questions/answers asked. Particularly since anyone at any time might up-vote your question/answer, so you could end up continuing to reap benefits months or years down the road after you answered the question. It’s kind of like compound interest: if you ask useful enough questions and give useful enough answers, you could eventually stop asking/answering questions and still have your reputation steadily growing to astronomical heights.

There are an incredible number of dumb questions/answers

Lots of users, particularly new users, ask dumb questions or provide completely wrong answers. Sometimes people even up-vote them, for reasons beyond my comprehension. Sometimes it’s frustrating going through so many hard-to-understand questions, or seeing people demand that Stack Overflow write their program (or more likely, do their homework). Some are really rude about it, too. I suspect some of this is a culture/language difference, but some of it is just people feeling entitled to help without doing much of anything to earn it.

There are an incredible number of good questions/answers

I already knew this, considering that Stack Overflow has helped me innumerable times, and in every one of those cases, someone else had already asked the question that garnered the answers that helped me. But it was still interesting and nice to see just how much time people will put into helping people that are complete strangers for essentially no monetary gain to themselves. Some of the questions I answered took more than an hour of research/composing, and I’ve seen other answers that must have taken at least that long.

Lots of other stuff

There are a bunch more things that I’ve experienced in my first week (now first couple of weeks) on Stack Overflow, but I’ve either forgotten them or I just think that I’ve already been long-winded enough in writing this blog post. If you’ve read this far, then congratulations. :) I’m sure that I’ll write a follow-up post to this at some point to see if anything has changed (or maybe just to brag about how high my rep is ;).

Conclusion: If you’re a programmer and not on SO yet, it’s time to start

There’s just too much benefit to gain from participating in the Stack Overflow community to not take part. There are plenty of criticisms about Stack Overflow, and the community can be rather abrasive and overly stuck on following the “letter of the law”, but there is a lot of knowledge exchange and myriad opportunities to directly influence many others’ lives for the better. And while I honestly don’t know that my Stack Overflow participation (or my reputation) by itself is ever going to have a direct impact on my career or how much I earn, I think indirectly it can only help me increase my knowledge and passion as I give back and help others as I have been helped. So, if you’re not on SO yet (or a member of a similar programming community, sharing your knowledge and being helped), I highly recommend you start doing it now.

Take note of this ancient proverb: “The best time to plant a tree was 20 years ago. The second best time is now.” Don’t let your fear of having waited too long or having nothing to contribute prevent you from taking a chance on something that could improve your life (and I’m not just talking Stack Overflow here now). You might, and probably will, find that there are lots of new and interesting things to learn about and participate in.

What do you think? Do you participate in Stack Overflow? Has it helped you land a job or increase your salary? Add your thoughts below!

Written on July 27, 2017