The language itself is pretty small and I felt like the first stage was pretty easy.
Learning the OTP is a much bigger challenge.
At the same time, I think you can gain a lot of the benefits of Elixir and the BEAM without needing to be an OTP expert, because frameworks like Phoenix leverage it for you.
In my experience, things like pattern matching and immutable data really contribute to a more maintainable code base, whether you find you need the actor model or not.
Part 2 learning Phoenix and OTP has been a long, ongoing thing. If I did it full time it would be done, but doing it off and on part time it is a long slog.
Elixir and its ilk tends to make it easy to do what you want to do.
In Go you have to re-write things over and over because the abstractions are low, but they're easy to do. In Elixir you can use the built in libs/abstractions, but you have have no idea how they work.
This is a gross simplification of both sides of course, but I often see Go-people arguing a different point than their counterpoint in <other language> is trying to make.
They consider themselves "productive" because in go "...the code just flies from my fingers...", when what they're doing is reimplementing the same things over and over because the language doesn't support it.
HAVING to type a lot of stuff, even if it's easy to type, isn't productive. It's just a lot of typing.
Debugging it it a nightmare especially when you have to roll up your sleeves and go into Erlang.
The biggest help was IO.inspect, and then the next biggest was elixir_ls, which had used typespec analysis and highlighted the error for me in my ide.