Learning two different programming languages same time?

Howdy, folks i have this question about it is ok to learn two different programming languages same time, well my story is i joined a company that they work with ruby last year just started learning and working with it same time and really like it after been working with php for a really long time, and now while am still learning new stuff about ruby the company asked me to learn elixir and i feel like i don’t really know much about ruby to switch to a completely to Functional language that i had no idea about this paradigm FP.
any idea what should i do ?

2 Likes

Corresponding tweet for this thread:

Share link for this tweet.

2 Likes

If you already know PHP then it will be easier to pick up Ruby first, and when you know Ruby it may be easier to get into Elixir as Elixir’s syntax was in part inspired by Ruby :003:

For FP, reading some of the Elixir books will help, like @ulissesalmeida’s Learn Functional Programming with Elixir Book Portal | Devtalk :023:

Here’s my review of it on EF:

5 Likes

Working with different applications (fixing bugs and adding features), I have no choice but to learn different things at the same time :frowning:

3 Likes

I want to acknowledge your discomfort and hope that they are being sensitive to how much time this is going to take you, while also pointing out that this is a good problem to have. You are being paid to learn things while most people have to pay to learn things.

Here is what I think you can ignore in the beginning:

  • Genservers
  • Concurrency
  • ETS
  • OTP
  • Recursive Functions

These things are all super powerful and you will be very well served by learning them eventually, but you can get away with making your initial progress without them.

Here are some of the initial concepts that you will need to learn right away, I am assuming you are doing web development with Phoenix:

  • Read all the errors carefully, with the attitude that (I am going to be great at understanding these) understanding those in any language is a huge help.
  • How to create a Module
  • How to create named functions
  • How to create anonymous functions
  • How you call named functions, always on the module, you don’t do "almokhtar".upcase but instead String.upcase("almokhtar"). It is as if everything is a class method.
  • How to use the List, Map, String and Enum modules.
  • Pattern match on function heads instead of using if statements (just go with me on this, if you ignore this and write your code with if statements you will be confused the moment you try to read someone else’s code).
  • Phoenix, if this is what they are wanting you to actually get done.
6 Likes

Thank you so much @dewetblomerus really appreciate it such great Summary !!!

3 Likes

Agreed!^^

You should do an ‘intro to Elixir’ blog post, screencast or booklet @dewetblomerus :023:

3 Likes

Thank you @AstonJ

2 Likes

Learning FP has deeply changed my way of programming.

Ruby and Elixir have a similar syntax, but they are quite different in the way You solve problems.

Try not to mix them on your learning path :slight_smile:

3 Likes

In what kind of ways Koko? Sounds like a good topic for a blog post :003:

1 Like

I had just finished the book POODR by Sandi Metz when I discovered FP.

I liked the book very much, but FP has been a real game changer and forced me to think differently.

Like separate data from code, function as first class citizen, immutability etc.

It has been like starting again from zero. I had to unlearn a lot of my previous belief.

And with Elixir, I learned the actor model, processes programming.

3 Likes

thank you @kokolegorille

2 Likes

Thanks so much for your encouragement. You prompted me to create a blog post Onboarding new Elixir Members which I will continue updating while I prepare for the conference talk ElixirConf · 2022

2 Likes

That’s awesome @dewetblomerus!

Don’t forget to post it in a new thread and include the elixir and blog-post tags and it will get posted to the Elixir Forum as well (so long as you have the same username and email there) :003:

See the full instruction here:

:023: