Don't feel confident with Elixir

I recommend using Plug at the beginning. It is powerful but much much simpler and you’ll understand Phoenix better when you switch to Phoenix later.

Plug is so simple that using it allows you to focus on the first part of learning Elixir: functional programming.

OTP and processes are at a deeper level, which is harder but the soul of Erlang/Elixir. Finally, Phoenix takes advantage of both of them. So I would suggest you learning Phoenix at least after having some basic sense of OTP.

I remember when I first learned Ruby and Rails, I started with Rails because it made more sense to make things. But I was very confused by the magic so I paused and learn Ruby systematically first. When I went back to Rails again, It turned way faster.

2 Likes

Alright then, I’m going to do some Plug stuff while learning OTP. Thanks for the advice!

One thing I would add to the above:

Elixir/BEAM are extraordinarily powerful tools, and it’s easy to feel imposter syndrome or a lack of confidence simply because you think you’re not using it to its full potential and utilizing all it can do. Ultimately, that doesn’t matter. It’s “tip of the iceberg” syndrome.

What matters, as mentioned above, is that the tools do what you need them to do…and that you understand why & how it does those things. Keep at it! It’s worth it. Plus learning is fun.

3 Likes

Wow, you explained my problem better than me. :slightly_smiling_face:

Yeah, I’m still learning and enjoying Elixir. It’s more fun than any other language I’ve ever tried.

I’m currently trying to learn OTP right now, and I really think I get why it exists.

Thank you for answering!

Perhaps, but I think advice of this type needs to be tailored per an individual’s situation and preferences. When I think of the perfect situation in which to go about the huge task of learning a new language & (just as important) its ecosystem, I imagine being in a team with expert (& amenable!) co-workers. You start with everything in place, not having to assemble tooling and test suites. Then you can jump into real work by fixing small bugs, and soon doing tiny enhancements, without having to concern yourself with architecture and integration. You are scaffolded by the team.

Starting off with Phoenix is a bit like being a junior member of the team, with everything laid out for you so you can do something interesting or useful quickly (and you have Chris McCord as your team lead!). It’s true you won’t understand everything that’s happening around you, but that’s usually true on the job also. You can learn in layers over time.

I usually learn a new language every year or so, mainly for interest’s sake (well, exclusively so really since leaving the tech industry). Last year it was Clojure, this year Elixir. I have got much further in practical terms with the latter, despite (tbh) slightly preferring Clojure as a language. Much of this is to do with the scaffolding provided by the tooling in general, and Phoenix in particular. Clojure’s much more DIY.

Of course this depends on an individual’s existing knowledge and preferences, but this is just to say there can be, for some, advantages to starting higher up the stack, and building knowledge down.

I enjoyed Saša Jurić’s reflections on this topic in his blog post The Erlangelist - Phoenix is modular

5 Likes

Thanks for pointing that out and sharing Saša Jurić’s excellent post especially the “Learning Tips” section.

3 Likes

Second this! If you search “github awesome datasets” you’ll find tons of aggregated sources to play around with for learning projects. Same with APIs (the pokemon api is my personal favorite, well-documented and with many interesting relations to traverse).

3 Likes

btw I completely forgot to make a very important shout-out:

Check this out and see if you can make an Elixir – or any other – implementation. It gives you a good scaffold with which to validate if you are doing what you should.

3 Likes

Oh, thanks! Will check it out.

Thanks again! Will check it out.

I thought the mother of all demos was this one…

BTW Somebody already did the Phoenix version, backend side…

2 Likes

You should use OTP right now I guess. OTP is well designed, and although it has some advanced parts, building a simple application (and release) with a couple supervisors and workers is easy and will teach you a lot.

Phoenix gives you the base structure but in the end it will be your code to maintain, don’t hesitate to read all the generated code to make sure you know, for instance, what the supervisor in application.ex does.

2 Likes

:+1:Learning OTP right now.

1 Like