Learning a new programming language has been on my list quite sometime and fortunately, I got a chance to try out Scala for one of the projects at work a month back. So, its been a month learning Scala now. Though its too early to form an opinion about it, but I must say, it has NOT been an easy language to learn so far. And I think one of the reasons for that is – the language is way too expressive with pretty much all the constructs in the basket and that makes it a very powerful tool but a difficult one to master. So one advice, don’t get disappointed if you feel lost and be patient while you are learning it because it is going to take a bit longer than you expected, so hang in there!!!
As I am on this journey, I am discovering some useful resources everyday, so I thought of documenting them in a blog post. I plan to maintain this blog post as a living document.
Books: 🔗
If you are looking for a quick introduction to the language, I would recommend “Scala for Impatient” by Cay S. Horstmann. It is well written book with right balance of content explaining key concepts and their application. But if you are in for a long and patient read, "Programming in Scala" by Martin Odersky is a good read which explains the key concepts on a much more fundamental and detailed level. I am using both the books and cross reference depending upon the details I want to dive in to a particular topic. I am yet to explore other books, but these two makes a good start. The good thing is that both of them are available in kindle version.
Video Lectures: 🔗
If you like attending video course, then there is a very good course “Functional Programming Principles in Scala” by Martin Odersky on Coursera. The course is divided in to video lectures of 10-20 minutes length, which makes them easy to consume.
Blogs/Online Articles: 🔗
There are some really useful blog post out there about scala, but a few deserve special mention here.
- Blog series called “The Neophyte’s Guide to Scala” by Daniel Westheide
- Scala Documentation
- Twitter Scala School
- Effective Scala
Tooling: 🔗
Eclipse and IntelliJ Idea, both of them, have a good support for scala. In my case, I end up using IntelliJ for my day to day coding, but eclipse has a very good support for Scala worksheet, which I find really handy to try and learn new concepts. For some reason, scala worksheets does not work in IntelliJ Idea. I also use Vim for some quick editing etc and I found vim-scala plugin pretty handy.
Let me know what has been your experience learning Scala and chime in with links to resources which you found useful.