Building confidence and gaining experience with good open source projects
This year, I got a unique opportunity to call in at Mattercon 2020 and give a talk about my experience working on Mattermost and open source software (OSS) in general. I talked about how OSS helped me grow as a self-taught developer and how working on issues from Mattermost’s repos helped me gain experience and confidence in software development.
In this article, I will highlight some of the things I talked about and also throw in a few pointers related to working on OSS.
How do you get started in software development without any experience?
Today, OSS has numerous advantages, which is why companies like Microsoft are now participating more in OSS development and collaboration. However, I want to talk about the benefits of OSS for those considering careers in software development.
Most employers in the tech industry want some form of experience from their prospective junior employees. This is particularly true for those who don’t have a computer science degree and don’t have any internship experiences under their belt.
So what about people like me who don’t have a computer science degree and never had a coding internship but are trying to get into tech?
One potential solution is joining a bootcamp. But, in my opinion and experience, this is not usually the best option (depending on the bootcamp you join, of course). My preferred option is picking a really good OSS project like Mattermost and working on actual production-grade problems.
The benefits of being an open source contributor
Contributing to good and relevant OSS projects does a lot for you in terms of mentorship, learning new things in tech, and boosting your experience and overall confidence.
The first hurdle is obviously identifying what you’re interested in and then picking an OSS project to contribute to. A lot of my OSS work has been on the Mattermost project, and I will highlight some of the things I’ve picked up along the way.
I believe Mattermost has really set the standard in how OSS should be developed. In case you’re not aware of Mattermost, they’re the makers of an open source messaging platform made for DevOps teams and security-conscious organizations.
It’s been about a year since I made my first contribution to the Mattermost project in Go. I had taught myself quite a few things in tech but needed to gain more real-world experience. At that time, I had also already started learning Go, so what better way to develop those skills than by working on a huge project in production?
The first thing you’ll notice with Mattermost is how well-documented it is. In my experience, one thing that can be frustrating about contributing to OSS projects is the initial setup of the environment. This is really important because you want to see the changes you’ve made work on your local development environment before pushing them to a repository. I feel like most OSS projects lose potential contributors at this point.
With Mattermost, there is always support from the core developers and other staffers. Most very good OSS projects have a communication platform where all the core developers are accessible. These platforms are good because you can pick up mentors from something you’re actually interested in working on. It also gives you a sense of teamwork and how to communicate effectively, which is what you’ll find working at an actual tech company.
Very big OSS projects can be quite difficult to contribute to because there are so many things to work on. To solve this problem, good projects usually use labels extensively to mark issues they want their contributors to work on. For developers trying to learn and build experience, it’s always good to look out for “good first issue.” These are issues that the staff have identified as being easy to work on. Start small, because successfully getting an issue merged into an OSS project will really boost your confidence in software development.
Open source tech stacks
OSS projects are some of the most up-to-date when it comes to stacks, industry best practices, innovation and challenging problems. I think many people will agree that sometimes experience cannot completely be quantified by the number of years you’ve worked but also by the kinds of problems you’ve solved.
OSS projects are where you’re going to find some of the most challenging projects that enable you to gain critical work experience. For example, on Mattermost you have the chance to work on frontend development, backend development, DevOps, ChatOps tooling, and even CLI tools.
Personally, I have gained more than experience from contributing to open source. I’ve met a lot of people that I look up to, and many of them work at Mattermost. I have become a member of major OSS organizations like Kubernetes and Deislabs where I get to work with some of the most talented people in the world.
To date, I have dipped my hands in Mattermost, TypeScript, Kubernetes, and Porter repos. Altogether, I’ve gained a lot of experience and confidence from working on Mattermost and other open source projects—not getting a full-time job in tech. If you’re looking to get started in software development, I recommend you do the same.
Learn how to get started as a Mattermost open source contributor.