Learning Scala : A Reference Guide

Overview

During the past 8 months I have been learning Scala alongside the Dev team I lead. I have a Java background, but I also have some experience with C# and a couple other languages. Our Dev team here at Getty Images, with the backing of senior management, has decided to move away from Microsoft/.NET/C# technology stack and embrace open-source technologies. Our preference being Scala and the JVM for moving forward projects.

Over the past few months we’ve learned an incredible amount about Scala, Functional Programming and the various tools, frameworks and libraries that came along with this move. So, as we wrap up the first major phase of our first Scala project, I thought I’d share the various resource the team and myself have used to learn the language.

Scala References:

  • Scala for Java Devs – This is a quick, high level, overview of the language targeted towards Java developers. I’ve also found that it’s helpful to C# developers as well.
  • Scala Quick Guide – A good overview of things you must know about syntax and other fundamental aspects of the language.
  • Scala in Action – This is a great book, which goes over the things you must know to build a Scala application.
  • @typesafe – Follow typesafe on Twitter, they will keep you up to date on the latest webinars going on.
  • Coursera Course – Take the Functional Programming course offered by coursera. It’s free, teaches Functional Programming using Scala and taught by Martin Odersky…enough said

Scala Libraries/Frameworks You Must Learn

There are many great frameworks and libraries available for Scala, but here is a list of resources for the frameworks and libraries we used for our project.

  • Spray – Also know as Spray on Akka and soon to be known as Akka Http. If you are building a Web API, then this is the way to go.
  • Spray Learning – Take a look at my co-worker’s tutorials for Spray.
  • Akka – In my opinion, Akka is the only way to build concurrent / distributed applications with Scala. Also, if you’re using Spray, then you must learn Akka.
  • SBT – Scala Build Tool
  • Slick – Using a database? I know, dumb question…who isn’t. So check out slick…a great way to talk to a database using Scala.
  • Swagger – Building a API? Do you have users of the API? Be kind to them and use Swagger to Document your API for them.

Conclusion

The above is a quick list of resources I have been using when developing in Scala. I plan to update this as I come across more useful resources.