Becoming a better functional programmer

Dor Sever
Dor Sever
Jul 11 · 3 min read

Motivation

I originally was introduced to FP at work by a colleague and then my curiosity was picked and I started to dig deeper, starting with the excellent red book.

Next, I started watching videos from the top scala FP people like Rob Norris /John de Goes /Runar / Martin Ordersky/ Alissa Pajer.

And each time I finished one of these videos, I asked myself how can I reach this level of mastery.

And the obvious way to do that is to work directly with them.

Luckily for us, this is achievable since all of them are contributing to open source software.

Why ZIO?

It is notoriously known that scala FP libraries are hard to understand and even harder to contribute to. It feels like the barrier to entry is extremely high and almost impossible to jump.

The #ZIO project has a different approach to welcoming new contributors and it puts an emphasis on guiding them in their first steps.

The proof can be found in the ZIO contributing guide :

You too can contribute to ZIO, we believe in you!

Becoming a ZIO contributor

It’s very easy to start. just go to the issues page and filter by ‘good first issue’.

It’s important to recognize that not all issues were born equal. In my opinion, the easiest ones to start with are refactoring or test-related tasks.

Once you have chosen a task, the next thing to do is to take a leap of faith and grab the issue.

Now comes the fun part, start writing code.

You will get stuck but no worries, that’s where the learning happens.

To get unstuck, ask a question in the issue page and then something magical happens. you get reviewed by people you've only seen on scala-days videos.

You can make this task even more fun by making it a collaborative effort with your colleagues.

Victory — PR merged to master

After a few days of hard work, that’s how victory looks like.

Summary

  1. Contributing to open source software will make you a better functional programmer.
  2. The #ZIO project is extremely welcoming to newbies and I encourage you to check it out.
  3. Involving your teammates will make the experience much more fun and rewarding.

Credits

This post was co-authored with my colleague Daniel Sebban