Useful resources when learning Scala.

Here is my collection of resources I have found useful when learning Scala and Functional Programming!

Books

Essential Scala by Underscore
https://underscore.io/books/essential-scala/

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 
https://www.amazon.co.uk/Functional-Programming-Scala-Paul-Chiusano/dp/1617290653

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
https://underscore.io/books/scala-with-cats/

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.

Courses

Functional Programming Principles in Scala by Martin Odersky
https://www.coursera.org/learn/progfun1

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.

Activities

Scala excercises
https://www.scala-exercises.org/

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.

Kata’s in Scala 
https://technologyconversations.com/2014/03/10/scala-tutorial-through-katas/

“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.

Talks

Demystifying Scala by Kelley Robinson
https://www.youtube.com/watch?v=IayQ7lxPUP4

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
https://skillsmatter.com/skillscasts/6834-a-purely-functional-approach-to-building-large-applications

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
https://skillsmatter.com/skillscasts/6146-scalaz-or-how-i-learned-to-stop-worrying-and-love-monads

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
https://www.youtube.com/watch?v=OkTfcyFohS0

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
https://www.youtube.com/watch?v=Ss149MsZluI

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.

Composing Programs
https://skillsmatter.com/skillscasts/10746-keynote-composing-programs

A keynote from the Scala Exchange 2017,  Rúnar Bjarnason talks about how to use components to create software, and why Functional Programming is the answer.

Extended Viewing

Keynote: Scaling Intelligence: moving ideas forward by Jessica Kerr
https://skillsmatter.com/skillscasts/6483-keynote-scaling-intelligence-moving-ideas-forward

A very inspiring talk about how we can make the Scala community a better place.

Daniel Spiewak by The making of an IO
https://www.youtube.com/watch?v=wu6OuBglUGQ&index=27

A thorough introduction on what the IO Monad is and why we should be using it.

Exploring Decision Trees with Matryoshka by Zainab Ali
https://www.youtube.com/watch?v=TrPlVnoLxTI

A super interesting talk about making decisions on data, Zainab uses the scenario of the Titanic sinking to demonstrate.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s