Open for business
Open source projects, and why you want to contribute to them
In the current iteration of The Internet, there exists a fantastic cultural movement referred to as Open Source. Open Source is the concept or practice of making an application's or software's code accessible to be inspected, studied, modified, or distributed freely. While that may sound like a scary or extremely utopian concept, open source has many benefits for both the software owners and software engineers alike. Some of the benefits to owners are wider adoption (software users love the level of control and customization open source tools can provide, or development speeds (when you expand the pool of engineers who can contribute to your software you can expand your feature sets or squash bugs at a much more rapid pace).
In this article, I want to focus on the benefits of open source to the software engineer. In particular, the beginner engineer. I will also share some resources where you can get involved with open source projects.
At the start of your software engineer career, you are likely to be filled with tons of conceptual knowledge, but lacking in the practical application of that knowledge. Sure in your degree program or your boot camp you will have completed a few projects showcasing your practical skills across various disciplines and languages. What you are unlikely to have is concrete experience in working in an existing code base, writing new features or bashing bugs in an application or software with a user base. You may find that you have very little experience you can point to where you've tackled a specific pain point or solved a specific and unique customer problem within your project applications.
This is where open source projects can be a major windfall for you in your career journey. Not only will you gain valuable experience in working within a team or teams of developers--pushing code to a shared application, you will also be showing concrete proof of your ability to Always Be Shipping. Most modern engineering teams work under a continuous deployment methodology. That means they are regularly and routinely pushing code to production. But that small improvements to features, bug fixes, refactoring code to make it more efficient, or foundational work for upcoming features. The modern software team is most cases always churning out new code. Open source projects provide the new engineer with an avenue to work in, or at least in a reasonable facsimile, of this dynamic. The value has this experience on your resume is invaluable. Companies ideally want someone who can walk into the role on Day 1 and start contributing. Continually contributing to open source projects showcases your ability to do such.
Another benefit of diving into the world of open source projects is the volume of code and coders you'll expose yourself to. By the time you've graduated from your engineering program, be it a 4-year degree or a 16-week boot camp, you will already know that there is always more than one way to solve a problem. Often there are as many viable solutions as there are engineers who approach the problem. By diving into an open source project you'll experience so many different ideas, and ways of approaching a novel problem that you are likely to stand head and shoulders above other candidates looking for the same career opportunities.
You'll be reading and deciphering so much code! The importance of the ability to read a line or lines of code and truly understand what the code is doing can not be understated. This is a vital skill set for any experienced software engineer to have. It allows you to be a multi-tool in a sea of monotaskers. You can be dropped into any team on any project and have a very limited ramp-up time if you are well-skilled here.
Now that we know why we, as n00bie engineers should be diving headfirst into the world of open source projects, here is an absolutely non-exhaustive list of some resources to help you get started: