Why should we bother ourselves to try and solve other people’s challenges? We have our own challenges and sometimes are up against a tight deadline. I’m often asked this by friends and peers, so here is a list I made of the reasons that motivate me to answer Stack Overflow questions (not in a particular order):
- Points, Credit, Prestige
- Kindness, giving back to the community
- Gain experience with real world challenges
- Keep up with the race and stay ahead of the game
- Learning new things “by mistake”
- Improve tech communication skills
- Improve English skills (as a second language)
- Document your solutions
I’m mostly mentioning Stack Overflow here because I think it’s the most comfortable platform to share knowledge, but everything I write here is relevant to any other platform.
Well, I wanted to start with this one because it’s kind of “The elephant in the room”. Most of us like getting credit for the things we do and who doesn’t LOVE points and ratings? I sure do! So yeah, I think it’s a motivation, although likely the most selfish item on my list. Is it at the top of the list? Nope. Read on and you may realize that it’s actually the least rewarding one (but still, rewarding).
OK, it’s a cliche. I know! But it can’t be helped, in most cases when we help someone it makes us feel good and satisfied. I gain so much knowledge from the “internet” (which is basically a bunch of people that help me whether they know it or not), so it’s only natural to want to give something back.
As a developer, Stack Overflow is and still is one of the best tools I have. “Giving back to the community” may be a cliche but this is the foundation stones which our community (should I write society?) is built upon. So if you have the chance and the ability, Give Back To The Community, do it with kindness and respect. And eventually you’ll find that what can be a small effort on your end, can have a big impact for the person sitting on the other side.
You may notice that this item on my motivation list is the only “none 100% selfish” motivation, I mean this is the only motivation that addresses the actual benefits gained by others, and not myself.
Consider the following scenario: You are learning a new language / technology / feature / design pattern, you have probably been watching some online courses and following some tutorials. I would even reckon, most if not all of them, provide simple examples under controlled laboratory conditions. But alas, none of us has the privilege to work under these conditions, we live in the real world.
The great thing about trying to answer questions on Stack Overflow is that you accept a ”real world” challenge.
As a beginner to the subject, you may not be able to provide a high-quality answer fast enough before the coveted great shiny check-mark was clicked and another answer was marked as accepted. That’s OK, though we do love points (as stated above) we are not here just for them, we also want to gain some experience. Rest assured, you have already gained experience - not only with a real world problem but we have also been lucky enough to see the solution.
We also gained experience with debugging, experience with solving (or trying to solve) hard and complex problems. Maybe the problem wasn’t that hard after all, but there wasn’t enough information provided by the OP (Original Poster), so you gained the experience of asking the right questions to lead the OP to a “purified” version of the problem, cleaning up the noise and revealing the exact and accurate problem the OP was really facing. This is a huge value gained as a problem-solver, it’s beyond learning a new feature or a language, this is you becoming a better engineer.
I consider this as a bit of a hack, in a “normal” way, we gain experience through time (x years of experience). So basically experience is measured like
skill.exp = skill.handsOn * skill.numberOfYears
And here we are kind of fast-tracking our hands-on experience through multi-threading, and not from our actual day job. So we are basically gaining the experience of others, and we do it in a relatively short period of time - the power of concurrency (we’re scaling our skill set).
As opposed to the previous item on the list (which mostly addressed beginners) this one is mostly relevant for experienced developers. As an experienced developer you probably want to keep up with all the new stuff that coming out, or maybe you want to be that go-to person when people need help with new stuff. Maybe the tech you are working with isn’t the newest thing out there or maybe the version is a bit outdated. Answering questions on Stack Overflow may help you keep up with new technologies as they emerge, and sharpen your skills, enabling you to gain experience with that new feature that just came out last month.
Sometimes when you are trying to answer a question, you’ll notice that the OP (Original Poster) is using a stack or a library you are not experienced with. I mean, you know the tech the OP (Original Poster) is using, but there is a cool library or feature you never tried. In order to help, you may need to read the basics and look through the DOCS or maybe even try an API you never tried. This is awesome, because you just learned a new thing, and learning is part of our lives as developers. And maybe this new thing you just learned may even end up in one of your next projects. Who knows? ¯_(ツ)_/¯
One of the most important skills for developers is the “tech communication skill”, it allows you to articulate a problem or a solution which the other side (other team members) can easily understand. The ability to execute something that “lives” in your head is hard enough, but to explain it to others so they can be part of the operation… that’s a skill, a great skill to have on your tool-belt. To be able to write a high quality answer (or question, by the way) will require you to “stretch” that skill, this will let you enhance it. If there is one common thing for all of the best answers (and questions!) on Stack Overflow is that they are all well-phrased and the author managed to easily convey their idea to the reader. Some use humor, others use analogies and some use dry facts, it doesn’t matter as long as the reader gets the idea.
Well this one is very personal and maybe considered as a niche, but English may not be your native language, well it’s not my native language and you probably already picked that up :smirk: ). With English being the universal language of technologists around the globe, and not all are born native speakers, this is a good way to gain confidence in your English skills, and can ultimately carry over to getting involved in others ways - such as contributing code or documentation to open source projects.
You have taken the time to write great and useful solutions, why not document and preserve them somewhere? Stack Overflow can be a great place to store your solutions, you get a free space AND a great searching tool to track them later, you can basically see it as your own personal wiki. Another cool thing about it is that you can use your Stack Overflow profile page as a “portfolio of case studies”. I mean attaching it to a CV or including it in your LinkedIn account gives future recruiters a chance to see how you approach problems, and how you communicate solutions with others. Not to mention that it’s always good to be perceived as a person who helps others. :smile:
As you can see, there are a lot of reasons that should motivate you to be active as a Stack Overflow user (or any other similar platform). While some are for your own personal benefit and some can benefit your environment, all of them are eventually rewarding and satisfying. With that said, make sure it doesn’t interrupt your job or daily tasks. What works for me is to allocate a specific time for that within my free time and make sure I don’t exceed it.
I hope this was a good read and if you have any more “motivation items” to add to the list or any feedback please share, I would love to read it.