So, its been a while since my last post. In my time away I’ve been busy with more than enjoying the summer sun. Since May I have been working on assignment as a Scala developer, working to build front and back end systems with this new language.
Now that the autumn is setting in and the days are getting short, I am hoping to bring some of my learning in this language into my blog. As a quick start, there are a few places that I have found to be a good ‘go to’ for getting to grips with the language and the tools to get productive with the language:
Firstly, for getting to grips some of the key concepts in the language, I recommend reading Daniel Westheide’s blog series ‘The Neophytes Guide to Scala‘. Although a number of years old, the series explains some of the fundamental concepts in the language in a clear and comprehensive manner. These are still relevant today and a good understanding of these will allow you to be productive in the language.
Once you are happy with the basics, a good place to build you knowledge is the scala exercises website. This an interactive site that tries to explain some of the more complex concepts in the language. It also integrates with your github account to allow you to track your progress through its various learning paths.
To build apps, I have been using the play framework which is application framework to enable productivity in both Java and Scala. The framework provides accessibility into some of the fundamental tools you will need to create modern restful api based web applications.
When getting serious in building you web applications, you may need to start looking into solving specific use cases around scalability and concurrency. With this you will start to take advantage of the Akka capabilities built into the Scala library. The Akka getting started guide is probably the best place to go to get your head around how this works, the documentation is long and does go into detail when trying to explain the concepts behind Akka, however this is necessary when due to the complexity around working with distributed systems. I am still in the process of digesting this and may try and get some posts to help ease the process.
Sometimes you may run into problems which are common to other solutions, if you are lucky you may even find that someone else has solved your problem, well for scala, this is what Alpakka tries to do. Developed by the people who create Scala, the Alpakka library provides a series of tools which allow you solve some of the more common problems/use cases when building apps in the language.
All the above covers coding, however to be productive in any programming language you will need a good build tool to compile and package you development for you. For this, scala has SBT to provide its glue.
Hopefully that lot will give you a good pointer to some of the key material to get productive in Scala, I will write a few articles on some of the areas I have found interesting whilst getting to grips with the language.