The Erlang syntax might be weird at first. But you'll get used to it.
Pattern matching for function arguments is a life-saver. Erlang also runs checks on your module when it gets compiled. It tells you if vars are being used or not, etc. Very handy IMHO.
The best side-effect of the concurrency model, is that your production environment, apart from config vars, will be almost same as your development environment. Unlike most languages today, you won't need a separate server program (Unicorn, Thin, Passenger, etc). You don't have to put your app behind nginx or apache. Use Cowboy (or alternatives), which is a server library for Erlang. I'll take care of stuff for you.
I write some Elixir libraries in my spare time http://github.com/HashNuke
I don't like the syntax of erlang though. And the missing of macro makes me switch to Elixir.
No builtin syntax for dicts.
Hot code-swapping is its killer feature though. A system mostly written in Erlang can run multiple versions of itself and gradually upgrade data to the new version or downgrade to the old one. E.g your webserver can go from 1.0 to 1.1 without having to suffer even a second of downtime. No other language that I know of has that feature.
It's easy to get hung up at the aesthetics of Erlang. But the parts that really change you as a programmer are the ideals that Erlang embodies. I urge you to continue on, or learn Erlang by way of Elixir.
But I find golang much more accessible. Erlang does not scale down, for simpler tasks, erlang feels like an overkill.
Also while I love erlang syntax, and the functional style, my colleagues find golang lot more palatable than erlang.
These days I've been happy with Python + gevent for the kinds of things I was using Erlang for (writing load test scripts w/ lots of concurrent connections). I never had much need for what OTP offers.
The syntax is a bit weird though and the library support is lacking a bit but a very fine language indeed.