That's one of the thing I love about JS. Sure, you don't have all the good static typing that comes with Scala or OCaml, however map, filter, reduce and lambdas are easily accessible. We may get record, tuples, pattern matching and a pipeline operator at some point!
Completely agree. It's like engineers consistently fail to recognize that users generally don't care about the internals. If it doesn't LOOK like FB why use it?
The most important "programming" skill for non-programmers is simply knowing when a programmer could automate some tedious, error-prone task that the non-programmer spends a lot of time doing.
I remember when I worked second-level support. Most of us had no programming ability. I did. A coworker used to spend hours—when he had many other things he should have been doing—on some ridiculous task that a bit of text processing could have automated. When I found that out, I wrote him a script and told him, "Be on the lookout for things like this. Don't ever waste your time with something like this again. Ask someone who knows how to program if there is something that could be done."
Perl has its share of problems, but it is still a very useful language, and it is still used far more extensively than a lot of people think.
And yes, it is still used for new projects, and no it is not necessary to sacrifice your mental health nor your earning potential to use it.
It is not, nor will it ever be the darling of the startup world. But most of the software development in the world is not done at startups.
I'm not saying you'll get rich writing Perl, nor am I saying that it is growing in "market share" if you want to call it that. In fact, considerably less people use it now than did in the past.
However, you can still make a decent living writing Perl in 2020.
Of course, my advice would be to learn multiple languages, and most importantly, never stop being willing to learn new things, if you want to be a developer your entire career.
I also think it's important to be willing to occasionally learn old things. You never know when you might be called on to make changes (sometimes extensive ones) to a legacy system, and "rewriting it in language 'X'" is often not an option.
I can't say I agree with the mental model critique for the most part. I think some languages do make it easy to write convoluted code, but through judicious use of coding standards (including a helping of common sense [don't be clever where you can at all avoid it, which IME is ~~almost~~ all the time], code linters, and so on) I think how you use a language plays a huge part in code maintainability.
For instance, I've heard PHP get shit on pretty badly all around the web, but I've worked at PHP shops that had nice, clean codebases, and my current Perl codebase is, in many ways, nicely structured. That's not to say there aren't some hairy codepaths that could use refactoring, but I really think that kind of thing, again, can happen in almost any language.
I used to code in Perl when managing systems. I liked it a lot (after having coded in C it felt really modern) ad like many others, the understanding of my own code declined exponentially with time.
I am not a pro developer, just an amateur one who was surprised to see a mention of an old love.