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.