Materials I've read / watched / done so far:
- Martin Odersky's Functional Programming Coursera course
- `Scala in Action`
- 47 Degrees' Scala Koans
I'm currently reading `Scala in Depth`.Most Scala books were written pre 2.10, which makes them outdated enough that it would be hard for many new adopters of the language to get much out of them.
First 1/3 of the book is free online. The entire book is only $20 or so on Amazon.
If you've done the first Odersky course in coursera, the one he does with Roland Kuhn and Erik Meier is a very natural progression that will be far more practical than the original.
There are good series of blogs out there that, although somewhat outdated at times, explain concepts far better than the IMO dreadful Typesafe documentation. The twitter school, for instance, will at the very least give you names for features that, if you saw in code, you'd not be able to easily search for, due to their very generic syntax: For instance, context bounds. Another good set of blog posts comes from Bill Venners in the Artima website.
Good luck with your quest!
Second, come check out the #scala channel on Freenode. It's fantastic, has a REPL bot so you can show everyone in your compiler issues and get realtime help, tons of people, always active, very beginner friendly. Give it a shot.
Unless somebody like Tony Morris needs to feel better about his day. The average IRCer is really nice but (at least when I was over there) there is an ugly and abusive side that almost burned me out on Scala.
But yeah, it sucks and I wish the community would do something. We don't need a big policy / code of conduct / whatever, we need an adult recognition that one individual is a problem.
2. "Functional Programming in Scala" http://www.manning.com/bjarnason/
3. stackoverflow.com
If you're only familiar with scripting languages, it's going to be sort of a leap into learning Scala and could be done I think, though probably not the language I would recommend starting with since it's easy to abuse. The syntax is nowhere the same, but Scala sort of reminds me of the "Perl of statically compiled languages" in that you can write some really obtuse code without even trying if you're not careful. I don't think that's a bad thing necessarily, because it's a language that gives you a lot of flexibility (and more than enough rope to hang yourself). If you work with someone else, be sure to discuss some sort of agreed upon standard to using Scala, else you'll end up with some messy code.
Scala looks a bit like Python in parts as well as Swift, but I consider it more closer to a progressive version of C# with F# mixed into it.
When I was learning Scala, I was intimidated by a lot of the syntactic sugar that it had. It's a calming effect to realize that all of that desugars into very simple, regular things. Java happens to be a very regular, unsurprising language.
So despite how surprising/special Scala may seem, under the hood it's just a bunch of methods.
There will be an acclimation period where you eschew the fancy stuff and stick with the Java style. But as you encounter the same structures and pain points, you will begin to see which Scala structures you like and will become comfortable with.
Find a style guide. Don't go crazy with point free. In general, it's a bad idea. (It's good if your DSL is super sexy/robust/easy to understand)
I also like the language is functional first, meaning you are not forced to place functions inside companion objects or classes.
Thanks!