Functional programming is amazing! Huge thanks to the professors, colleagues, and friends who have helped me appreciate that. In this post I will humbly share four tips I’ve picked up along the way:
- Play with a passion project
- Ask the right questions
- Really read the docs
- Give back to the community
Play with a passion project
Do it! Scratch your own itch. Save the world. Whatever. Just start building something. I personally tend to get bogged down working through a book of exercises and that has been a huge challenge for me while trying to learn Haskell. I’ve had better success with Elm, because I created a calculator that I can actually see and use.
Ask the right questions
If you roll into a Slack channel and say that your precious calculator is broken, nobody is going to hear you. I’ve found that thinking in terms of higher order functions such as map and fold will help not only when communicating with other programmers, but especially when trying to answer your own questions.
For me over the last couple of months, it has looked something like this:
Q: “Is there a higher order function to generate a series of values from an initial value?”
A: “Yes. Unfold.”
Q: “I’m looking for a function like fold that returns all of the intermediate values almost like map.”
A: “Try scanl.”
Think of it like traveling somewhere and attempting to say one or two words in the local tongue. People will generally give you the benefit of the doubt if you make the effort, even when you don’t exactly know what you are talking about.
Really read the docs
In both of the prior examples, I could have avoided asking for help entirely if I had really read the docs. The answers are right there. Don’t be too hard on yourself, though. Learning how to read function signatures can be challenging. Chip away at the docs over time knowing that the answer is there. You will definitely pick up some other goodies along the way.
Give back to the community
I cannot tell you how grateful I am for the incredible community of functional programmers. Do not be afraid of your zealot co-worker who tells you that Haskell is better than Python and they can prove it (hi @puffnfresh). They are trying to help you! Let’s be honest - the terminology and pretense around functional programming can be off-putting to some beginners. It’s ok.
Soon you will find that the functional programming community is unbelievably generous and friendly. They are organizing conferences, teaching free classes, writing blog posts, and helping beginners in Slack channels. These people are legitimately trying to make the world a better place. The least that we can do as beginners is attempt to give back in the same way.