I’m a strong believer and big proponent of using social development platforms as a highly productive means of rising my own programming experience and expertise.
Quite recently I’ve decided to be more
visibleactive on StackOverflow because 1) sbt’s users mailing list moved to the platform, 2) as a way to learn the Scala build tool as well as Scala and Play, and 3) compete with some of my colleagues.
Being on StackOverflow and GitHub is fun and with enough patience and care will surely rise your expertise. They both could eventually become an integral part of your public CV (with Twitter, LinkedIn, and SlideShare amongst the other useful social development sites…if used wisely).
I’ve really been enjoying this kind of professional development. You can socialise with people you may never see in person yet be guided by their expertise and feel an integral part of a developers community.
There’re plenty of ways to gain knowledge on the sites – simply reviewing questions, changing their title and content to make them more relevant and useful on StackOverflow or review changes and pull requests on GitHub – are just a few ways on their practical use. It doesn’t require much – just patience and care.
Few days back, I ran a scalania meeting where I was encouraging this kind of personal development and as an example pointed at the issues labeled “community” in the Play Framework project on GitHub and picked one – Rewrite play start to use play stage and run the start script from that. I hardly understood what the issue was about so I commented it to seek help. The answer came the next day and was very welcome to further collaboration. What I really liked was the sentence “Doing this issue would more be an introduction to SBT than an introduction to Play.” Since I’m currently more into sbt than Play Framework it was exactly my wish and I couldn’t believe how right my random choice was! Inconceivable.
Another example, just a few days back I opened the recent version of IntelliJ IDEA 13 Community Edition to learn sbt by reviewing the source code of the sbt-updates plugin that “can check maven repositories for dependency updates”. I’ve been using it for some time now and found it very useful. I knew it’s pretty small code-wise so with one hour free time I decided to give it a go. The journey ended up with two pull requests – one to README.md file using GitHub’s approach where a file once changed may eventually become a pull request with a few mouse clicks and the other on a separate feature branch I then pushed to the repo as another pull request. Easy and so much fun!
While on the sbt-updates plugin, I learnt how to configure sbt so libraryDependencies are different per sbtVersion in sbtPlugin (see the Files Changed for the pull request). I wasn’t sure whether or not it’s the right way to do it so I asked a question and answered it at once at StackOverflow - How to specify different libraryDependencies per sbtVersion in sbtPlugin with sbt-cross-building and sbt 0.13?. A StackOverflower liked it so I scored additional points for the question and the answer! With the answer of Daniel C. Sobral I learnt some more about sbt and Scala. That’s exactly the way to master different tools while having so much fun!
Check it out and see yourself how much the different social development platforms can do to improve your professional development. They’ve been working so well for me for the past couple of months and am sure they will in days to come.
What’s your take on using the many social development platforms? How are you finding StackOverflow or GitHub as a way to pursue your professional career? What other social sites would you recommend that would help me becoming a better software developer?