Functional JavaScript

Two or three years ago, my polyglot colleague Dave Spanton persuaded me to try functional programming. I took a few basic Haskell tutorials, but went no further. I got the sense that there was a far deeper seam there which I really needed to dig into, but time, and the pressures of work, gradually drove the need out of my mind.

In the last couple of weeks, I finally made time to go deeper. And I did so by taking the Hardcore Functional Programming: Advanced JavaScript Coding course, by Joe Nelson and Brian Lonsdorf, on Udemy (Udemy had one of their sales on — I swear they have more sales than DFS — and so I picked the course up for just £12, rather than the £78 advertised).

The course itself is a mixed bag. Unlike previous courses I’ve taken, which have been tailored for an online audience, this one is basically just a classroom-based workshop which has been filmed and stuck online. Complete with huge pauses while the tutors and classroom stare at their screens, and painfully long seconds while the tutors fail to spot the typos and syntax errors in their own code.

Even more irritating, there are no links provided to code samples, git repositories, or other such resources that form a crucial element of such a course; and a quick glance at the accompanying chat room makes it clear that the tutors never stop by to answer the questions their online pupils have about the course. (I subsequently discovered, by chance, that the course is also available on Frontend Masters, where there may well be more resources and tutor interaction — I’m too tight-fisted to pay the $39/month fee to find out).

But — big drawbacks though these are — I’m being rather over-critical over a pretty amazing piece of learning (life-changing, even) which cost me just £12. The two tutors are both very likeable guys – Brian Lonsdorf in particular had me chuckling along with his infectious love of code (check out his excellent talk “Hey Underscore, You’re Doing It Wrong” on YouTube, which touches on many of the topics covered in the Hardcore Functional Programming course). And, here’s the important thing: I learned more of value from this course that I have in about a year of reading JavaScript books. This stuff is big, important shit!

I’ll be writing more here over the next couple of weeks about what I picked up – about currying and functors and monads and pure functions – and crucially about why it’s so important, and could make life so much easier for anyone working with JavaScript code. But in the meantime, here are the main libraries referenced in the course, which I am now getting to know better in my daily coding:

And check out the course if you get a chance (and if Udemy have another sale soon). I can (mostly) highly recommend it.