5 Questions to 9 Elixir Developers for the 10th Anniversary of Elixir Language
After 10 years, we can confidently say that it is completely different - the language is gaining popularity, becoming one of the 3 highest paying programming languages and one of the most user-friendly.
It is often not the first language of choice, but thanks to its clean structure and brilliant mechanisms (pattern matching, pipe operator), you can learn Elixir on a decent level within a week. So... why not give it a try?
Celebrating the 10th anniversary of Elixir, we asked our Elixir Developers how their interest in Elixir began, how long it took them to learn this language and what sources it is worth using when you would like to learn it yourself.
We hope this article will encourage you to join the Alchemists team!
How did you start programming in Elixir?
Jakub Melkowski, Elixir Developer: Elixir is my other language. I started to learn Elixir because of the job offer, and I don't regret it - it's a really enjoyable language. :)
Oskar Legner, Elixir Developer: My adventure with Elixir began literally when I took part in the recruitment process for Curiosum - in line with the Just In Time Learning philosophy. I had not heard about Elixir before and started learning as a self-challenge. I quickly fell in love with the functional programming paradigm - it was the moment when I realized that OOP didn't turn me on.
Mateusz Tatarski, Elixir Developer: I learned other languages during my studies and on my own, but the level of knowledge of these programming languages was relatively low (certainly not as high as Elixir now). I knew the basics of programming, and with the right amount of time, I could do what I needed in these languages. To be honest, I wasn't interested in Elixir before. I did not even know that such a programming language existed. Still, Michał and Szymon from Curiosum got to know my possibilities, invested in my time in learning Elixir and today; we have been working together for almost 2 years.
Mateusz Osiński, Elixir Developer: Elixir is not the first programming language I have tried, but it is my first functional language. My adventure started while creating a project for the recruitment process.
Kamila Graf, Elixir Developer: So far, I’ve dealt mainly with the front end, and I wanted to try something new. And I found a job offer for Elixir & React developer. I didn't know a thing about the Elixir language, but I like challenges, so I thought, why not try? The harder the path is, the more you learn.
Krzysztof Janiec, Elixir Developer: I found Elixir during my studies, looking for inspiration in what language to write a project for some subject. Then I found a course on Elixir and Phoenix on Udemy and that's how it started. I got 5 from the course (although it was written very badly) and the interest in functional programming remained.
Szymon Soppa, CEO at Curiosum: It was around 2016, when I was already a Ruby & Ruby on Rails developer, I learned that there is this interesting functional language called Elixir. My friend recommended this to me and made me realize that it's a bit similar to Ruby in some ways, and at the same time, it's pretty easy to learn. A month later, I already had the first MVP of an app built in Elixir, and I got hooked. It's a pretty common story amongst Elixir programmers. :)
Michał Buszkiewicz, CTO at Curiosum: My Elixir journey was originally the typical cliche of being a Ruby developer who learns about Elixir from some geeks inside the community and gets gradually more and more interested in what makes it so hyped within the Ruby community.
How long did it pass from learning Elixir programming language to using it in practice in a project?
JM: Before I started learning Elixir, I already had programming experience, although it was primarily related to OOP. I started using Elixir after learning its syntax and functions and the basics of functional languages. How long did it take? I don't know exactly, but briefly.
OL: It took me literally a weekend to get the hang of the basics. I spent the next two weeks getting to know the language deeper - writing a project for a recruitment task. Then I found myself in the internal (transitional) Curiosum business project, and after another 2 or 3 months, I started working with the client.
MT: At the beginning of my cooperation with Curiosum, I started working in our internal panel - this is a standard for us in the Just In Time Learning philosophy. After 4 months, I started working on one of our clients' projects. It developed my skills a lot. To sum up - it took me about half a year to know Elixir to the point where I started to solve problems and problems at a satisfactory level for me.
MO: Well, not that long. Elixir is a high-level language, so in other words, it is user-friendly. So it takes me about 2-3 free weeks to start feeling comfortable with it.
AZ: About two weeks. Elixir is a very simple language. What may be a little trickier for a newbie is its ecosystem - in most cases, Phoenix & Ecto. Still, once you get used to the functional approach that is not common in other languages’ frameworks, you start to feel very productive building web apps in no time.
KG: I was learning Elixir basics for 2 weeks before starting the job. After that time, I immediately went to the part with getting acquainted with the project and started doing simple tasks.
KJ: My adventure with Elixir was interrupted by the adventure with Ruby, so only some of the projects that I wrote as a hobby were written in it, but due to the similar syntax, there were no big problems with writing something simple. By learning both of them after a few weeks, it was possible to have a (relatively simple) application written quite well.
SS: Around a month to the first MVP. At Curiosum, we got through many Junior Developer candidates, and the second step of this recruitment process is building a small app. It's a 3 weeks process, and most of the candidates are new to Elixir on day 1. However, most of them complete the app in this 3 weeks period, which gives me confidence that it's a concise process to start building exciting things in Elixir & Phoenix.
MB: In my previous workplaces, as soon as I managed to develop my first Elixir apps internally, which took a few weeks to get right, I started to promote the idea of using Elixir for specific purposes within existing products, but more often than not it was not easy to convince get this out of the R&D phases. So actually, my first pure-Elixir projects were the ones we did at Curiosum, which were fascinating to accomplish!
Where are you looking for sources that you use when programming in Elixir?
JM: The most common sources I use to learn Elixir are ElixirLang/learning and Exercism/elixir. I browse news, articles and discussions on ElixirLang/blog, Reddit/Elixir, ElixirSchool, and I am looking for solutions to problems in documentation and Google.
MT: I use Elixir Forum, Stack Overflow, official Elixir documentation or Elixir libraries. I use Google for the blog posts at the top of the search engine. If I want to learn something new in Elixir, I read books that we recommend to each other within the organization.
MO: Mainly documentation, some tutorials, own experience, or from co-workers. :)
AZ: Daily, I try to find the information directly by Googling it. Elixir and most packages have extensive docs, so it’s easy to find the answer this way. If you don’t have any experience with Elixir, I recommend checking out Elixir School. They have tons of materials that help grasp essential topics and some of the more advanced stuff and examples and use cases. And if you are curious about more advanced topics, I suggest you check out our blog.
KG: Elixir documentation is a powerful tool; it’s seriously well documented.
KJ: I won't be creative: Stack Overflow, Github, YouTube, Pragmatic Bookshelf and Curiosum Blog of course.
SS: Most of the time books, which usually cover a specific topic (like Absinthe, testing, OTP in Elixir) in detail. I also enjoy Youtube talks, as these often give you an excellent context of the described topic.
Other than that:
- Elixir Forum
- Newsletters & blog posts (sign up for ours!)
- Meetups (we have it covered too)
- Github - is rarely listed in these types of topics, but if you dig into the source code of a library, it's sometimes a great learning adventure
There is also a cool list on this topic written by Michał - Top Elixir Resources.
MB: I use the GitHub search engine a lot to figure stuff out.
Why do you think developers should learn the Elixir language?
JM: I think Elixir is one of the most forward-looking programming languages. Elixir is in the phase of gaining popularity, but thanks to its features, including error tolerance, it will quickly enter the top of languages. At this point, Elixir is used by Discord, Pinterest, and PepsiCo.
OL: Elixir & Phoenix is an open and helpful community. The language enables ease of testing, platform openness to metaprogramming, and pattern-matching and pipe operator power.
MT: In addition to the general advantages of Elixir, which you can google "pros of elixir", I would add that it is a language that is quite easy to learn or at least the basics that will allow you to start producing code quickly. Someone who knows only the basics of programming can set up a simple website with simple database operations like logging in and registering in a week or so without knowing Elixir at all (this is how it looked in my case when I was doing the recruitment task).
Although it is easy to learn the basics, more advanced things do not come so quickly and working in Elixir is a continuous learning process. The great advantage is that Elixir forgives many mistakes; even if we make a mistake and some part of the app won't work at all, the rest of the app can still work flawlessly, which is good, in my opinion. In addition, Elixir is at the Top3 of the highest paying programming languages - so it is an additional incentive to learn this language.
MO: High-level language, fast, clean syntax (especially with pipelines).
AZ: Because it helps you become a better software engineer, even if you come from an object-oriented world. By learning functional programming, you can think about problems more atomically and decompose them into prime factors, which helps write simplified and cleaner software.
KG: Elixir allows you to write short and readable code. Writing small functions that perform simple operations makes large programs easier to read and understand.
KJ: Elixir has a very friendly syntax compared to Erlang from which draws it derives a lot of functionalities. The low entry threshold allows you to write fault-tolerant systems in a short time and easily scale them later. Also, I don't know a better websockets application development tool than Phoenix, and who doesn't like real-time data transfer?!
SS: I tend to think that the popularity of the functional paradigm is yet to come (the world is still dominated by OO programming). Elixir allows you to dive into this functional world with ease.
From my experience, you can learn Elixir in a relatively short period. It applies as well to building the first product.
You can also touch on different domains here - scalability, maintainability and reliability are often listed as the characteristic of Elixir. Isn't it something that a modern developer would look for when building the following product (regardless of the domain)? Apart from that, you'll find that there is support for web (Phoenix), IoT (Nerves) and even AI & Machine Learning (Nx).
Elixir is also considered one of the most satisfying languages globally, ranking very high every year in StackOverflow surveys. It's not a coincidence.
MB: Just because it's a functional language! It feels refreshing to free yourself from the object-oriented cruft in all the most popular languages. It is also probably the least scary language for newcomers to the functional paradigm.
Do you have any advice you would give to someone who is just considering learning the Elixir language?
JM: Don't be put off because it's not OOP. Just do it.
OL: Explore! Elixir is full of little surprises that will help you build your flow of action. One of my favourites is the break!/2 function available in the IEx shell, making the debugging process drastically more pleasant.
MT: I don't have any insightful advice - if you want to learn how to write Elixir code well, read Elixir books and check very well written documentation. Learn, write and test.
MO: To try something new, especially if someone uses only programming languages. Elixir gives us a lot of possibilities. :)
AZ: Don’t give up because learning Elixir is worth it. No matter if you want to build a quick yet rich prototype with no front-end framework, thanks to the LiveView or a scalable full-blown web app. Elixir got you covered!
KG: The functional programming approach is worth checking. Even if it’s not for you, learning it will make you think differently and improve your skills.
KJ: If Elixir is your first language, start with the general rules such as clean code, architecture, tests, docs. Seriously, you can write code without it, it might even work, but you probably won't want anyone to see it in the future. That's why learn the general rules and then... learn Elixir syntax, that's all... almost. Then you will have the rest of your life to learn new things more or less directly related to Elixir, such as OTP and actor concurrency model, functional design patterns etc.
SS: Try it out for a month. You won't regret it. :)
MB: Do it for your happiness. You won't be disappointed :)
"Even though Elixir is rarely considered a first language of choice, it doesn't mean it can't be! As you can see, it's often a matter of a weekend or a week to grasp its basics and another couple of months to master it. However, thanks to the above mentioned clean & clear syntax of this language, any developer should be able to try it out on a small project - so why not give it a try?
Elixir is used by well-known brands and beginner startups who want to become a unicorn in the industry.