I haven’t used scala 3.
For scala 2, the syntax is a little verbose and awkward, as you try to implement more functional idioms, but the functional libraries have clever ways to work around the awkwardness. If you want to use it as “better java”, I think it is great for that purpose. It is much less verbose than java.
I liked the ecosystem. As other people have mentioned about f# and other vm languages, the downside of using the java (or c#, in f#'s case) libraries is that you get dragged into this OO world. The amount of effort to write a clean wrapper over these libraries is probably equal to the effort of implementing the same library from scratch in scala / Haskell / OCaml, so then you start to question the value of having access to the java libraries. It is a huge relief to be able to use a java library when you are in a rush, and to know that the java library will be feature complete and maintained possibly by a company or a dedicated maintainer.
The type system is large and overly complex, because the language tries to support too many paradigms. People seem to adopt scala over Haskell because it is more approachable, but I think someone can master the Haskell type system faster than the Scala type system.
I agree with the critique of Scala which points out how much energy someone spends fighting over scala style/paradigm use within a team, and how much easier life is in golang, where there is little room to debate style/paradigm (I have never used golang professionally). The perfect use for Scala is if you have an architect who knows Haskell or Scala well, and a team of engineers who know java well. Then you can gradually on board the java developers to FP paradigms, without hurting their productivity in the short term. After a year or so, you can go all in on cats or zio, all within the same language.
My favorite thing about the Scala community is that it attracts architects with deep expertise in building highly available systems, high throughput systems, and scalable systems. I also see less NIH syndrome in Scala shops. The Scala shops usually want to use the best tools and libraries that they can find, rather than use tools implemented exclusively in Scala. If I wanted to find people who knew how to use Kafka, Cockroachdb, or some other best of breed tool, I would put Scala in my job advertisement. I think it attracts this crowd because of two factors: people aren’t drawn to it because of some deep passion for the language like a Haskell enthusiast might be, and the success of akka and marketing towards Java devs means it caught the attention of people who have been building complex distributed systems in Java for many years.
My general preferences are: 1. Haskell, 2. OCaml, 3. golang, but in reality, I want to work on compute intense systems dealing with bioinformatics, geospatial systems, and operations research problems, so I will work in whatever language that the most interesting startup in one of those domains is using. In 2021, it feels like the jvm is just an awkward historical leftover that makes containerizing more complex, so I try to avoid scala and clojure when possible.
Why are you considering akka? Are you trying to build something like a ticketing system or game world, where the state needs to stay in memory and can’t wait for fetches and writes to a persistence system? If so, I would probably attempt zio or haskell with a distributed cache, rather than akka.