Scala
Here are some resources our developers use when learning Scala. If you have suggestions for us to include, then let us know @WorkdayDev
First Steps
- First Steps to Scala Article
- Setup a Scala development environment (including Eclipse support)
Get the Scala Language Distro
Get the Eclipse Scala IDE
Don’t like Eclipse? There’s also JetBrains’ IntelliJ IDEA Scala - Use the REPL - it’ll be your best friend and a great way to learn and try out syntax.
- Try Scala Tour - interactive tour of the scala language
- Try Scala for the Impatient - should be enough to get you started
Useful Links
- Scala Lang - The Scala Language site / api docs
- Typesafe - the company behind the Scala hivemind - provides commercial support, courses and the Typesafe Stack (scala + akka + play + spray + slick, etc ).
- Twitter Scala School
- Java to Scala cheatsheet
- The Neophyte’s Guide to Scala - for beginners ready to delve a bit deeper.
- StackOverflow Scala Wiki
- Scala Types of Types - good overview of different types in Scala
What should be on your bookshelf
- Programming In Scala 2nd Edition by Martin Odersky, Lex Spoon and Bill Venners
Definitive, but dare we say it, a little dry. That being said, it’s a text-book that’s worth reading. - [Scala in Depth by Joshua D. Suereth] (http://www.manning.com/suereth/)
Excellent book for more advanced topics - don’t start with this - but when you are ready, read it, then read it again. - DSLs in Action by Debasish Ghosh
Covers DSLs very well in Ruby, Groovy, Scala and Clojure (Scala gets a lot of coverage). Also covers External DSLs with Scala parser combinators generating case class models
Scala Courses
Some excellent free Coursera courses are available. They are 7 weeks long, so it’s a commitment, but worth it. Start with the Functional Programming Principles - this teaches functional programming through Scala.
Tips
- [Between Zero & Hero Tips] (https://speakerdeck.com/agemooij/between-zero-and-hero-scala-tips-and-tricks-for-the-intermediate-scala-developer) - Age Mooij’s Scala Tips and Tricks for the intermediate Scala developer
- [StackOverflow Hidden Features of Scala] (http://stackoverflow.com/questions/1025181/hidden-features-of-scala)
Style / Coding Standards
- Scala Style Guide - mostly naming conventions, indentation style etc.
- [Twitter’s coding standards] (http://twitter.github.com/effectivescala/)
- “Scala In Depth” by Joshua D. Suereth - Chapters 2+3 - This contains some good advice similar to “Effective Java”
- [Zen of Python] (http://www.python.org/dev/peps/pep-0020/) - provides some good general principles for succinct coding styles, these apply equally well to Scala code
Practising Scala
- We would advise beginners to start with unit-testing their existing Java code in Scala. It’s a useful and non-threatening way to start getting to grips with the syntax. Have a look at ScalaTest or Specs2
- Scalatron a programming game that can help with learning Scala
- Some puzzles that can be useful as well - Ninety-Nine Scala Problems
Functional Programming
- [Introduction to Functional Programming] (http://jsuereth.com/intro-to-fp)
This is an excellent presentation that shows how functional programming simplifies using APIs and Futures