Stack Overflow: The place where dreams come true.
Ok, maybe a bit of an exaggeration, but developers get a lot of questions answered on Stack Overflow and it is probably the most frequently used tool by developers to help them get un-stuck while programming. This article will explain what Stack Overflow reputation is, why it matters, and how Stack Overflow users can get their first 1000 reputation.
The reason for writing this article is because I recently passed the 1000 reputation threshold and I learned a lot on how to best gain reputation. At the time of writing, I'm at 1510 reputation, which is not much compared to some, but I consider it to be a good achievement.
Reputation is a rough measurement of how much the community trusts you; it is earned by convincing your peers that you know what you’re talking about.
The main way to gain reputation on Stack Overflow is to get your questions and answers upvoted by others. The breakdown is as follows:
- Question is upvoted = +10 reputation
- Answer is upvoted = +10 reputation
- Answer is marked as accepted = +15 reputation
You can also gain additional reputation by answering questions that have bounties associated with them. Bounties are questions that will provide larger amounts of reputation for accepted answers. Bounties can range from +50 to +500 reputation.
The bounty amount is taken from the question asker's own reputation. As an example, if a bounty is worth +100 reputation, then the question asker will have had to lose 100 of their own reputation in order to post the bounty.
As is true in real life, having a good reputation makes you more trustworthy and, in the case of Stack Overflow, it positions yourself as an authority on certain software development topics. If you visit a user's profile, you will be able to see the breakdown of their reputation by topics so you can better identify where a person's expertise lies.
In my opinion, having a high reputation on Stack Overflow can be beneficial if you're trying to make a positive impression on prospective employers or, if you're a freelancer, on prospective clients. Other than that, I'm not sure there is much to personally gain from having a high reputation on the site.
Oh, I almost forgot to mention. You are also able to flex on your developer peers if you have a high reputation.
If you decide to flex on others with your high Stack Overflow reputation, you will likely lose some real-life social reputation and respect.
Stack Overflow reputation can be a bit overrated since some people that have been on the platform since its early days benefit from having asked/answered commonly asked questions before anyone else has and so they've had many years to accumulate reputation and continue to accumulate reputation for those answers/questions. This is further amplified by the fact that many questions on Stack Overflow are marked as duplicates of earlier asked questions and the duplicate question links back to the original.
All that being said, accumulating 1000 reputation is, in my opinion, a good indicator that a person has a good grasp of certain topics related to software development.
My advice for gaining reputation depends on your experience level as a developer. If you are a fairly inexperienced developer, I would highly encourage you NOT to try and look for questions to answer, but rather focus on asking clear and detailed questions.
As a beginner, you will surely encounter a lot of problems which is a great opportunity for you to ask questions. As a beginner, spending your time programming and running into problems you need to solve is the best way to learn and it will give you a lot of material for questions to be asked.
Before asking a question on Stack Overflow, you should make an effort to research solutions to your problem since, in most cases, the answers to beginner-level questions are easily found on the internet.
On the other hand, if you're inexperienced and you try to find questions to answer, what will likely happen is that you will find very few questions that you can confidently answer. Worse yet, you might try to provide an answer that you think has a chance of being correct, but is completely wrong. This not only doesn't help the question asker but will potentially lead to people downvoting your answer causing you to lose reputation. I have seen this happen on Stack Overflow and I'm personally guilty of doing this myself when I first started out answering questions as a beginner.
Don't underplay how much asking questions can contribute to your Stack Overflow reputation. You get just as many reputation points when your question is upvoted as if your answer is upvoted. Also, since a lot of people on Stack Overflow post questions that are vague and very difficult to reproduce, if you're able to write questions that are clear and easily reproducible, users will appreciate it and will likely want to upvote the question to thank you for your effort.
I find that good questions for beginners to ask are ones that are related to a project they are working on and can be reproduced by others in a sandboxed environment. This is especially true for web applications since there are many good online tools you can use to demo your issue:
- Code Sandbox
- Code Pen
- Repl.it (Good choice for non-web languages like python, java, ruby, etc)
Not only does writing good questions on Stack Overflow help you build reputation, but it forces you to improve your written communication skills, which is hugely important in software engineering where you often need to collaborate with others. For example, being able to write descriptive pull requests on GitHub helps to communicate to your team the changes you are introducing through a code change and will have given others more confidence in what you are trying to achieve if they can better understand what you're trying to do.
Here is a good article by Stack Overflow on how to ask a good question: https://stackoverflow.com/help/minimal-reproducible-example
If you have a good amount of experience in a particular domain of software development, then the fastest way for you to gain reputation is to answer people's questions. This is because you probably have a lot more answers that people are seeking than questions you may have to ask.
When looking at questions to answer, you should first set up your list of watched tags. By watching certain tags, you will be shown questions related to the tags you are watching. This means that you can focus on questions that you are more likely to have an answer to. For example, I have a lot of experience in some front-end developer-related topics, so I'm watching tags related to
typescript, and others.
You are also able to mark some tags as "ignored", which prevents questions that contain those tags from showing up in your list of questions. I think this might be an underrated feature in helping people filter out questions. Personally, anytime time I see a question show up in my feed that is related to a topic I have no experience with, I add it to my list of ignored tags (therefore I have a lot of tags I'm ignoring).
One thing that you should NOT do is to "strategically downvote" other people's answers to improve your chances of having your answer accepted. I've seen this recommended in some places, but that is not at all helpful to the community and is a selfish thing to do. If you downvote answers that are actually correct/helpful, then that's not cool.
I find it quite nice being able to help people on Stack Overflow and I think it's great that they have gamified their platform since it really encourages people to provide quality answers to questions in a timely manner. That being said, I wouldn't rely on Stack Overflow as a way to get better at programming. It's always been my opinion that the best way to get better at programming is to do more programming! Yes, you will likely learn a thing a two when trying to find answers to people's questions, but you will surely learn more by programming yourself.