Learning Scala is such a pain. Either you follow a large book completely and master it across several months/years or go through overly complicated online guides and get discouraged. I understand it's a large, advanced language, but the community has to seriously work on making things a bit easier for beginners like me. Just look at how easy it is to learn Go or Rust, their official tutorials are amazing and free on the web.<p>Here is what worked for me to learn the basics well: I started off with the book 'Scala for the Impatient', the first half of the book is freely available. I then used Scala School as a list of topics and researched on each using Google. StackExchange has some amazing answers that helped me a lot.<p>Free part of Scala for the Impatient: <a href="http://fileadmin.cs.lth.se/scala/scala-impatient.pdf" rel="nofollow">http://fileadmin.cs.lth.se/scala/scala-impatient.pdf</a>
A well known resource (albeit a bit outdated); however I'm genuinely curious why is this on the front page of hacker news.<p>I thought at first that it's been updated to some 2.1X version but, judging by the github repo, it hasn't been touched for years.
My biggest problem with Scala is that it's too powerful. Reading code I've written weeks or even days later is painful. Conciseness is not always good.
I was learning Scala at one point. I was reading Atomic Scala [1] (I'm a big fan of Bruce Eckel as I learned Java from one of his earlier books, and some C++ before that). And I also took the Coursera Course from Martin O on functional reactive programming with Scala. I don't remember what is was actually called...<p>I'm still into alternative languages that run on the JVM...however I went and learned Go Lang in a weekend and it meets a lot of my needs for building out newer services.<p>Also, for my team the overhead of learning another JVM language (we already use Groovy quite a bit) didn't seem worth it in the end, even though I was a bit of a fan of the Scala idea for a few months.<p>I might still learn Scala some day, but we're not even on Java 8 at my current job, and that would alleviate a lot of my current Java grievances....<p>[1] <a href="http://www.atomicscala.com/ebook/" rel="nofollow">http://www.atomicscala.com/ebook/</a>
Maybe I'm in the minority on this but I felt this guide by twitter was poorly written. It has good coverage but concepts were just not explained very well.<p>The way I learned was reading from front to back "The Scala Programming Language" by Martin himself and starting a new project completely in Scala (which I'm launching soon). I'm sure that's not the best approach for everyone but using Scala in a practical environment in an idiomatic way really helps ground the concepts which can at first seem intimidating and difficult to comprehend.<p>Mastery is a whole other story...<p>p.s. I recommend Scala Cheatsheet if you are just learning: <a href="http://docs.scala-lang.org/cheatsheets/" rel="nofollow">http://docs.scala-lang.org/cheatsheets/</a>
Scala for the impatient is a 400 page book that essentially teaches the syntax :) I can recommend a drastically less time-consuming algorithm:<p>1. Watch a 1-hour video that teaches HelloWorld-stuff in Scala:
<a href="https://www.youtube.com/watch?v=DzFt0YkZo8M" rel="nofollow">https://www.youtube.com/watch?v=DzFt0YkZo8M</a><p>2. Then read first 45 pages (free sample) of my book
<a href="https://leanpub.com/modern-web-development-with-scala" rel="nofollow">https://leanpub.com/modern-web-development-with-scala</a>
(Somewhat off-topic, sorry)<p>This book does an interesting thing:<p>> For each chapter (and occasionally for individual sections), I indicate the experience level. The chapters progress through levels A1, L1, A2, L2, A3, L3.<p>The number is the expertise level, from junior to expert; A stands for Application developer, L for Library developer.<p>I often find myself unsure about wheter a book or text is intended for the kind of user I am for whatever the topic is. Skimming through a book trying to identify what parts you should focus is not always easy.<p>Do you know of other books that do this kind of thing?
My biggest challenge with (learning) Scala and the Scala community is that it feels like nobody is actually shipping software, or advocating for making shipping software easier.<p>And that's a shame, because Scala is language I love for writing a few dozen lines of code, and expressing a domain concept. It's a fantastic language for solving a homework problem set (and it's origins may be part of the reason why). But every library feels like it was concocted as a search for purity with zero attention given to the user experience.<p>The community is badly missing a DHH or Kenneth Reitz -- someone saying: "Ok, it's cool that we have this academic purity stuff and all that, now let's get serious about shipping software, and making tools that help people ship software." It's not that this view needs to dominate a community, but right now it's thoroughly unrepresented in Scala land.