If you don't have prior programming experience some Java (or Python, C#, ...) courses would help to get the basics, for example:
Use Scastie (online code editor) for code related questions.
- Nice and short intro to Scala by Adam Warski
- Great intro to FP on Scala by Rob Norris
- Series of courses from the lang creators - first one quite tedious, second and next are much better
- Rock the JVM on Udemy and the basic one - I didn't try it, but seems good at a glance
- Введение в Scala on Stepik by Tinkoff Bank
- Begginer:
- Programming in Scala
- Creative Scala (free!) - fresh and focuses more on FP
- Essential Scala (free!) - a bit older but still seems good
- Advanced:
- The best one for FP and Cats ecosystem - Scala with Cats
- Famous book-exercise - Functional Programming in Scala (aka the Red book)
- Errors handling strategy in functional Scala
- Type Classes from the ground up by Nicolas Rinaudo
- Monads explanations:
- Monads in Scala
- Good explanation in general (Russian)
- Scala best practices I wish someone'd told me about - Nicolas Rinaudo and the related list of best practices
- Nice intro to Cats-Effect
- Scala-exercises (turn off ad-block first)
- Awesome Scala - list of libs and frameworks
- Official tutorial and docs are not that bad as well
- Be patient, Scala may seem like better Java at first but it's deeper then it looks partially becayse Scalaa is a combination of 2 paradigms (object-oriented and functional).
- Experienced buddy in Scala or any other functional (or object-oriented) programming could help a lot, also you can ask any questions in Scala gitter channels as well.
- Environment: Intellij with Scala plugin are quite nice. VS Code with Metals plugin super as well. Eclipse Scala IDE seems a bit outdated to me.
- In Scala instead of using frameworks, we tend to use libraries that are compatible with each other by means of type-classes and/or monads (Cats.effect is an example of such compatibility layer). That way code is simpler and more extensible. For example, Akka-Http/Tapir/Http4s instead of Play Framework. Or Future/Monix/IO/Fs2/ZIO instead of Akka Actors.
- CoRecursive w/ Adam Bell - for me the episode#004 with Runar Bjarnason was eye-opening in terms of FP and functinal design
- FlatMappers (Russian)
- Scalalaz (Russian)
- FP - a way of writing programs so it's very composable and easy to reason about by omitting mutable state, side effects (eg. blocking threads, throwing exceptions, etc), non-local reasoning (dependency injection, actors, runtime class loading, reflection)
- Cats - enhancement of standard lib for basic FP
- Cats.effect - furthermore provides a way to write programs without side-effects (IO type) and concurrently
- Tofu - alternative to Cats.effect
- ZIO - also alternative to Cats.effect but with quite different approach
- Akka - Actors library
- Read on A Glossary of Functional Programming by John De Goes