This is a guest contribution from Brian Mancini at FTI Consulting. FTI Consulting is one of Skytap’s awesome customers, and Brian is an avid proponent of open source software and its many benefits to the developer community as a whole!
As a web developer, it’s difficult to avoid open source software (OSS) completely. The rise in popularity of platforms and frameworks such as Ruby on Rails, Node.js, AngularJS, Ember.js, Bootstrap, Backbone, etc., have developers interacting with OSS and community development on a daily basis.
OSS has obvious benefits from a business perspective. But for a developer, why does OSS matter?
Learning the tools used in OSS and community development are valuable skills as a software developer. Some platforms, such as Node.js, are deeply ingrained in the OSS/community development model. There is no fighting it. If you want to use these platforms, you must learn how the environment works. One benefit is that once you become familiar with OSS/community development practices, the skills are transferrable. If you’re familiar with NPM (Node.js’ package management system), working with Bower (a client-side package management system) is going to be an easy transition.
Another benefit of working with a platform that embraces OSS is that you have access to the knowledge of the entire community through its’ collective works. Each project dependency can be a code example. You can easily inspect packages and learn good practices from strong developers in the community. As your skills progress, it’s easy to help the community by creating your own projects or contributing to existing ones. As a best practice, you should inspect dependencies to see how they work and to ensure that they are a good addition to your project. This has the added benefit of exposing you to different styles and techniques of coding.
Another benefit is recognition for writing code. As software developers, we like to build things. We’re going to hack on code regardless of what tools we use. Why not put this code into the public space? This lets other people see what you’ve done. It creates a portfolio of your journey as a software developer, and someone may even stumble upon your code and learn a thing or two. It’s always gratifying to have something you’ve created be used, referenced, and/or valued by other people.
I’ve found that putting my code into the purview of the public’s eye has encouraged me to write better code. An oft overlooked and difficult skill to cultivate is being able to take complicated problems and make them easy to understand. Coding with other people in mind encourages you to think about the structure of your code so that others can understand it. It encourages you to comment your code so that people can understand it at a glance. It encourages you to write tests for your code so that others can understand how your code is supposed to behave. Coding with other people in mind is an important skill to have. By making your code publicly accessible, there is subtle pressure to follow best practices and write clean, legible code that others can understand.
At FTI Consulting, we’ve started an initiative to encourage developers to put DevOps tools into the public domain. These are projects that are ancillary to our core line of business. This initiative has given developers an opportunity to expand their skill sets. It has been a great way to interact with open source communities even though our core software is proprietary.
I encourage you to explore open source development. The next time you’re learning something, add it to GitHub and share it with the world. It will help you grow as a developer and maybe someone else will benefit from your experience.