Elixir Roadmap
Tags: elixir
Published: 2022-04-22 17:20:52

## Introdução

Muitas pessoas da rede social do passarinho azul (essa mesma que você imaginou) me procuraram para saber um bom roadmap de estudos em Elixir, e bem, eu não sou a maior referência da área, mas creio que posso guiar com clareza qualquer um que queira aprender sobre essa linguagem maravilhosa. Dito isso, resolvi juntar todo o conteúdo que mapeei e filtrei para o melhor aprendizado em Elixir dada a minha experiência estudando-os. Dessa forma, só apresentarei conteúdos que ***ESTUDEI*** e que me ajudaram a entender melhor a linguagem.

### Parte 1 - Entendendo o básico

A primeira parte para um bom estudo, independentemente da linguagem, são as bases, entender concisamente os tipos básicos, operadores, funções, sintaxe e afins é de suma importância. Dessa forma, nada melhor do que aprender isso logo de cara pela [documentação da linguagem](https://elixir-lang.org/getting-started/introduction.html). Nela você já terá acesso à aba `GUIDES`, com um guia bem entendível dos principais elementos que formam a linguagem Elixir. No entanto, caso queira algo mais tátil, visual e direto ao ponto, é possível estudar todos esses conteúdos por meio do [ElixirSchool](https://elixirschool.com/en). Assim, se estudadas a sério, suas bases teóricas serão excelentes para um bom entendimento da linguagem.

E caso você goste de cursos em vídeo, é possível complementar os estudos por eles, no YouTube e na Udemy você encontra alguns canais ensinando Elixir com uma didática excelente, sendo eles:

  1. [Rafael Camarda - Udemy](https://www.udemy.com/course/elixir-e-phoenix-do-zero/)
  2. [Elly Academy](https://www.youtube.com/c/ELLYACADEMY/videos)
  3. [Canal do Professor Adolfo Neto](https://www.youtube.com/c/AdolfoNeto)
  4. [Alquimia Stone](https://www.youtube.com/watch?v=WRGvPgCHMfI&list=PLv3nyCBtlWP8I9rknIrfcJWrO05yEzknD)
  5. [ElxPro](https://www.youtube.com/c/elxproBR)

#### E Sobre a prática?

  * Para praticar os tipos básicos e operações, aí vai uma opinião ***MINHA***:

    * Utilizar o **iex:** Eu sempre apoiei o começo dos estudos sobre a linguagem por meio da ferramenta iex, que já vem instalada com o Elixir, a mesma possibilita ao desenvolvedor criar funções, operações e manipular diversos elementos da linguagem sem ter que abrir uma IDE, fazendo tudo pelo terminal. Desse modo, eu incentivo imensamente o uso dela para o maior costume de testar as coisas em um ambiente seguro e prático.

    * ***MUITOS EXERCÍCIOS:*** Hoje, não vejo um site mais completo para praticar Elixir que não o [Exercism](https://exercism.org/dashboard). Os desafios nele contidos te permitem explorar as mais diversas formas de resolução e manipulação de dados, e em contextos divertidos, sem contar a ferramenta incrível de mentoria em que o estudante pode solicitar de forma ***GRATUITA*** na plataforma, onde alguém mais experiente pode ajudar.

    * Projetos simples: começar com projetos simples sempre é uma boa escolha, criar um módulo com funções que manipulam as estruturas de dados do Elixir, interagem com a criação e manipulação de arquivos, etc.

### Parte 2 - Conhecendo ferramentas e libs

  Após um bom estudo do básico da linguagem, creio que o próximo passo seria entender o [mix](https://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html), uma das principais ferramentas do Elixir, a partir dela é possível criar um conjunto de diretórios que permitem uma excelente estruturação do código, juntamente com exemplos de testes, libs e etc...

  Você também pode acessar um conteúdo de ótima qualidade no [ElixirSchool](https://elixirschool.com/en/lessons/basics/mix)

#### Praticas com o Mix:

  * Aqui vão algumas sugestões para se praticar no mix:

    * Aplicação de libs (credo, oban, plugcowboy, money, etc.).

    * Criação de Plugs (Caso não saiba o que raios são Plugs em Elixir, recomendo o meu [Post](https://dev.to/cyytrus/entendendo-plugs-em-elixir-469c) sobre).

    * Testes unitários com ExUnit e uma introdução ao TDD utilizando a lib mix-testwatch.

    * Primeiro CRUD com Ecto.

    * Criação de um projeto de gastos financeiros (CLI ou utilizando alguma lib para ter componentes visuais)

    * Criação de um projeto simulando um banco (Contas, transferencias, saques, depósitos)

    * Criar um mini RPG com personagens, habilidades, etc...

### Parte 3 - Conhecendo o Framework Web Phoenix

  Com uma boa base das partes 1 e 2, já é possível introduzir o framework [Phoenix](https://phoenixframework.org/), e você pode aprender a base diretamente na [documentação](https://hexdocs.pm/phoenix/up_and_running.html) do mesmo. Em contraposição à parte básica do Elixir, não se acha um bom conteúdo gratuito sobre phoenix (pelo menos eu não achei, então sinta-se à vontade para deixar nos comentátios sugesões de conteúdo para eu colocar aqui), somente alguns tutoriais no youtube. Dessa forma, fica a indicação do Elxpro acima citado como um conteúdo introdutório do phoenix, juntamente com o estudo da sua documentação.

#### Colocando em prática / ideias de projetos

  * A minha principal dica para se estudar o framework é fazendo projetos reais, tais como:

    * Consumo de API's de terceiros (ViaCep, Riotgames, Github)

    * Criação de usuários

    * Criação e autenticação de tokens com a lib Guardian

    * Desenvolvimento de alguma API que interage com algum valor monetário (Controle de gastos, Simulação de banco, etc...)

### Parte extra - Mapa visual e conclusão


Abaixo temos um bom resumão do que é MUITO interessante estudar caso queira conhecer e utilizar Elixir no dia-a-dia, e lembrando, esse artigo foi escrito com base nas minhas experiências e conteúdos gratuitos de ensino que encontrei na internet, mas para o meu estudo, também utilizei livros e alguns cursos da udemy (todos pagos).


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yx08mqoc7oojuvwp12ng.png)