Most Useful Resources for Learning Scala

Marcin Krykowski
8 min readApr 19, 2020

--

In the previous article, I pointed at some arguments about why you should learn Scala. In this one, I want to show you what are the best resources. Applies to newbies, beginners, and people already introduced to Scala.

Now we can start!

Online resources

Photo by Andrew Neel on Unsplash

Video Courses

  1. Martin Odersky — Functional Programming Principles in Scala

https://www.coursera.org/learn/progfun1/home/welcome

I can’t call myself a real Scala guy if I don’t put Martin Odersky’s (Scala’s inventor) course as my #1. I think many people start at this point. I have to admit that it’s not so easy but in my opinion, it’s worth passing at some point in your career as a Scala developer. It’s also a good idea for people who need additional motivation as you have deadlines for programming assessments at this 6 week-long course.

2. Mark Lewis — Introduction to Programming with Scala

Another very good quality free video resource for learning programming and Scala. You can find there functional problems as well as some web development using Scala or even machine learning stuff. I’d say that everyone will find something useful for them.

3. Udemy courses: Stairway to Scala Applied, Part 1, Stairway to Scala Applied, Part 2 and Stairway to Scala Applied, Part 3

These Udemy courses are great. They start from language syntax and end at really low-level SBT (Scala Build Tool) features. What gives you the whole spectrum of what you can achieve with Scala.

4. More Udemy courses: Rock the JVM! Scala and Functional Programming for Beginners, Rock the JVM! Advanced Scala and Functional Programming, Rock the JVM! Akka Essentials with Scala

I’d recommend Rock the JVM series to a little more advanced people who can already do some coding as they might be a little bit too complicated for someone who just starts. Also gives you a great variety of stuff from functional libs to parallel programming.

5. https://www.fp-tower.com/courses/foundations

The amazing course provided by Julien Truffaut on functional programming in Scala. Julien will help you to switch from object-oriented to functional thinking. If you start shaking while someone says eta expansion this course is definitely for you!

6. https://www.youtube.com/c/DevInsideYou

Youtube channel where the author publishes Scala and not only video playlists. A great resource for devs that want to grasp some knowledge about basics in Scala as well as some more advanced concepts like tagless final and so.

7. https://www.youtube.com/channel/UCRS4DvO9X7qaqVYUW2_dwOw

Channel created by Daniel Ciocîrlan where you can learn about the newest Scala features as well as some more established concepts. Short and concise videos with lots of coding are doing their work.

8. https://scala.zone/

Free online resource for learning Scala 3. Concrete video lessons conducted by Jon Pretty and Virtus Labs.

9. https://leobenkel.com/category/scala/

Short lessons with real-life examples made by Leo Benkel might be a good start point or a place where you can revise some concepts and sharpen your skills.

Photo by Perfecto Capucine on Unsplash

Ebooks

  1. https://underscore.io/books/

Bunch of free ebooks on various Scala topics and ecosystems like Play or Slick.

2. Functional Programming, Simplified Alvin Alexander

Makes the process of learning a functional approach with Scala very simple by breaking down all concepts into small chunks.

3. Introduction to Programming and Problem-Solving Using Scala Mark C. Lewis, Lisa Lacher

The follow-up to mentioned earlier Scala course by Mark C. Lewis.

4. Scala Programming Projects: Build real-world projects using popular Scala frameworks like Play, Akka, and Spark Mikael Valot, Nicolas Jorand

Language introduction from the perspective of creating a web application. Might be a good choice for people who want to see more than console output.

5. https://www.lightbend.com/ebooks

Another aggregator of books on various Scala things. People introduced to language may find something useful for them. Says a lot about many powerful tools and techniques.

6. Scala Puzzlers. The fun path to deeper understanding Andrew Phillips, Nermin Šerifović

Collection of answers for what exactly happens behind the compiler and how it works. Makes you aware of the traps and pitfalls that await you.

7. https://riptutorial.com/ebook/scala

Free ebook on basics in packed form from StackOverflow contributors.

Photo by Helloquence on Unsplash

Blogs

Blog posts are always one of the best knowledge sources as they present you most recent things from the language or interesting case studies. I listed some of them:

  1. https://scalac.io/blog/
  2. https://blog.softwaremill.com
  3. https://www.lightbend.com/blog/scala
  4. https://alvinalexander.com/scala/how-to-use-sortInPlaceBy-method-mutable-sequences-arraybuffer/
  5. https://www.reddit.com/r/scala/
  6. https://medium.com/disney-streaming
  7. http://www.lihaoyi.com
  8. http://kubuszok.com
  9. https://blog.rockthejvm.com/
  10. https://scala.monster/

If you don’t want to subscribe to all mentioned blogs just check this: https://scalatimes.com. It aggregates the most recent blog posts from Scala world.

Photo by Fotis Fotopoulos on Unsplash

Coding practice

Probably you already know that there is no programming without practice. So code, code, and code. If you want to start with some Scala syntax basics with explanation and by the time go deeper I’d go for:

  1. https://www.scala-exercises.org

Below you can find a list of websites where you can try yourself and solve some small algorithmic problems.

2. http://exercism.io

3. https://www.codewars.com

4. https://tourofscala.com/

Or you can find a list of coding katas and post them to github.com after you crack them. It will enrich your career!

Other types

There are also some free online resources that I didn’t know how to categorize. They are Github repositories (two of them) and one is like a super long blog post. All are very nice to start with!

  1. https://github.com/hjhuney/An-Intro-to-Scala
  2. https://github.com/dehun/learn-fp/

The first one is about starting with Scala and the second one is about the functional approach. (Thanks captain obvious! 😂)

The next ones are from Twitter itself:

  1. https://twitter.github.io/scala_school/
  2. http://twitter.github.io/effectivescala/

And these two below guide you through best practices and answers to the most common Scala questions.

  1. https://nrinaudo.github.io/scala-best-practices/
  2. https://kubuszok.com/2018/scala-fud-faq-for-newbies/#i-heard-scala-has-poor-ide-support---is-it-true
Photo by Ed Robertson on Unsplash

Books

Finally time for some paper books (BTW you can still download them as ebooks 😂) but if you want to feel some paper in your hands you can grab their touchable versions.

  1. Scala for the Impatient Cay Horstmann

A good point to start as C. Horstman is one of JVM gurus. The book introduces key Scala concepts you need to know to start being productive with the language. All is given to the user in compressed form.

2. Learning Scala: Practical Functional Programming for the JVM Jason Swartz

One more book to introduce you to basics as it seems that you don’t need to be a distributed system specialist or data scientist to use Scala widely. The book demonstrates why learning Scala which has concise syntax and is statically typed might improve your craft as a Ruby or Python developer.

3. Programming Scala, Scalability = Functional Programming + Objects Dean Wampler, Alex Payne

As the title says joins two programming paradigms to show you the beauty of Scala. A great introduction to language and ecosystem.

4. Programming in Scala: A Comprehensive Step-by-Step Guide Martin Odersky

The one above is very well crafted in terms of learning. New concepts are introduced basing on the previous ones. Points at the best parts and explains new features in a pretty easy way.

5. Functional Programming in Scala Paul Chiusano

By many called The Bible of functional programming in Scala. Explains how to take this approach and use it within daily business needs as well as how to put this into your code. The author guides readers from almost obvious concepts to advanced topics in a logical and properly structured way.

6. Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine Venkat Subramaniam

Venkat Subramaniam is a widely known and pretty popular author of introduction books in the JVM world. You can check him on youtube where he gives you a broad Scala intro in less than 2 hours. The book above is a solid guide to Scala fundamentals.

7. Scala in Action Nilanjan Raychaudhuri

I’d recommend this one for people who have some Scala knowledge but want to know how to approach day-to-day challenges with what Scala offers.

8. Scala in Depth Joshua D. Suereth

Designed to help you introduce and easily adapt Scala to your existing ecosystem with dozens of powerful techniques and rich examples. For people familiar with Scala basics.

Photo by Headway on Unsplash

Conferences & meetups

Behind each great language stays a great community. It’s very true for Scala as it’s still open-source with Lightbend Company maintaining and developing it. It’s a good thing to attend local meetups or conferences near you. Why? Because it gives you to meet people like you who just started to learn to code or are switching from another language. In the future, you might cooperate with them on your project written in Scala or maybe you can set goals together and motivate each other. At conferences or meetups, you will dive deeper into language. You will learn a lot about how people overtake struggles in their projects or how to use the newest Scala features. You might also meet people who might be your mentors in the future. Unquestionably it’s a much wider topic but getting back to Scala, you can find conferences here: https://www.scala-lang.org/events/ and meetups here: https://www.meetup.com/.

The best thing about conferences that you can find plenty of lectures are already posted on their youtube channels! You have to try them!

You can find much more sources for your knowledge but these above are checked and recommended not only by me. I didn’t put too much description for each item not to make this list of resources too long. You don’t have to go for each one. Just start and be patient!

In the future you probably will need to learn more things like Play Framework, Cats, Spark depending on what way you will choose: being a web dev, doing some functional stuff, or creating models for machine learning. What’s great is that you can do all these lovely things with Scala.

Last but not least remember that learning in general takes time. It’s not a sprint, it’s a marathon. For sure. Be aware that it will take time, you’ll fail but be patient, be consistent, do one little step every day and remember about the prize at the end.

After some time and achieving a decent coding level you can check what to do next on your career path here: WHAT’S NEXT? (I know it’s not strictly about Scala, but principles are about the same).

If you still have no idea how to start the Scala journey in your case e.g. you are new to programming or new to the functional language or anything just let me know and I’ll help you to structure your road to becoming a Scala master. Drop me a message on LinkedIn, Twitter, or via mail at marcin.krykowski@gmail.com. I’ll be more than happy to help you and share some thoughts.

Also, I encourage you to sign up for my newsletter https://brandingfordevs.substack.com/.

--

--

Marcin Krykowski

Entrepreneur, Software Engineer, Business Advisor, Self-Management Fan