One of the most important parts of being a member in a development community is answering other people’s questions. Whether it’s over mailing lists, IRC channels or StackOverflow, there will always be someone (including me and you) asking questions over these channels and and there will be other people answering them as well.
While getting an answer for these questions is most likely pretty important for those asking them, answering the question also has it’s own benefits that often go unseen for those that are not used to participating in communities like this.
Most of our time is invested in programming using many different tools, from languages to IDEs and frameworks and while a lot of what we do is alike, there are many different applications being built and each of these apps has it’s own team and it’s own experiences. These experiences will lead people in different directions while deciding how the code is written, how the tools are joined together and how the final product behaves.
This leads to very different solutions for the same set of problems and makes different people, while working on the same field, developing completely different styles and experiences on what and how to build their solutions. If you’ve ever been to a busy mailing list you have seen this yourself when someone had trouble using a tool in a completely different setting than yours. I’ve seen people distributing a Rails app inside a VirtualBox VM so it could be run on any OS that supports VirtualBox.
This myriad of experiences leads to people asking stuff you don’t know or wouldn’t consider doing and this is where it gets interesting. You can now tap into their own world for a brief moment and gain experience on something you didn’t think about before but could be useful in the future.
A couple months ago while browsing StackOverflow
I saw this question about Scala’s DelayedInit and something clicked for me. I did read Scala in Depth a while ago but my memory about this specific section was mostly oh, I remember this was in the book, but I have no idea what it actually is so I couldn’t answer the question right away.
But hey, I could grab the book again, read it to refresh my memory and try to answer it, couldn’t I?
And that’s exactly what I did. Grabbed the book, opened up Eclipse with a Scala worksheet and started to play around with the code until I could actually understand what was going on and answer the question. The time it took me to read the section and build the example could definitely lead someone else to give a complete answer to the question and wouldn’t get the reputation points but I had already done the most important part of it, I stole the experience and learned something I didn’t know (or didn’t pay attention before) about the language.
While learning something you didn’t know before is pretty cool, exercising your find the bug and fix the bug muscles is also a pretty important part of answering other people’s questions. Take this question about very common error for Ruby programs, had I not seen this error before, I’d have to first find what’s leading to this behavior and then later propose a fix for it. A huge part of your career as a developer will be finding and fixing (your own) bugs, having a headstart finding other people’s bugs before they hit you is definitely a great way to fast track your experience.
Seeing this at someone else’s code before seeing this error at my own programs would help me fix it in the future when it happened at my own codebase much faster because I had already solved this issue on someone else’s code.
Whenever you see someone asking a question, specially something you don’t know yet, think if you can invest some time to find an answer. Could be as simple as googling the error message and surfing through the search results (as simple as it sounds if you’re experienced, people aren’t born knowing how to read stack traces or search for errors on google) or reading through the source code of a project you haven’t seen before. Even if someone else answers before you do, your journey to find an answer will teach you something new and keep your knowledge search engines running.
Getting used to finding and fixing bugs, reading through someone else’s code and problem solving skills are qualities every single programmer out there needs have and to practice them all you have to do is to help your community by answering other people’s questions.
Did you answer someone’s question today already?