A prime language for tinkering with data that software developers, data engineers and data scientists choose.
Scala is perfect for big projects, as it’s really productive. It enables developers to reduce the size of the source code by a factor of at least 2 or 3 compared to Java.
Whether you’re already professionally coding with Scala or you’re just looking to pick up some basic skills, it seems like Scala is a great choice when taking your career in software to the next level. Why?
- Developers who want to become experts in Big Data and Machine Learning are most excited about learning languages like Scala.
- Scala developers in the US are among the highest paid (StackOverflow Developers Survey 2019), same in Poland, country we — SoftwareMill — operate from: NoFluffJob IT market report.
- Demand for Scala programmers who are versed in functional and object-oriented programming is growing.
- The most common role companies are looking to fill is full-stack developer, followed by back-end developer, and data scientist.
- Scala offers a lot in terms of creating abstractions and hence modelling various business domains — especially useful in the field of distributed data-processing systems.

Do you enjoy a blend of both FP and OOP? Learn Scala if you are Data Engineer / Data Scientist who wants to tackle Big Data with ease.
Resources to improve your Scala coding skills
Beginners: learn on your own terms and pace, get inspired
Scala is a powerful high-level, type-safe programming language that relies on the JVM runtime. Some may say Scala is a “better Java” because it merges the object-oriented and functional worlds together allowing usage of both FP and OOP, declarative and imperative style.
If you’re new to Scala these are places you should start from:
- Scala Tour — the tour contains bite-sized introductions to the most frequently used features of Scala.
- Programming in Scala book — it is the definitive book on Scala coauthored by the designer of the Scala language. It will teach you, one step at a time, the Scala language and the ideas behind it.
- Scala coding exercises — an Open Source project for learning different technologies based in the Scala Programming Language.
- Functional Programming Simplified book — in his book, Alvin Alexander, writes about his own problems in trying to understand FP, and how he finally conquered it.
- Functional Programming on a Higher level course — this specialization provides a hands-on introduction to functional programming using the widespread programming language, Scala.
- Scala best practices — here Nicolas Rinaudo put together a well explained list of all the rules he wish someone’d told him about when he was learning Scala language.
- Scala FUD FAQ for Newbies — if you want to understand the nuances of both the language, and the Scala community — dive into this elaborated Scala FAQ by Mateusz Kubuszok.
- Why Scala? — this blog post by Adam Warski talks about technical advantages of Scala language and ties them directly to business advantages.
- My way to Scala part 1 and My Way to Scala part 2 — read the thoughts of our fellow developers who successfully switched to Scala and get inspired.
- Contribute to Scala OSS projects — find an interesting Scala open source project, ideally something you think you will use, or a subject that interests you. You don’t have to be an experienced programmer to contribute. Your contributions don’t have to be tip-top perfect, sole fact that you’re actively involved is great and helps you learn new concepts quicker.

Experienced Scala programmers
If you’re working on improving your coding skills, you should be re-inventing wheels a lot. Doing more courses, reading advanced books and finding inspirations in articles and tutorials is great. At some point however the best way to go a step forward is to learn directly from experts. Such interaction can spark plenty of quality discussions, even end up in starting friendships, or finding a mentor.
The best way of learning programming is practicing more programming:
- Workshops — when you are faced with complex challenges and working on gaining specific knowledge, workshops add significant value. Such sessions can accelerate your learning process because you can quickly grasp a predefined chunk of knowledge and apply it in practice. Looking for Scala workshops happening now? Check Scalar’s agenda for March!
- Trainings — dedicated trainings have all the advantages of workshops but are extended in time and cover wider range of topics. They are lead by hands-on experts who understand business requirements, the tooling, the development process and the Scala nuances. They are often conducted for the whole companies so all developers can get to the similar level of skills and improve performance as a team.
- Attending Scala conferences and meetups— leveraging the power of crowd cannot be underestimated. Dive into your local meetups lineup and/or the worldwide conferences list. You will gain a lot by putting yourself out there: knowledge about what’s new and hot and insights from companies that are hiring Scala developers. But most of all, you’ll meet fellow developers who are willing to help others solve their problems, make friends, and solve puzzles together.

Still, for those stuck at home at the moment, here are advanced online resources:
- Functional and reactive domain modelling book — the book teaches you how to think of the domain model in terms of pure functions and how to compose them to build larger abstractions.
- Functional Programming Principles in Scala course — this is a course by Martin Odersky that relies heavily on mathematical concepts. It will help you understand the proper way to use Scala as a functional language.
- Getting Func-ey — is a series of articles by Matt Fournier that provides well-explained concepts of moderate to advanced functional programming, ideal for people who want to consolidate their knowledge and want something else than time-consuming books.
- Scala with Cats book — a book by Noel Welsh and Dave Gurnell. Recommended for people who already dipped their toes in Scala and are looking to extend their developer toolbox with functional programming abstractions.
- 9 tips about using Cats in Scala you might want to know — very useful and less known stuff about the library. The examples and specific names are for cats, but scalaz syntax should be similar, owing to common theoretical background.
Stay functional ;)
Just get something out of the list and I promise you’re going to learn something.
This article was originally published on SoftwareMill by Maria Wachal.