For quite some time now, Elixir has been getting more and more attention in the programming world. Due to its reliability, the most interest has been shown by the banking industry, where data is constantly verified, tracked, consolidated and monitored while ensuring maximum security, no data losses or mistakes. This article aims to introduce Elixir as a new alternative for well-known programming languages and why choose Elixir for your next project.
What is Elixir
According to the official Elixir website:
Elixir is a dynamic, functional language designed for building scalable and maintainable applications. Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.
The language was created in 2011 by José Valim, a former core member of the Ruby team and it is highly based on it. It has a similar looking expressive syntax and style. Apart from Ruby, Elixir is highly influenced and built upon Erlang. Thanks to its byte-code compatibility with the Erlang VM (BEAM) - used by companies like Netflix, Whatsapp and Pinterest - it is interoperable with it as well as its ecosystem and performances. Elixir is capable of handling big traffics while delivering high performance and amazing features. It was also based on the actor model - a concurrency model used to design scalable systems.
Phoenix and Ecto
Elixir is still quite new, which is what most developers are scared of when deciding to learn a new language. However, since Elixir is based on Erlang it is 100% interoperable with it and any tool written for Erlang will also be suitable for an Elixir codebase. Although the Elixir community is still rather young, the open-source libraries Phoenix and Ecto are quite amazing. Phoenix represents an intuitive approach to the development of web applications, which was highly inspired by no other than Ruby on Rails. Phoenix is what gives you an intuitive DSL and an amazing architecture ensuring maintainability and productivity. On the other hand, Ecto is a database wrapper taking full advantage of the expressiveness of Elixir. It fully benefits from the agent model performances providing language-integrated queries and gives us a nice set of abstractions and utilities for dealing with the databases like Postgres
Elixir vs Ruby
Every language has its pros and cons, loyal followers and opponents. Elixir does not aim to be a better version of Ruby nor its replacement. It has a different set of goals. However, it offers better performance, scalability and availability. Contrary to Rails it provides a development platform reducing external limitations, which allows focusing on the business logic instead of building a platform for it. Elixir is a compiled language and its code is super explicit. What is more, it makes use of all CPU cores, which means it out-of-the-box utilizes the entire machine, so we can focus on the business logic instead. Elixir makes it easy to write tests. You work with pure functions that receive and return data. The Elixir code quality is top notch thanks to its compiler.
Banking and Elixir
Banks use data to handle transactions almost in real time and perform daily tasks such as reporting, settlement and accountability. This data is stored in the Core Banking System where it is processed and used. CBS handles all the other running machinery and ensures everything is under control. This is why the data stored in CBS is massive and it has to be able to accept large volumes of it and make it available at all times.
Functional programming is what has proven to be the best approach when it comes to such complex data operations and since Elixir is a functional programming language it is a pretty obvious choice for software development for the banking industry. Apart from the functional programming Elixir comes with modern syntax, the actor model, polymorphism, metaprogramming etc. It is highly testable, ensuring reliable and robust systems where data is protected from alterations or losses. It is also worth mentioning that Elixir is one of the nine-nines languages, which makes the applications built in it highly available and responsive regardless of the number of clients currently using it. Elixir code is easier to maintain and grow. Its applications do not crash, even when the code is buggy.
Why and where to learn Elixir?
As mentioned above, the overall popularity of Elixir is rising. Although as of today, there may not be too many job offerings for Elixir, mastering this technology is a definite investment into the future. It is highly probable that most of the big companies will take an interest in this technology soon and this could be the opportunity to land a great job. Elixir makes you a better developer, especially if you are used to working only with object-oriented languages like Ruby, it gives you a new perspective on programming, forcing your brain to go into overdrive.
When it comes to learning Elixir there are plenty of resources to study. There is an official website dedicated solely to resources available for mastering the language. The best book to start with is Programming Elixir 1.6. When this is not enough, there is a complete Elixir and Phoenix bootcamp available on Udemy or a free Elixir: start programming on best concurrent language course. As of today Elixir has nearly 900 active contributors on Github and is present in searches on Stackoverflow. For even more resources check this article.
As you can see, Elixir brings a lot of advantages to the picture. It can positively influence you as a developer and open some amazing job opportunities. Functions like high reliability, scalability and ease of testing contained within this functional programming language are what makes it the top choice in the banking industry and for giants like Netflix, Pinterest and Whatsapp. Moreover, the open-source libraries Phoenix and Ecto created by the growing community around Elixir ensure 20 years of tooling experience performed by the Elang community.
Still wondering how and why use Elixir? Get in touch!