Gone are the days of the high barrier of entry into open source coding. No longer is open source the realm of console Linux hackers who don’t have the time to talk to noobs. Within a few minutes you can be knee deep in a GitHub project digging through the work of weekend hackers or reviewing commits from experts. All it takes to get into open source is the will to do it and there are only massive benefits to be reaped for any software developer.
No Stakes Practice
Getting involved with open source projects is an incredible way to setup no-stakes practice to try things out. Its a single step to fork off the code of a project for yourself to pick apart, and make your own edits without anyone knowing. You won’t risk of breaking code that others rely on. You can change and break whatever you want to better understand algorithms and best practices, and if it all goes wrong, toss it. If you have a great idea and improve the project, you are free to submit a pull request to contribute back.
Trying out new patterns in the work place can run the risk of shipping bad or buggy code that then you have to live with. Starting up your own large project just to try some techniques out at home can be an intimidating task that may be prohibitive to some. Forking an open source project eliminates both these risks. No-stakes practice is an incredible way to rapidly learn new skills and open source projects are the perfect solution for developers.
How do you expect to be great if you don’t study greatness? Sites like GitHub or BitBucket are full of thousands of projects done by incredibly bright teams, amassing hundreds of years of experience. Open source provides a great window to peer into their minds and see how they work. You can then apply these approaches to your own work and reap the benefits. In this way, being involved with open source is a method to fast forward experience.
I have one project out on GitHub that I tinker with which I wrote as a .Net SQLite wrapper. I wrote it after hearing that in Windows8 Microsoft was steering developers toward SQLite rather than their own SQL Express, however only supplying code supporting code for Modern (Metro) applications. That didn’t sit well with me so I wrote my own library which I could use for easy SQLite access on the desktop. While writing this small library I learned a ton about doing reflection in .NET that is performant as well as good uses of custom attributes. In the months since then I’ve used those lessons several times in my day job, saving hours of debugging and performance profiling.
As a software developer, there are only huge benefits to being involved with open source. It can build your resume, it lets you acquire skills rapidly and you learn from the best. Setting aside all the greater good of the world type benefits, every software developer should be involved in open source however possible.