
Summary Elixir in Action teaches you to apply the new Elixir programming language to practical problems associated with scalability, concurrency, fault tolerance, and high availability. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the Technology Elixir is a modern programming language that takes advantage of BEAM, the Erlang virtual machine, without the burden of Erlang's complex syntax and conventions. Elixir gives you Ruby-like elegance with the power to develop bulletproof distributed server systems that can handle massive numbers of simultaneous clients and run with almost no downtime. About the Book Elixir in Action teaches you how to solve practical problems of scalability, concurrency, fault tolerance, and high availability using Elixir. You'll start with the language, learning basic constructs and building blocks. Then, you'll learn to think about problems using Elixir's functional programming mindset. With that solid foundation, you'll confidently explore Elixir's seamless integration with BEAM and Erlang's powerful OTP framework of battle-tested abstractions you can use immediately. Finally, the book provides guidance on how to distribute a system over multiple machines and control it in production. Requires no previous experience with Elixir, Erlang, or the OTP. Written for readers who are familiar with another programming language like Ruby, JavaScript, or C#.
I second the comment (https://news.ycombinator.com/item?id=48327571) recommending How to Design Programs (HTDP) and Structure and Interpretation of Computer Programs (SICP). The former has an edX course (https://www.edx.org/learn/coding/university-of-british-colum... and https://www.edx.org/learn/coding/university-of-british-colum...) and the latter has online lectures (https://www.youtube.com/watch?v=-J_xL4IGhJA&list=PLE18841CAB...)
Head First Architecture (https://www.amazon.com/Head-First-Software-Architecture-Arch...) is good.
Reading about systems thinking would be useful.
Learning programming languages that have been well designed is helpful. I suggest Programming Erlang: Software for a Concurrent World and Elixir in Action.
I read Programming Erlang later, but it was just for fun, and I knew most things already at that point.
I still think there’d be some sort of mental hurdle for me to consider using it for a project of the kinds described on WeUseElixir (vs my go-to language of Python).
But simply toying around with a concrete example of a concrete “word count” program scaled up to multi-core and multi-node made me “get” Elixir a lot more.
Also, I highly recommend this podcast interview with the author of “Elixir in Action.” He does a really nice job describing what makes Erlang and Elixir unique vs other commonly used backend programming languages.
https://se-radio.net/2018/08/se-radio-336-sasa-juric-on-elix...