Learn Elixir: The Ultimate Guide
Tags: elixir, beginners, webdev
Published: 2021-02-08 14:21:03

---
title: Learn Elixir: The Ultimate Guide
published: true
date: 2021-02-08 00:00:00 UTC
tags: elixir, beginners, webdev
canonical_url: https://serokell.io/blog/learn-elixir
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/j60n2x9xlru61hnrfv9q.jpg
---

# Learn Elixir: The Ultimate Guide

If you come from an object-oriented background, Elixir might be a little bit confusing.

Thankfully, there are a lot of resources out there that will help you learn the language and the functional programming paradigm. Below, I have listed most that I think are valuable.

The article has two parts. In the first one, I review resources for beginner Elixir developers. Once you finish up with these, the second part is a collection of further suggestions to help you improve your skills.

Since everyone learns differently, I have tried to provide a diverse set so that you can pick content that suits your learning style. Good luck!

## Learn Elixir with these resources

### Elixir books

#### Programming Elixir & Elixir in Action

![Programming Elixir, Elixir in Action](https://serokell.io/files/ts/tsjxawo3.1_(19).jpg " ")

These are the two best Elixir books for beginners: _[Programming Elixir](https://pragprog.com/book/elixir16/programming-elixir-1-6)_ and _[Elixir in Action](https://www.manning.com/books/elixir-in-action)_.

Both have three sections: introduction/syntax, OTP, and stuff you can skip for now.

There are some differences. Programming Elixir is more accessible and beginner friendly, while Elixir in Action is a bit more detailed, which is a minus for it in the syntax section and a plus in the OTP section.

If you can access both, I’d advise reading them together until the third section. If not, choose Elixir in Action – it will take you to production-level Elixir faster.

#### Joy of Elixir

Both of the books above assume that you are switching to Elixir from another programming language. If Elixir is your first language ever, _[Joy of Elixir](https://joyofelixir.com/toc.html)_ is well-suited for complete programming beginners.

### Online resources

#### Elixir’s documentation

[Elixir’s homepage](https://elixir-lang.org/getting-started/introduction.html) has what amounts to a book on Elixir. It can serve as a quick intro to the syntax or even substitute for a “real book” if you’re a person that can’t wait to get a project up and running. Elixir’s documentation is renowned for its greatness, so don’t be afraid to use it.

#### Elixir School

[Elixir School](https://elixirschool.com/en/) is a fantastic resource that includes syntax, OTP, and some stuff on Ecto (Elixir’s database tool) and other libraries. It is somewhat similar to the introduction on the Elixir website but more in-depth.

If you want to use an online resource instead of a book, or perhaps you feel more comfortable reading about Elixir in your native language (Elixir School has translations in 24 different languages!), this might be your choice.

#### Learn With Me: Elixir

[Learn With Me: Elixir](https://inquisitivedeveloper.com/tag/lwm-elixir/) is a great resource to pair with Joy of Elixir for further beginner programmer studies. It’s like having a personal learning buddy!

Furthermore, if you like your intros with a bit more prose, this series is for you. It covers a lot of concepts and can help in case you have a question that the documentation or StackOverflow didn’t (or couldn’t) answer.

Since it’s a blog, it’s always in progress, but the basics have been covered.

### Coding exercises

![Exercism](https://serokell.io/files/gs/gshalg36.2_(13).jpg " ")

I would suggest doing [Exercism](https://exercism.io/) exercises in parallel to reading the books as they are a great way to test out your skills, learn new things, and practice Elixir. What puts Exercism over other “kata” websites is the fact that you get mentoring, _for free_.

### Elixir tutorials on YouTube

Some of you might perceive information better through video. Personally, I watch YouTube videos to immerse myself in the subject when my brain isn’t ready for serpentine book paragraphs and code examples.

#### Elixir tutorial by Derek Banas

Get introduced to the syntax of Elixir and go through some code and a few vital concepts in 1 hour. Extremely simple, extremely effective, no fluff.

{% youtube pBNOavRoNL0 %}

#### Intro to OTP in Elixir

A broad overview of OTP. You can watch this before tackling the OTP section in a book or course.

{% youtube CJT8wPnmjTM %}

#### Introduction to Elixir

If you prefer to learn by video, this is a ten video series that covers most of the stuff that one of the introductory programming books would cover.

{% youtube GQVXyjYX1zA %}

### Elixir communities

![Slack, Reddit, Elixir Forum logo](https://serokell.io/files/dh/dhp1g4zq.3_(11).jpg " ")

While you are learning, go ahead and check out [r/Elixir](https://www.reddit.com/r/elixir/) and [Elixir Forum](https://elixirforum.com/). Elixir Forum, in particular, is a good place to find extra content that is not listed in this guide.

If you are looking for a more chat-like experience, join the [Elixir Slack workspace](https://elixir-slackin.herokuapp.com/), they have a #beginners channel with nice people that answer questions. In addition, you are welcome to come hang out at [#elixir-lang](http://irc.lc/freenode/elixir-lang) on IRC.

## Intermediate resources

### More books

You can find a multitude of cool Elixir books out there; here are the optimal choices for a budding Elixir developer. If you want more, head to the [Books section](https://elixirforum.com/c/learning-resources/books/57) of the Elixir Forum.

#### Programming Phoenix

![Programming Phoenix](https://serokell.io/files/j8/j8gzzjup.4_(6).jpg " ")

Phoenix is the main Elixir’s web framework. If you are coming to Elixir to build web apps, this is what you will probably use. _[Programming Phoenix](https://pragprog.com/book/phoenix14/programming-phoenix-1-4)_ is a lucid introduction to Phoenix and the principles underneath it. With it, you can learn Phoenix and build a reasonable-ish application at the same time.

#### Programming Ecto

While the Phoenix book covers the basics of Ecto, _[Programming Ecto](https://pragprog.com/book/wmecto/programming-ecto)_ delves deeper into Ecto’s philosophy and all the things that you can accomplish with it.

To pair it with, here is a cool video on Ecto:

<center>
<iframe width="560" height="315" src="https://www.youtube.com/embed/YQxopjai0CU"></iframe>
</center>
#### Designing Elixir Systems With OTP

![Designing Elixir Systems with OTP](https://serokell.io/files/29/291z30n9.5_(4).jpg " ")

Do Fun Things with Big, Loud Worker-Bees! _[Designing Elixir Systems With OTP](https://pragprog.com/book/jgotp/designing-elixir-systems-with-otp)_ is an introduction on how to structure your Elixir applications and make use of OTP properly. It’s straightforward and quite handy once you start going further than simple modules or using frameworks.

There is an [EMx episode with authors](https://devchat.tv/elixir-mix/emx-063-designing-elixir-systems-with-otp-with-bruce-tate-and-james-gray/) in case you want to hear what you will get before you leap.

#### Metaprogramming Elixir

_Did you know that most of Elixir is written in Elixir? Here’s how._

The implementation of first-class metaprogramming, or “programs writing programs”, was first introduced in Lisp. It is most useful in practice to implement boilerplate generation or have compile-time parametric polymorphism.

Elixir, inspired by Lisp’s facilities, provides programmers with two ways of metaprogramming: defining macros and code generation.

Believe it or not, but you can take a list, enumerate over it and define functions based on the values of the list at compile time! It is really easy if you familiarize yourself with two primitives: quote and unquote (that are really just macros, code of which you can also read later on). Once you understand those, it’s just like writing any other Elixir code. Truly a useful tool.

Read _[Metaprogramming Elixir](https://pragprog.com/book/cmelixir/metaprogramming-elixir)_ to delve deeper into the possibilities of metaprogramming in Elixir.

### Elixir courses

#### Elixir for Programmers

[Elixir for Programmers](https://codestool.coding-gnome.com/courses/elixir-for-programmers) is a course by Dave Thomas, the author of the brilliant The Pragmatic Programmer and Programming Elixir, the beginner book mentioned at the start of the article. This course throws you straight into building things, and you are gonna create a Hangman game using OTP and Phoenix. If you need to get accustomed to the language quickly, this is the best way to do it.

The course is not free, but at $30 it is quite good value.

#### Alchemist Camp

[Alchemist Camp](https://alchemist.camp/start) covers a variety of topics suited for both beginner and intermediate Elixir developers. While you need a “PRO membership” to see some of the videos, the free ones are already worth your time.

#### The Complete Elixir and Phoenix Bootcamp

Udemy courses get a bad rep these days, but I browsed [this one](https://www.udemy.com/course/the-complete-elixir-and-phoenix-bootcamp-and-tutorial/#instructor-1), and it surprised me quite a lot. While the brevity of the course (it also covers Elixir, but just a little bit) makes it something I would not recommend to complete beginners, the section on Phoenix is astonishingly well done.

Unfortunately, it uses Phoenix 1.2, so some of the code in the videos is outdated for newer versions of Phoenix. I don’t think that figuring out the correct code is a problem if you’re adventurous enough, though. :)

### Podcasts

Now, these aren’t exactly prime learning material on the foundations of Elixir, but if you are searching for something to listen to in free moments, why not?

#### Elixir Wizards

[Elixir Wizards](https://podcast.smartlogic.io/) is a podcast hosted by Justus Eapen and Eric Oestrich. Every episode, they invite a special guest to talk about some kind of topic or project the guest has been working on. For now, they have finished three seasons, each one with a more or less distinct topic: Elixir in production, Elixir internals, and hiring/training.

#### Elixir Mix

Confusingly called the same as Elixir’s build tool, [Elixir Mix](https://devchat.tv/elixir-mix/) is quite similar to Elixir Wizards: every episode has a guest, you get to learn about the topic they are expert in. Have fun listening!

* * *

I admire your courage and wish you success. Learning a new language can be laborious, but I hope these resources will help you out. If you want to read more about Elixir, be sure to check out our posts with the [Elixir tag](https://serokell.io/blog/elixir).