Since at Codacy we chose Scala to build our infrastructure, it’s important that we provide resources for learning Scala to our engineers (not all the engineers that we hire are Scala experts). Scala isn’t hard to learn, and good engineers usually pick it up very quickly.
Here is a compiled list of Scala resources to kickstart your Scala learning.
Online Resources
- Functional Programming Principles in Scala on Coursera — Free — Beginners
The first and most famous resource is the online class “Functional Programming Principles in Scala” taught by Martin Odersky himself. It gives a great overview of the language and a good introduction to functional programming. In seven weeks you will learn the elements of the functional programming style and how to apply them using Scala.
This class is oriented towards practice and is probably one of the best resource to learn by example. Principles of Reactive Programming is a good follow-up to learn more about futures, reactive streams and the actor-model.
- The official documentation — Free — Beginners to Intermediate
One of the best resource for learning Scala remains the official documentation. It has several guides and tutorials specifically targeted towards Java, Ruby or Python developers moving to Scala. It is a great place to get help on more specific questions or topics and to accompany the Coursera classes.
- Scala Exercises — Free — Beginners to Intermediate
One of the more recent addition is Scala Exercises from the 47 Degrees team. It brings the popular Scala Koans to the web. Offering hundreds of solvable exercises organized into 42 categories covering the basics of the Scala language.
- Twitter’s Scala School — Free — Beginners to Intermediate
As one of the main company using and driving the Scala ecosystem, Twitter created the Scala School. It covers all the main features of the language.
- Online Playgrounds — Free — Beginners
If you’re looking for a quick and dirty way to play online with the language Scala Tutorials, Simply Scala and the Scala Fiddle are good places to start.
- Online communities
The Scala community is growing and very open. Often the best way to learn a new programming language is to exchange with more experienced developers or other learners. The Scala-lang website has a great list to check-out.
Books
- Programming in Scala by Martin Odersky, Lex Spoon, and Bill Venners — Paid — Intermediate
We keep religiously our copy of Programming in Scala at the office. It’s provides great insights on the language features with detailed examples. Highly recommended!
- Scala in Depth by Joshua D. Suereth — Paid — Intermediate
Scala in Depth covers a full range of best practices and examples to help get started and solve common Scala issues. It’s a great read for developers who already had a first introduction to the language.
- Scala Puzzlers by Andrew Phillips and Nermin Šerifović — Paid — Intermediate
A great little book that covers, as the title mentions, a list of puzzlers that you might face when moving forward with learning the language. Avoid these pitfalls by buying this book.
Other book suggestions can be found at http://www.scala-lang.org/documentation/books.html
Tools
- Codacy — Free/Paid — Intermediate to Advanced
Well yes, one of the biggest surprise that we had with Codacy is how it is used for learning Scala’s best practices. Indeed, we see more and more companies using Codacy to onboard developers faster and save time from senior engineers. Codacy detects code style, error prone, best practices etc. issues after every commit and pull request and gives feedback on why they should be avoided.
- ScalaStyle — Free — Intermediate to Advanced
ScalaStyle (that Codacy also uses), follows the same logic. Running Scalastyle on your first lines of Scala will teach you a lot about common errors and will allow you to improve your skills quickly.
So what exactly do we recommend and in what order?
Every engineer has different ways of learning a new language. But we believe that the Coursera classes are real must do for every engineer. Combined with a book and online examples it’s a great way to get started with the language. Once a developer starts writing his/her first lines of Scala, static analysis and linting tools are in our (biased) opinion a great way to get continuous feedback on the produced code and improve his/her skills.
Have other resources to share? Please do comment and share your tips on how you learned Scala.
We published an ebook: “The Ultimate Guide to Code Review” based on a survey of 680+ developers. Enjoy!
About Codacy
Codacy is used by thousands of developers to analyze billions of lines of code every day!
Getting started is easy – and free! Just use your GitHub, Bitbucket or Google account to sign up.