It started out as a fun past-time. It grew because I had better Googling skills. It ended up being the primary place I learn things from ( and also, remember forever things I tend to quickly forget. )
I am talking about answering questions at StackOverflow. I was reaping the benefits of the amazing content at StackOverflow and one day I thought it would be fun to see if I can answer few questions. The whole gamification of Q&A at StackOverflow, with the votes and badges, was luring. So where to begin? I started following few tags ( that included C#, svn, teamcity, regex etc.) that I felt I had a chance at answering. I realized pretty early on that StackOverflow is very competitive in C# and, to a lesser extent, .NET. That is to be expected, given its origins. So answering questions in C#, along with the big fishes ( well, mainly Jon Skeet) was really really tough. So I started treading the relatively less popular tags like TeamCity. Since I was actively using TeamCity at that time, it was easy pickings. Slowly, the answers came through and as my reputation started growing, so did my confidence ( it can be pretty frustrating when people start downvoting you for what, to you, seems like the perfect answer.) I started moving into tags that I had very little knowledge on. This included git, and Powershell, two tools that I started to pick up in my projects.
It became that, like I mentioned earlier, most of the times, I was able to answer because I was better at Googling the answers than the person asking the question. Some quick searches, and posting a answer would get you some quick reps. Many a times, the answers came from similar StackOverflow questions ( as a seasoned user, I know now to close such questions as duplicates.) My repuation grew. And few bronze badges came in as well.
But, as I continued answering questions in these unknown areas, especially in git, I realized that I was learning at a remarkable rate. What started off with the lure of the reps and badges, quickly converted into the obsession to learn new things. My knowledge in git grew immeasurably. My usage of git at work was limited to the pretty standard stuff ( You can get by with Git by just knowing git add, git commit and git checkout ). The questions that were posed were avenues for learning what to do in weird scenarios. What to do when you are stuck. What to do when you have apparently lost you work for last 2 days. I started trying these scenarios, simulating the results and get the answers. Google started becoming supplementary. And now I know how to create a commit without a parent. And how to “ignore” files that are already checked in. Things that I had never had to do. I also became adept at guessing what the problem really was. Just by some vague clues that the OP would give, I started guessing what the problem was, and obtained the solution. I, became an expert ( in all modesty. )
Though I mentioned it in passing, StackOverflow is extemely competitive. Even in tags with not a lot of traffic, your answer will be blown out of the sky if it does not make sense. And at the same time, people will also appreciate answers that are comprehensive, has good supporting details and generally correct. There would be many others trying to answer the same question within milli-seconds of you. It is this competition which is the other addictive thing about StackOverflow. You learn from the best. You learn by outdoing the best. You learn by being outdone by the best.
Now, Stackoverflow is the primary place I learn. When I want to learn something, I start following the appropriate tags. Then, I try as hard as possible to get the bronze and silver badges for the tags. And maybe, just maybe, go for the gold ( I am one of the few to have git and powershell gold badges - two things I learned almost exclusively from StackOverflow.)
Though I probably end up helping few people solve their problems with my answers, my involvement in StackOverflow has always been purely selfish. First, it was the reputation. Now, it is to learn new things.