My story about contributing to open source software

Have you ever wondered how to become a better software developer?

(spanish version)

In my 15+ years of working with code, I started to wonder about that half way through. One of the earliest recommendations I was given was: contribute to an open source project.

At the time that sounded really distant, scary even, I thought: how do I do that? I thought I was not ready for it, I tried to ask other senior developers about other ideas but most said the same thing.

Open source software drives the world today, even the biggest historical detractors (i.e. Microsoft) are embracing it nowadays and actively contributing to it (TypeScript and VSCode are examples of that).

Contributing to open source not only is ethical, it also exposes you to a highly competitive environment where independent developers can actually see, evaluate and if they like it, accept your code… then modify it.

Open source also allows the opportunity to dissect other people’s ways of solving problems, and study where you can help contributing to specific goals.

So with that long term goal in mind, I spent the next few years upskilling myself with the things that senior developers always mentioned: AWS, TDD, Linux, Bash, Design Patterns, I even got a couple of Java certifications! I also started to befriend other senior developers outside my job at the time through technical meetups.

Attending these meetups enhanced my goals, I saw that the best developers tended to be the friendliest ones, kept up with technology trends and of the speakers, the top of the top, were open source developers.

Then, after becoming a much better developer, I decided to leave my old job.

It was painful. I thought I was already great, I had done most of the other things I thought I needed to pass the interviews, but in them the interviewers always drilled down on topics I was familiar with but not to the depths I was queried.

But I got better and better from these interviews, they guided me on what areas of software development I needed to sharpen up.

One day I found myself as part of an awesome young company: Momenton, I did ok in the interview and the coding tests were moderately hard, enough to give me pleasure solving them.

The guys in my new team are all battle hardened, a group big enough to choose whom to learn from but small enough to get the feeling of a clan.

With them I moved pretty fast into JavaScript, BDD (Behavior Driven Development) and discovered TypeScript.

I realized that there was a massive gap in our main customer’s automation suite, and decided to uplift it with my newest knowledge acquisitions.

So I searched the internet for BDD in TypeScript and through Medium I found this project:

It was pretty sweet, easy to build, run and with great documentation.

So after playing with it and trying to use it to solve our customer’s problem I realized that I could improve it and maybe give back the improvements to the original author.

So I got to the point where I could contribute to open source!

I forked, branched and submitted my Pull Request

A couple of days later:

My Pull Request had been accepted and merged into the project.

And that is it, I am officially an open source contributor.

In conclusion, it took me a long time to contribute to open source but there are faster ways, while researching for this article I found this site: that quickly gives you an idea, and this one is a bit more in depth:

Next steps?

I would like to contribute to bigger open source project, and this one looks awesome:

That project creates education centres for youngsters in coding skills, they have centres all over the world, and in their own code repository there are heaps of issues ready to be addressed by voluntary developers.

So hopefully, dear reader, you won’t take such a long time as it took me to contribute to open source.

It is a very rewarding feeling, and it will make you a better developer, as well as giving back to the community.

If you would like to learn more head on over to momenton and hit us up for a chat.