{"id":7912,"date":"2018-11-06T10:25:50","date_gmt":"2018-11-06T12:25:50","guid":{"rendered":"http:\/\/blog.plataformatec.com.br\/?p=7912"},"modified":"2018-12-12T13:57:33","modified_gmt":"2018-12-12T15:57:33","slug":"starting-with-elixir-the-study-guide","status":"publish","type":"post","link":"http:\/\/blog.plataformatec.com.br\/2018\/11\/starting-with-elixir-the-study-guide\/","title":{"rendered":"Starting with Elixir, the Study Guide"},"content":{"rendered":"
While I was studying Elixir, I had the opportunity to read many books and watch many talks, but I felt very lost because I didn’t know what I had to read or which exercises to do, in order to become a better functional Elixir developer.<\/p>\n
The main objective of this material is to show what I’ve been through so you can boost your learning in functional programming with Elixir and be able to start working as a full-time Elixir developer.<\/p>\n
Note: Keep in mind that this material is recommended for developers who already know how to code and want to boost their learning with Elixir.<\/p>\n
The first part of this content is focused on learning syntax and most important, functional programming. In my opinion, you should go for a functional approach and declarative programming before trying Elixir. That way you can avoid thinking in an imperative form while coding Elixir.<\/p>\n
The first step: I strongly recommend starting learning functional paradigm with Elixir by reading Ulisses Almeida’s book Learn Functional Programming with Elixir<\/a>. It talks about the most important functional programming aspects and will teach you the basics of Elixir meanwhile.<\/p>\n Try to read the book in a group with your friends. People learn faster together and you can talk to each other about your questions. You will also find more energy to move forward and share the experience, like checking the exercises answers and finding out what you did wrong. Try to create pull requests and ask your friends to review your code. Don’t forget to write tests for all exercises.<\/p>\n So, take an hour to talk to your friends and discuss what you read. Try to explain the most important points, and ask questions.<\/p>\n Here is an example of an agenda, demonstrating how you can divide the book and start learning Elixir.<\/p>\n Week 1 (pages 1 to 30)<\/strong><\/p>\n Week 2 (pages 33 to 56)<\/strong><\/p>\n Week 3 (pages 59 to 79)<\/strong><\/p>\n Week 4 (pages 81 to 102)<\/strong><\/p>\n Week 5 (pages 105 to 136)<\/strong><\/p>\n Week 6 (pages 139 to 158)<\/strong><\/p>\n After you finish reading Ulisses’ book I also recommend doing some exercises in Exercism<\/a>. Don’t get too worked up about the algorithms at this point. Just try to practice a little bit to acquire more fluency in the language syntax before moving on.<\/p>\n In the second part, we are going to learn more about how to solve problems in parallel, exploring one of the greatest features of the Erlang Virtual Machine: Processes!<\/p>\n Nowadays when we solve a problem, we tend to think in a sequential way: First, we get the data, then we send the email, etc… With Elixir\/Erlang, we can create a process for all of those small tasks and improve our delivery.<\/p>\n For this part, we are going to follow the Elixir in Action book<\/a>. In this book, we will read only the part 2. Tip: I strongly recommend you to read the first part, so you will reinforce the things we learned from the previous book.<\/p>\n I suggest reading the following chapters:<\/p>\n In the third part, we will be training and putting everything we learned into practice by doing the course: Developing With Elixir\/OTP<\/a>. It’s a great video class to consolidate what we learned in the Sasa’s book. With this, you will have the opportunity to build processes on your own, play with supervisors and build your own HTTP web server.<\/p>\n My recommendation is to do everything from scratch. Write tests for all of your functions and practice as much as you can, by this, you will be ready to start into an Elixir project.<\/p>\n At Plataformatec, we have study trails for different contents. We created an Elixir trail (this blog post was based on our Elixir trail) to accelerate the learning of our Ruby developers, to be ready to start on an Elixir project.<\/p>\n Do you want to do this trail with the Plataformatec Team? Just come and start working with us<\/a>\u00a0in our offices in S\u00e3o Paulo \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":" While I was studying Elixir, I had the opportunity to read many books and watch many talks, but I felt very lost because I didn’t know what I had to read or which exercises to do, in order to become a better functional Elixir developer. The main objective of this material is to show what … \u00bb<\/a><\/p>\n","protected":false},"author":74,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[1],"tags":[143],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/7912"}],"collection":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/users\/74"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/comments?post=7912"}],"version-history":[{"count":13,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/7912\/revisions"}],"predecessor-version":[{"id":8118,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/posts\/7912\/revisions\/8118"}],"wp:attachment":[{"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/media?parent=7912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/categories?post=7912"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.plataformatec.com.br\/wp-json\/wp\/v2\/tags?post=7912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}\n
\n
\n
\n
\n
\n
\n