I have recently started my first job as a a Junior Software Engineer. It comes, of course, with a new set of challenges but I am particularly excited at the prospect of the steep learning curve that awaits me and the invaluable opportunity to learn from my more experienced peers. Within my team, many of the existing applications have been written in Scala, a language to which I have had no prior exposure. Alongside a number of other learning objectives, I have set myself the challenge to teach myself Scala in my spare time. This learning process will, I expect, be expedited through continued exposure to the language through pair programming and mobbing with the rest of my team.
I have carefully planned my approach and, having researched what is available, have identified the resources that I will be using. These are as follows:
- Functional Programming Principles in Scala on Coursera
The first and most famous resource and the suggested starting point by those in the know, is the is the online class “Functional Programming Principles in Scala” taught by Martin Odersky. Odersky is in fact the designer behind Scala, so it is perhaps not surprising that his course is so highly regarded. The course itself is seven weeks long. In this relatively short time-frame, it provides an overview of the language and an introduction to the principles behind functional programming and how these can be applied using Scala.
Principles of Reactive Programming provides a a good follow-up.
- The Official Scala Documentation
When learning a new programming language, it is always sensible to incorporate the official documentation. The official Scala documentation is actually quite useful. It incorporates several guides and tutorials specifically targeted towards developers who have an existing knowledge of either Java, Ruby or Python and are seeking to transfer over to Scala. It is a useful accompaniment to the Coursera classes.
- Twitter’s Scala School
As one of the driving forces behind Scala’s popularity and as one of the most powerful companies promoting the continued development of the Scala ecosystem, Twitter has also produced some of the most useful resources for developers seeking to learn the language. It has created its’ own Scala School, which covers all the main features of the language.
- Scala Koans
Scala Koans aims to teach Scala through the process of fixing errors and learning more about the language and programming principles it enforces.
- Scala Community
The Scala community continues to grow. Arguably the the best way to learn a new programming language is engage with the community of other developers and learners who are using the language. The Scala-lang website has a great list to check-out.
- Programming in Scala by Martin Odersky, Lex Spoon, and Bill Venner
Programming in Scala provides great insights on the language features with detailed examples.