Local setup & IDEs
As a prerequisite, to compile and run Scala code, you'll need to have the installed. Then, you can use the Scala compiler directly from the command line; use the REPL; or use an IDE such as IntelliJ IDEA or Metals, with a supported text editor. A build tool, such as SBT, Maven or Gradle, will help you in managing dependencies and setting up the compilation pipeline. Below are a couple of guides, which provide a quick-start in various scenarios:
- Official documentation on how to create a simple project!
- IntelliJ bundle - 1-package with Java, IDE and the necessary plugins
- Metals: VS Code / Vim / Emacs users: that’s for you!
- Console REPL & the dominant Scala build tool (SBT)
DID YOU KNOW?
In 2012, we put our first commercial Scala project to production. Since then, we’ve delivered a number of Scala/Akka/Functional programming projects.
Starting with Scala
Scala’s syntax and semantics should feel familiar if you know other modern programming languages. If not, don’t worry: Scala is also a great language to start your programming adventure! Either way, getting to know the basics will allow you to start exploring on your own.
Books we've read
Functional programming simplified
This book makes the process of learning functional programming (FP) in Scala as simple as possible by breaking down complex topics into small, bite-size chunks that are easy to understand. The lessons are presented in a logical sequence — the order in which the author learned them — culminating in advanced topics like functional domain modeling, and how to write and use monads.
Functional programming in Scala
Functional Programming in Scala is a serious tutorial for programmers looking to learn FP and apply it to the everyday business of coding. The book guides readers from basic techniques to advanced topics in a logical, concise, and clear progression. In it, you'll find concrete examples and exercises that open up the world of functional programming.
Scala with Cats
The main goal of this book is to teach system architecture and design using the techniques of modern functional programming. This means designing systems as small composable units, expressing constraints and interactions via the type system, and using composition to guide the construction of large systems in a way that maintains the original architectural vision.
Reactive Design Patterns
Reactive Design Patterns is a clearly written guide for building message-driven distributed systems that are resilient, responsive, and elastic. In this book you'll find patterns for messaging, flow control, resource management, and concurrency, along with practical issues like test-friendly designs. All patterns include concrete examples using Scala and Akka.