Wrestling with imposter syndrome is no fun. It feels like you’re in an endless cycle of self doubt. It doesn’t have to be though. What I’ve realized is that contributing to open source projects is a really productive way for me to keep my sanity.
In this blog post, I’ll share how I got involved with an open source project at Ruby for Good 2019. I’ll share how I contributed to and benefited from the project. Finally, I’ll share the potential benefits the project’s stakeholders will get as a result of my team’s work.
What is Ruby for Good?
Ruby for Good is an annual 3-day event where developers from all over the world gather together to work on open source projects. Each project has a philanthropic essence to it. They also remain open with issues for developers to continue working on after the event.
The project I got involved with
Day 1 of Ruby for Good kicked off with pitches from each project lead. They described the purpose of each project and the goals they hoped to accomplish. Some projects were well established. Other projects were starting from scratch.
A project called Babywearing was one of those start-from-scratch projects. The project’s stakeholder is an organization called the Mid Atlantic Babywearing Organization (MABO). This organization promotes a centuries old practice called babywearing. The current software they have in place allows members to borrow a babywearing carrier for free. That said, this software costs the organization nearly $600 per year.
Thus, the project’s goal was to build a free lending library from scratch to replace MABO’s current system. I decided to join the Babywearing team even though I was afraid that the goal was too much of a stretch for me. Thankfully, my desire for the chance to make meaningful contributions to a project outweighed that feeling of self-doubt.
How I helped
Once teams were assembled the remaining days of the event were spent working through project issues. My team consisted of 13 people, including the project’s stakeholders, product owner, tech lead and individual contributors. Each task was clearly defined in a GitHub issue that was in place before the team got started. Here’s a brief rundown of the issues I solved:
- Setup instructions: My first pull request improved documentation so future contributors will have an easier time getting started with the development process.
- User model and authentication: I teamed up with a partner, Monique Caraballo, on this one. Together we walked through documentation on how to set up a user model and implement the Devise gem to authenticate application users.
- User email confirmation: In a different pull request I built a custom mailer that extends from the Devise Mailer module. Now, when a user signs up they’ll receive a welcome email.
- CRUD: I created a new resource called MembershipTypes along with standard create, read, update and delete (crud) actions in its controller.
- Authorized views: I used a gem called Pundit and implemented classes that “policed” or authorized certain views in the app for designated users. For example, an admin or volunteer member can view a page that lists all users. A regular user isn’t able to do the same.
- Download a CSV of users: In another pull request, I introduced a way for admins and users to download a CSV of all users. This was accomplished by using the respond_to helper method in the User controller which helps us return the user data in a CSV format.
Feel free to check out these contributions on GitHub!
Making these contributions gave me a much needed confidence boost. I got hands-on practice with building core portions of a Ruby on Rails application. I learned a lot along the way thanks to my super supportive teammates and good documentation about the tools we were using. While each task presented something new to learn, this experience was on that I was totally ready for.
What’s even better is that the work my team and I did has the potential to save the Mid Atlantic Babywearing Organization hundreds of dollars per year. While helping others, I helped myself!
If you’re struggling with imposter syndrome — get involved with an open source project! The timing couldn’t be better since next month marks the start of Hacktoberfest.