loading...

Picking a programming language (for 2020)

joseph_lozano profile image Joseph Lozano ・2 min read

spoiler alert: It's Elixir

Why I choose to program in Elixir

First, the negatives

Drawbacks

Elixir isn't a perfect language by any means. Here are some drawbacks of the language:

  • The static type checker (aka dialyzer) error messages are difficult to understand
  • The actor model and OTP don't have the best APIs, and they can be difficult to grasp at first
  • The tooling around the language (such as third-party libraries) is not as complete as say, Ruby, Python, or Java. (This is improving, however)

Positives

It's familiar

I have been programming in Elixir as a hobbyist since 2016, and professionally for a year and a half.
I know it better than I know any other language.
This means that I will more likely be most productive with Elixir compared to other languages.

It's simple

The Elixir language is simple and straight-forward. The build tools just work (I have spent entirely too much time trying to get IntelliJ to use the right JVM for Java projects)
Mix is really cool, testing (including DocTests) are built-in as a language feature.
Phoenix itself is readily familiar to anyone who has built MVC applications.

It's feature rich

Phoenix LiveView is a serious game changer for writing real-time apps with minimal JavaScript.
Seriously, if you haven't check out the 15 minute Twitter clone demo that Chris McCord does.
Phoenix gives you a lot of features out of the box.

It's powerful

Elixir has been used by several organizations to increase traffic. (See Discord, BleacherReport, and others)
Are my app going to have that much traffic? Well, not yet (and probably never), but a lot of this you get for free with the way Elixir concurrency and the Phoenix Framework work.

For all these reasons, Elixir is my language of choice for side projects and random hacking.

Posted on by:

joseph_lozano profile

Joseph Lozano

@joseph_lozano

Currently looking for new opportunities.

Discussion

pic
Editor guide