My Experience Learning Elixir
Tags: elixir, learning, beginners
Published: 2024-06-15 19:25:57

## Hello, my name is João Paulo Abreu

I'm from Ceará, Brazil. I have been working as an IT Technician at IFCE - Federal Institute of Education, Science, and Technology of Ceará since 2010. My job primarily involved providing technical support to the Canindé Campus, the city where I was born, live, and work. Around 2023, a teleworking program began, allowing employees to perform their tasks remotely. Among the possible tasks was web development. So, I started developing a simple blog for the IT Coordination of the campus, which can be found at the following address: [CTI Canindé](https://cti.caninde.ifce.edu.br). The technologies used were Bootstrap 5 and Ruby on Rails. Later, for study purposes, I rewrote the blog using Python and Django and also created a lost and found system for the campus with Ruby on Rails, which can be found at the following address: [Achei Canindé](https://achei.caninde.ifce.edu.br).

After some research on technologies I wanted to learn in 2024, I discovered Elixir, a programming language created by a Brazilian named José Valim. From that moment on, I decided to adopt this language and its ecosystem as the technologies to be used for the next web development projects at the institution where I work. I'm still at the beginning of my learning journey, but I would like to highlight the advantages I have noticed in Elixir.

## Advantages of Elixir

- **Concurrency**: Elixir is built on the Erlang virtual machine, known for its ability to handle thousands of simultaneous processes efficiently.
- **Scalability**: Large companies like WhatsApp and Discord use Elixir to build highly scalable systems.
- **Community**: The Elixir community is known for being welcoming and active, which is always a great point when learning a new technology. I highlight here the Ceará Elixir community, Elug-CE, which has a group on Telegram: [Elug-CE](https://t.me/elug_ce).

## Language Features in Elixir That Caught My Attention

- **Immutability**: Immutability is one of Elixir's pillars and initially seemed like a big change from what I was used to in Ruby. However, I quickly realized how this contributes to the robustness and security of programs.
- **Pattern Matching**: Pattern matching was one of the features that most delighted me in Elixir. The ability to match patterns concisely and powerfully is extremely useful and makes the code more readable and expressive.
- **Pipe Operator**: The pipe operator (|>) is another amazing feature of Elixir. It allows chaining functions in a clean and intuitive way, improving code readability.

## Tools and Libraries

- **Phoenix Framework**: For web development, I used the Phoenix Framework, which is to Elixir what Rails is to Ruby. I was impressed with the performance and ease of use of Phoenix.
- **Other Tools**: Besides Phoenix, I explored various libraries and tools in the Elixir ecosystem, such as Ecto for ORM and ExUnit for testing. The Elixir community has a robust set of tools that facilitate the development of complex applications.

## Challenges Faced

Of course, the journey was not without challenges. Some of the obstacles I encountered include:

- **Paradigm Shift**: Transitioning from an object-oriented programming mindset to a functional one was an initial challenge.
- **Tools and Ecosystem**: Although the Elixir community is great, the ecosystem is still smaller compared to more established languages like Ruby.

## Conclusion

Learning Elixir has been an enriching experience. The language is powerful, expressive, and well-designed. The community is welcoming, and the available resources are more than sufficient to get started. If you are looking for a modern, efficient, and fun language to learn, I highly recommend Elixir.

I hope my experience can inspire others to explore Elixir. The learning journey continues, and I am excited to see where Elixir will take me.

I also created a GitHub repository with learning resources for those who are starting to learn Elixir: [masters-of-elixir](https://github.com/abreujp/masters-of-elixir).

## Follow My Journey

If you want to follow this journey with me, you can follow me at the following places:

- GitHub: [abreujp](https://github.com/abreujp)
- X (formerly Twitter): [abreujp9](https://x.com/abreujp9)
- Dev.to (articles): [abreujp](https://dev.to/abreujp)

This first article was just to introduce myself and share my experience learning Elixir. Please stay tuned for new articles with technical content about the technologies I am learning.