Scala Learning Resources
Tags: scala, learning, resources
Published: 2023-01-24 16:22:31

---
title: Scala Learning Resources
published: true
date: 2020-06-14 00:00:00 UTC
tags: scala, learning, resources
canonical_url: https://www.rocky.dev/blog/scala-learning-resources
series: Learning Scala
---

Like any new technology, Scala and its ecosystem take a while to master and can be frustrating at times. Don't get discouraged! Here are some resources to help.

- Popular IDEs are IntelliJ IDEA with the Scala plugin and Visual Studio Code with the Scala (Metals) extension. If you're unsure which to choose, go with IntelliJ.
- [Functional vs Imperative Programming](https://www.lihaoyi.com/post/WhatsFunctionalProgrammingAllAbout.html)

> **The core of Functional Programming is thinking about data-flow rather than control-flow.** Although, by virtue of editing plain text, you are forced to order your code in a linear sequence of statements, those statements are a thin skin over what you really care about: the shape and structure of the data-flow graph within your program.

- [Tour of Scala](https://docs.scala-lang.org/tour/tour-of-scala.html) — A tour of bite-sized introductions to the most frequently used features of Scala intended for newcomers to the language.
- [Scala: The Good Parts](https://www.rocky.dev/blog/scala-the-good-parts) — Scala allows you to accomplish tasks in different ways. This blog post explains some of the more readable, maintainable approaches.
- [Scala Best Practices](https://www.rocky.dev/blog/scala-best-practices) — Rather than using random examples from Scala projects in the wild, these are meant as an evolving "best" way of doing things.
- 💻 [Scala Exercises](https://www.scala-exercises.org/) — An Open Source project for learning different Scala technologies. Generally relevant are the "Scala Tutorial", "Std Lib", and "Cats" exercises.
- 📖 [Scala for the Impatient](https://horstmann.com/scala/) — An approachable book (384 pages and you can skip the chapters on XML and Parsers) for experienced Java/C++/C# developers who are new to Scala or functional programming. It introduces key Scala concepts and techniques in order to be productive quickly.

### Tools/Libraries

- [sbt](https://www.scala-sbt.org/index.html) — Scala Build Tool, similar to Gradle for Java.
- [Scalafmt](https://scalameta.org/scalafmt/) — Code formatter, similar to Prettier for JavaScript.
- [Scalafix](https://scalacenter.github.io/scalafix/) — Refactoring and linting tool, similar to ESLint for JavaScript.
- [ScalaTest](https://www.scalatest.org/) — Testing tool, similar to JUnit for Java.
- [mockito-scala](https://github.com/mockito/mockito-scala) — Test mocking, a Scala-friendly API over Java's Mockito.
- [Cats](https://typelevel.org/cats/jump_start_guide.html) — Short for "category", provides functional programming abstractions. The homepage provides a Jump Start Guide, Type Class and Date Type documentation, and motivations behind the library.
  — 📖 [Scala with Cats](https://www.scalawithcats.com/dist/scala-with-cats.html) — Free e-book available in HTML, PDF, and ePUB formats introducing the Cats library.
- [Akka](https://akka.io/) and [Akka Streams](https://doc.akka.io/docs/akka/current/stream/index.html) — A toolkit for building highly concurrent, distributed, and resilient message-driven applications.
- [Alpakka](https://doc.akka.io/docs/alpakka/current/) — An Akka Streams-based library used to publish and subscribe to SQS, S3, Kafka, etc. with built-in back pressure support.
- [Slick](https://scala-slick.org/) — A reactive, functional object-relational mapper (ORM).