|
Elixir, Haskell et al. require concepts that are not required at all in e.g. Java. The functional programming module at my university had the highest failure rate after the math and statistics classes. Even something like C can require new concepts. I was a tutor for a university C programming course and students that had no problems with Java struggled hard with direct memory manipulation, pointer arithmetic etc., because those were foreign concepts at that point. You can't expect Devs to self-teach each other those concepts on the side, that (advanced into their studies, third-year) CS students struggle with hard. If you want your OOP Devs to learn e.g. functional programing, you have to give them dedicated (paid) time for this, IMO. |
I'm currently in the process of interviewing and hiring for a dev to work on an Elixir code base and I barely care at all whether or not a candidate has ever used it before.
Last year I worked with an (excellent) ex-Bridgewater dev whose experience was mostly JVM and JS and he ramped up on Elixir and Phoenix very quickly. We pair programmed a couple of hours a day and he was productive in a few days and over 90% of the way there in terms of picking up needed frameworks, libraries, etc in a month. Learning lower-level concepts with C/C++/Rust is a bigger challenge, but still not that big if someone is using it all day at work.
I'd be very concerned about devs who can't self-teach, regardless of whether or not they have a CS credential. That said, I do believe in mentorship on the job and some slack during paid hours for people to learn and improve.
In many ways, learning is the job of a software engineer.