NOTE: In this post I am talking about online developer communities and question/answer sites.
Back in the day, December 8th, 2008 I decided to join Dream.In.Code. What was the reason? Just for fun, in the first place. I wanted to see how many people I can help with programming issues, how many articles I can write and how many pieces of reusable code I could submit. I tried writing some XNA tutorials, then a couple of tutorials on tweaking some system settings. I found out that I can help with some problems in the .NET forums (C# and VB.NET sub-forums, to be specific), so that’s the place I could (and you still can) be found most of the time. Time passed, I opened my blog right there and wrote some posts about whatever I felt like writing (mostly development topics, though). And sure thing, all that was fun enough that more than one year passed, and I am still an active member of the community and I don’t have any plans on leaving it. My “evolution” there was quite fast. First, I got the expert badge, then (I believe it was a month later) I became a moderator and right now I am an administrator. I enjoy contributing there. More than that, I feel like the community helped me grow as a developer.
There are several important aspects of community involvement I would like to point out:
Sharing knowledge – As obvious as this may seem, many people still don’t fully understand the fact that the primary task of online developer communities is to share knowledge. Whether it be code, opinions, news – it all makes people involved more knowledgeable in the domain.
Improving your skills – Once you get in the game (you can call it something else – it is just a metaphor) of solving other people’s issues, you will see that your own programming skills will improve with time. You will see that using something in your code is a bad practice, while adding something else is a good one. Interesting thing – if speaking about me, I learned about interfaces, properties and extension methods thanks to some random questions that were posted in the .NET forums. Curiosity took over, so I looked that up, applied in a few projects and now I pretty much know what’s that about. Same applies to a lot of practices (as well as technologies).
Improving your code – As long as you want to be a good developer, you always have to improve your code. Actually, chances are that what you think is a good solution today, will be quite funny to look at tomorrow. Once you post a solution, probably there will be somebody who will post an alternative as well, sometimes that alternative being better than yours (working faster, providing a better code structure and whatnot). But that’s how you learn. Next time, when you encounter the same (or similar) issue, you will know that there is a better solution out there, not just the one you had.
Improving your writing skills – Many times, when answering a question, I noticed that it is needed to be very clear, precise and explicit. It is easy to say “Google it!”, but that’s not an answer. Besides, at the end of the day, that’s not even a decent solution. When writing an answer to a development question, pretty much every point made there should be somehow explained. Once you get the hold of it, you will see that you can write better explanations and descriptions than you did before.
Communicating with people – This is one of the key parts of pretty much every job, developers not being an exception. Developer communities are a great place to share opinions, review work and just talk with people that have the same interests. You cannot always stay in your box. People have the need to talk. And although online communication cannot replace the offline (real-world) one, consider it the first step. And of course, you can meet great people while in process.
Opportunities – This one is hidden to the masses, but it is a fact. Being an active member of an online community means that you are pretty much exposing your work and mindset to others. I had some opportunities to improve my skills through a member of Dream.In.Code. Without me being there, I probably would never know about that one. Recently, one of our members was selected for the Microsoft Student Insider program. Why? He was an active member of the community, showed enthusiasm and expertise and proved himself to have a perspective. So he got noticed by our webmaster, then proposed as a candidate to the program and eventually got the opportunity.
Professional resume – All that you say online, remains online forever. So why not make it work in your favor? Some of our members got hired because of the contributions they made to the community (be that tutorials, code snippets or simply good answers to various programming questions). This is a major point a developer should not underestimate.
You can probably find a couple of tens of other points that make community involvement for developers important, but the ones outlined here are the most important ones (at least for me).
Have any thoughts? Let me know on Twitter!