Is learning only Elixir enough as a backend developer to develop any project?

I love Elixir a lot besides of Python and Golang, and I just want to concentrate one language. I am planing to totally migrate to elixir. Will it be enough for me for any backend project?

Nobody except yourself can answer that question. Elixir is enough for some people, not enough for some other people. To get more meaningful answers, you can ask: “I plan to do A, will Elixir be a good fit?”

5 Likes

That really depends on whether you can make money with it. At least 95% of all working people only work because they have to and not because they love it.

If you have a nice Elixir lined up, go for it. Elixir is definitely enough for a big chunk of the backend projects.

2 Likes

I know, I want learn that answer, it will be enough for my projects? Like video streaming app?

Which kind of project for example, tnx for ur explanation:)

Elixir/BEAM is great for building software systems and can replace many other technologies.

There is a section about this topic in Sasa Jurics great talk “The Soul of Erlang and Elixir”

Watching the whole thing is mandatory if you want to get into Elixir.

5 Likes

I will check, tnx :slight_smile:

For any backend project? Definitely no.
For most of backend projects? Definitely yes.

4 Likes

Tnx so much:) can you give example, which kind of project u can?

I meant it more like a philosophical answer. Your question is too general. No language is enough for any web project. Elixir is no exception. Sometimes the constraints are mutually exclusive with the language you’re familiar with. But that’s a reality in every industry.
But if you’re asking if it’s OK to focus fully on Elixir in your backend web developer career, then in my opinion, the answer is yes.

1 Like

yes yes I anderstand ur answer clearly, but I mean which kinf of project u prefer to write in elixir, like e-commerce, video streaming , chat, …etc, I just want to learn answer of developer like u :slight_smile:

The BEAM is appropriate where You need concurrency, scalability and fiability. Think of it as designed for switching telecom, 30 years ago.

It is also valuable for the web, where each connection can be seen as an isolated light process.

It’s useful for soft realtime.

It’s not useful if You don’t intend to use those features.

1 Like

tnx so much

You won’t know “everything required for any project ever”, but you will be able to get a lot further with just knowing about Elixir and Phoenix, and possibly a little bit about using relational databases and HTTP/HTML than you probably will with many other common programming languages.

In other languages (as a non-exhaustive list of examples, for instance Ruby+Rails or Python+Django or PHP+Laravel), common tasks would require to also learn about separate tools for:

  • Periodic tasks (AKA cronjobs)
  • Background tasks (Things initiated by the current request that need to happen without blocking the response)
  • Some kind of memory store (e.g. Redis, Memcached) to coordinate between multiple instances of the app running (like between the ‘main’ instance and the instance(s) that runs background/periodic tasks, or multiple ‘main’ instances when you want to do horizontal scaling).
  • How to properly perform serialization/deserialization of your data structures when they are passed around between those various instances of your app.
  • Possibly a separate “application server” to allow your code to properly use all resources (CPU cores, RAM) of a webserver.
  • How to configure a reverse proxy (e.g. Nginx, Apache) to talk with your web-app and/or the “application server”, and how to set up SSL certificates for it.
  • How to deploy and maintain all these things together to/in a production environment.

So this is a list of things you do not need to learn when starting to write back-end applications in Elixir. Some of them might still be useful in certain situations, but generally speaking you’ll be able to perform these tasks already using just the functionality built-in to Elixir/Phoenix/the BEAM.

12 Likes

I’d add crash recovery to your list.

Also, one of the most obvious points was not mentioned yet.
Elixir is a functional language. There are good reasons to develop software in a functional language. Elixir is the most popular functional language for web development.

I would add that if you want to do any machine-learning stuff you will find the Nx ecosystem much less feature-rich than, say, Tensorflow. For example, neural style transfer - extremely simple with Tensorflow - extremely involved with Nx/Axon.

1 Like

@Skysoft13
Take a look at this list: GitHub - h4cc/awesome-elixir: A curated list of amazingly awesome Elixir and Erlang libraries, resources and shiny things. Updates:
If you want to know if you can do a project having particular features - skim through related categories to find out whether there are packages that you could use or if there are some that resemble the fuctionality of your planned project.

2 Likes

Elixir definitely is very well-suited for web developent.
However, I’m not sure whether this claim is correct (although I would like it to be :sweat_smile:). Do you have a source?

What else should it be?

  • Haskell, ML, Clojure, Scheme, OCaml, Erlang do all not have a big web framework
  • Scala has Play with 12k stars and some smaller ones, if you count Scala to functional languages it may be bigger than Elixir
  • F# … you can do ASP with F# but who does that?
2 Likes

I agree with you , elixir best for me