<div dir="ltr">Imo the best tutorial for a beginner in any language (for someone who has experience in other ones) is something intermediate and familiar using some ready framework. Some thing which allows him/her to write in a hour something he used to build in other language. Often it is possible to do this even without knowing the language almost altogether. Like, tutorial on Django is a great way to start learning python. Something like this could be created for Erlang, either over pure Cowboy, or ChicagoBoss, or whatever. Just a dumb step by step (type this, run that) tutorial which can be done by anyone who has any programming background. In the end there will be a working site with forms, POSTs and other fancy stuff. I for one learned myself both python and erlang exactly this way (using Django and CB), skipping all the boring stuff.<div>Doing hellowords, compiling modules, doing releases and other stuff like that is really very boring. You can do it later.</div><div><br></div><div>Also I'd say talking about concurrency should start with OTP, and introduce spawn() later. First, OTP gen_server is just easier than standard spawn/receive  for anyone with OO background. Second,  spawn/receive is too similar to standard approaches to multithreading in mainstream languages and it is harder to see all the benefits of Erlang supervision and workers.</div><div><br></div><div>Erlang as a language looks very hard for two weeks, then it suddenly becomes very easy (as a language, concurrency is always hard). Recursion is hard in any language without pattern matching.</div><div><br></div></div>