I have never met a developer who hasn't heard of StackOverflow. This is where most of us mere mortals go when we are stuck trying to solve a programming problem. Sometimes the problem is just pure lack of documentation from an open source software we are implementing.
But from my years of experience, what I've learned is that not all developers know the value of a strong StackOverflow account.
Personal StackOverflow account (top 7% this year)Above is my personal StackOverflow account. I have given 156 answers and in turn have reached around 2 million developers, putting me on a top 7% of all the users in StackOverflow. This has not been an easy task, as of today's writing (December 1, 2018) there are around 9.7 million users, 17 million questions and 26 million answers.
If you have tried submitting an answer in StackOverflow, you soon realize it is not a simple task - you can't just answer random questions with half-cooked solutions. The forum works in a way where people vote for answers that are actually relevant and have helped them with the problem they are working on.
With 9.7 million users, it's quite a challenge to ensure that your answer would be of any help to anyone, really. As soon as a question is posted dozens of developers are on the prowl to answer the question in their hopes of getting votes and in turn bolstering their respective profiles. However, this "wild west" style of answering a question can also be counterproductive, as the users have an option to downvote any answers that are of poor quality. What are the perks and why bother?
Imagine everyone is applying for a specific company, and everyone is on equal footing with regards to their work experience. It doesn't have to be a large and well-known company, it could easily be just an exemplary workplace nearby. Everyone wants to apply there.
Let's say, hypothetically, the company gives out stocks options, is flexible with work arrangements, and office facilities include the infamous pool table, bean bags, and has free food. The typical ideal tech office!
The recruiter searches for your name, and finds that you are top 10% of all the engineers in the StackOverflow forum. As most recruiters today are aware of the online communities like StackOverflow, who do you think will have their foot in the door? Having a strong online presence acts as icing on the cake, and most of the time guarantees you at least an initial interview.
Of course, I am not saying that all the developers that have a good scoring on the online forum are of high-calibre. There are some that have just answered one difficult question and gathered all their votes out of that one very specific topic. This, however, is easily spotted once you dig around the user's profile.
I can't speak for the other members of StackOverflow that have a strong profile, but there are instances where companies would not bother giving me an online coding exam and just proceeded with the final interview. I had several companies reach out to me, inviting me for an interview even when I wasn't trying to look for a new job.
In actual interviews, technical panels can be more lenient, knowing that you have reached 2 million developers. This, in turn, will give you more confidence in what you do and it validates your standing in the software engineering world. Personally, this has also helped me compete globally as well. I was born in the Philippines and now have ended up in Sydney Australia, going to the United Kingdom and Singapore in between.
I feel like I need to emphasize this as well but having just a SO account alone will not guarantee anything, but it will act as a supplement to your coding prowess.
I know what you are thinking at this point - you just want to know how can you improve your own account. My main advice for building a strong profile is to just try to genuinely help other developers.
What do I mean by that? Well, there are instances where you get stuck with a problem and, try as you might, there seems to be no solution to your problem available online. This is exactly the niche you are looking for, chances are several programmers have gotten stuck with this problem as well.
There are literally millions of questions still unanswered in the forum, and some of them you will be able to solve. It might be due to experience, others just pure happenstance, but there are definitely some questions that you will be able to fix on your own.
The common route is for you to go on with your day having solved that problem for yourself, and feeling accomplished. This neglects those numerous developers still crying in pain in trying to figure out how to solve the same problem. In essence, it will just take you a couple of minutes to compose a decent paragraph showing how the problem is solved and that's it. If you just think about the other developers, leaving an answer once you have already figured it out, a seed has been planted in helping you grow your online profile. Paying it forward, as you go along. Don't go in with the sole purpose of just increasing your credibility - other developers tend to know immediately, and you will just be bombarded with downvotes. There are no stupid questions
This header not to be taken literally. But, when it comes down to it, as long as questions are indeed valid, the community tends to react positively.
Another way of building your profile is asking genuine questions to the community. This is usually a harder route to take. With all the questions already on the forum it's not an easy task to ask a question where there is no answer already. StackOverflow works in a way that the questions and answers are provided by the developers themselves, but privilege is granted to those who have reached a certain amount of idiosyncrasy credit, so to speak. Developers who have attained this privilege have it in their best interest to preserve good quality questions on the site. So newbies copying and pasting their homework/assignments on the site are easily spotted and those questions are downvoted, never seeing the light of day.
Here is the page where I get to review existing questions/answers if they are indeed worth being published. (Screenshot was taken using my personal account)Questions can usually be broken down into two categories, theoretical and technical. Theoretical questions, by definition, are questions that do not have concrete answers and thus these are subject to the opinion of who chooses to answer. Theoretical questions tend to have the possibility of being closed by the moderators, as nobody really wants to engage in an online debate in the forum.
A good example would be which programming language to use. Although this is a valid question, it is subject to the opinion of the person who is answering, as Java developers would definitely answer Java, and so on. As consolation, you still do get points for people who are curious to hear the answers if there are any. Here is one of my questions, which had gathered a lot of views - around 29k views - and, in turn, got a number of votes. I wrote it a couple of years back when I couldn't really find a solid comparison of using Java Enterprise Edition Containers versus Using Web Containers. There were already a number of documentations for Java EE Containers and Web Containers during that time, but none were about tackling the difference of each, side-by-side.
Technical Questions, on the other hand, require you to put down what you already have tried and all the technical details needed. The community immediately knows if you are just trying to find an answer without doing your proper research. A good example would be this previous question I made about optimising some code. Although I had already had an answer I just wanted to know if there were alternatives, some sort of online code review if you will. Below is an example of a good technical question, consisting of a good title, description, and all the nitty-gritty details.
Components of a good question (Screenshot taken from my personal account).The above is an example of a question with good anatomy. The title depicts exactly what I'm trying to figure out. The description contains details about what I am trying to accomplish, and also includes what I have already tried. An example code is properly formatted. As long as you have a good description of what you are actually trying to figure out, and what you already have tried, there is a good chance people will give you a decent answer and an upvote the question whilst they are there. Although asking questions is a route for earning more points, I do not recommend asking just for the sake of it. A good reason to do so is genuine interest to just pretty much learn and contribute to the community. Asking questions that you know aren't easily available online leaves crumb trails to the next developer trying to figure out the same exact problem.
I won't dive into too many details about giving a good answer to theoretical and technical questions, as they are similar in nature to the above. Instead of giving examples of what you already have tried, you give concrete examples of the answer you are providing. I will just leave examples here and here. There are other niches as well with regards to providing answers in addition to the already mentioned theoretical/technical categories. "It works on my machine" - every developer alive If you are a developer or just plainly have worked with the IT department you probably heard that line: "It works on my machine".
Operating System-specific questions may be one of the biggest subcategories around. There are about 50K categories/tags in StackOverflow, and MacOS alone has around 10k OS-specific related questions, not to mention programming language + OS-specific questions.
Say your npm install is working in Linux but is not working with MacOS. That's already a Node and OS-related question. Imagine all the permutations of all languages and OS environments. Sometimes even IDEs are thrown into the mix! No wonder there are millions and millions of questions asked.
Another niche is providing instructions with third-party integrators. We've all seen it before - a good API with a lack of documentation. Here is a good question on how to integrate with Google to send email using Node. You'd think that it would be a straightforward change, or that it would be well documented, right? This question alone has 80K views, meaning there were around 80K developers who did not easily figure it out based on standard documentation provided by Node and Google - they had to resort to asking the online forum.
There are more niches in the forum than I care to count. With 26 million questions present, there are bound to be niches still yet to be discovered and answered. I have only mentioned a couple to help you get started and you don't even have to be as good as Jon Skeet to start contributing to the online community.
"Great works are performed not by strength but by perseverance" - Samuel Johnson
As in any investment, it's not going to take effect immediately. It might take months or even years planting your seeds and leaving answers. But, before you know it, you'll already have a solid presence in the community and all the perks that come along with it.