← All threads

What true Open Source Software means from my perspective in the industry and how I recommend contributing to it to get your foot in the door (spoiler: it's not what most bootcamps do)

5 of Michael's comments in this thread · View thread on Reddit ↗

u/michaelnovati posted · ★ FEATURED
What true Open Source Software means from my perspective in the industry and how I recommend contributing to it to get your foot in the door (spoiler: it's not what most bootcamps do) Hi all, I've been having numerous intense debates publicly and privately about open source projects. They have become the cornerstone of the resumes of many bootcamp grads, from Codesmith to Launch School Capstone, to Hack Reactor. But some people are trivializing the meaning of "open source" and I wanted to summarize my thoughts in a post I've been working on on the side for a while. When I did my first SWE job back in 2006 as an intern at IBM, I had a similar gross misunderstanding of open source... so much so I bombed an internal fun competition to create a business plan around a new open source product. I thought I would just share it here or on Quora, but I have a decent following here so here it goes: First, what is open source software? Open source software refers to software that is freely available for anyone to use, modify, and distribute. The concept of open source has been around for decades, but it has gained significant momentum in recent years, as more and more companies and individuals have begun to realize the many benefits of using and contributing to open source projects and the proliferation of cloud computing and online tools has made the deployment of small projects cheap and simple. One of the key principles of open source software is that it is built and maintained by a community of people who contribute their time and expertise to the project over a long period of time. This can, and usually does, include developers, designers, documentation writers, and others who work together to create and improve the software. The community-driven nature of open source projects means that anyone can participate, regardless of their background or experience level. However, to truly understand the meaning of open source software, you have to look into how these communities operate. They are not just a group of friends writing code and putting on GitHub and seeing what happens. While open source software is often developed by hobbyists and volunteers, many large open source projects are also maintained by paid engineers. There are several reasons for this. First, large open source projects often require a significant amount of resources and expertise to maintain and improve. This can include things like server infrastructure, development tools, and testing environments, as well as the time and effort required to fix bugs, add new features, and improve performance. Second, many companies and organizations rely on large open source projects for their business operations and therefore, they want to ensure that the software is of high quality and that any issues are addressed quickly. To achieve this, they may choose to hire engineers to work on the project full-time, or to contribute funds to support the development of the project. Third, open source projects can provide a great opportunity for software engineers to build their professional reputation, gain experience, and learn new skills. By contributing to a well-respected open source project, engineers can showcase their abilities and expertise to potential employers, making them more attractive job candidates. So if you are a new engineer looking to contribute to open source as a way of building a resume, I would highly recommend spending time to become a part of these large communities - outside of your bootcamp - learning some of the best practices that companies use by observing the open source contributions of those engineers - and contributing to projects yourself to make an impression. This might seem incredibly daunting - it sure was for me when I was starting out and I couldn't get myself to that point! - but confidence aside, if you aren't at the skill level to contribute to these projects even in a very minor way, then I would ask yourself if your bootcamp is really preparing you to be an engineer.

u/DCTheNotorious wrote (the comment Michael replied to):

How do you go about finding a good project to contribute to?

u/michaelnovati replied ·
I would start with your skills and try to find more consumer products built on that language rather than the core frameworks themselves. For example, Material UI (MUI) is a great and approachable project if you are good in React, rather than trying to contribute to React itself. Another tip is to start with bug fixes or "issues" that they need help with! Always read the contribution guide first and follow the rules for submitting a proper PR.

u/smells_serious wrote (the comment Michael replied to):

This post seems very gate-keepy. I think everyone in this sub recognizes who you are and what you've done in the software world at large. You have a bunch of years backing up what you're telling people as information. It's also very clear that the reason you are posting this is

u/michaelnovati replied ·
​ 1. This isn't gatekeeping, and blaming people all the people with 15+ years of experience for not recognizing your 4 week long projects and handful of commits as "months of experience" isn't going to help you get a job. I think Launch School's Capstone projects are fairly well done and they encapsulate more of the elements of real open source projects. 2. Your project has 50 total issues active and closed and 120 PRs active and closed. Again, you aren't going to get too far blaming "gatekeepers" calling that exponential growth in the industry and being taken seriously. For comparison, I personally have 219 contributions according to GitHub in the first 3 weeks of 2023 alone, and over 5000 in the past year, which is about 100 a week, just me. 3. If your project became truly large enough it would be unmanageable and you would naturally require the community management I described in my post above to keep things in line and keep the peace (e.g. contribution guidelines, testing frameworks and rules, titles and roles, templates, code reviews guidelines, etc....) 4. Also for comparison, here is a very small project that has 1600 issues, 1400 commits and 250 contributors and if I saw that you were a lead contributor on here on a resume I would think you have exposure to "small sized projects". [https://github.com/facebookarchive/draft-js](https://github.com/facebookarchive/draft-js). It was just archived because of lack of activity and maintenance because this is considered such small scale.

u/smells_serious wrote (the comment Michael replied to):

Well congrats on the nice resume 👍 you really showed me with your flexing. Also, don't think I blamed anyone for anything? Had to reread what I wrote because I typed my response on a train coming back from my.... Job. I guess you know who I am, seeing as you know what project I

u/michaelnovati replied ·
Yeah sorry for the tone, I agree it was a bit harsh and unsupportive. The other reason I push on this is because Codesmith calls these project "mid and senior level engineering" work, so this was meant as a strong rebut to that. But I apologize for it being personal and I don't think that was cool.

u/StuffNbutts wrote (the comment Michael replied to):

Idk anything about your reputation here, but, as someone trying to break into the field, I find it refreshing to see practical advice rooted in the industry instead of the same old sugar-coated, generic career guidance you find online. I think it's fine to be proud of one's acc

u/michaelnovati replied · ★ FEATURED
Yeah thanks for commenting, I do agree the tone can be discouraging for people who are in bootcamps that pride themselves in the more "bottoms up" projects and it was shared with some Codesmith people who rallied against it, but it's all a learning experience. Happy to give my opinions to any and all!