Here is my collection of resources I have found useful when learning Scala and Functional Programming!
Essential Scala by Underscore
My go-to recommendation for anyone starting to learn Scala. This book assumes some knowledge in programming but nothing with Scala. It takes you from the basic syntax, through common patterns, and hopes you take away key skills that will help you along your journey.
Functional Programming in Scala by Paul Chiusano and Rúnar Bjarnaso
I usually suggest this book when a developer has spent some time programming with Scala but wants to explore more Functional Programming concepts. It’s a great book to pick up, tackle one or two of the exercises, and then put down again for some time. I have been working my way through this book for around 3 years now and still not half way through, although every time I do pick it up, I enjoy my time and the challenge it provides.
Scala with Cats by Underscore
This recent addition to my list of resources has been a great help whilst making my transition from Scalaz to Cats. I recently attended the training course for this book (which I can also recommend), and together they have helped me code elegant solutions to encountered problems with Cats.
Functional Programming Principles in Scala by Martin Odersky
After spending around 6 months learning Scala basics, I used this course to continue my learning with Scala and Functional Programming. It helped me understand key concepts in FP that I use today and I enjoyed some of the exercises a lot. I wrote a more detailed review of this course here.
This was recommended to me by a fellow colleague learning Scala and FP, this is an “Open Source project for learning different technologies based in the Scala Programming Language”. It provides an immersive experience to learn, especially useful if you are short on time, squeezing in some learning where you can.
“A programming kata is an exercise which helps a programmer hone his skills through practice and repetition.” The best thing I did for my independent learning was to tackle a kata alone every week or so, applying concepts I had recently learnt. It’s useful to see other people’s solutions to the same problem after you have finished, and possibly learn from what they may have done differently.
Demystifying Scala by Kelley Robinson
The first video you should watch when being introduced to Scala. A great talk to ease you in to Scala’s syntax, features, strengths and weaknesses. It provides an honest insight on why people choose Scala, the community, and the choice between Object Orientated Programming and Functional Programming.
A purely functional approach to building large applications by Noel Markham
I found Noel Markham’s talk to be a great introduction to Functional Programming where he builds an application whilst thoroughly explaining what he is doing and why.
Scalaz; or how I learned to stop worrying and love monads by Noel Markham
This talk was recommended to me during my job interview at ITV in order to get me up to speed with functional programming helper libraries. Excellent introduction to Validation and Typeclasses, aimed at people who might find libraries like Scalaz daunting. Noel also offers tips on how to introduce these libraries to any resistant team members.
Easy and Efficient Data Validation with Cats by Daniela Sfregola
Another excellent, beginner-friendly introduction to Validation, but this talk is more thorough, in-depth and uses the Cats library. This was especially useful for me when making the switch from Scalaz to Cats.
A Pragmatic Introduction to Category Theory by Daniela Sfregola
A very approachable and beginner-friendly introduction to Category Theory. It helped me gain a better understanding of a lot of concepts I use with Functional Programming.
Keynote: Scaling Intelligence: moving ideas forward by Jessica Kerr
A very inspiring talk about how we can make the Scala community a better place.
Daniel Spiewak by The making of an IO
A thorough introduction on what the IO Monad is and why we should be using it.
Exploring Decision Trees with Matryoshka by Zainab Ali
A super interesting talk about making decisions on data, Zainab uses the scenario of the Titanic sinking to demonstrate.