disclaimer: eu uso JS desde 2013, que foi quando me apaixonei por NodeJS e web. Atualmente, meu time usa Typescript + NodeJS em produção para serviços críticos que servem milhões de clientes
meus dois centavos sobre js: uso bem pouco, não abro mão de Typescript nos projetos. Acho loucura desenvolver aplicações em JS puro com um time maior do que uma pessoa.
o motivo? a falta de tipagem abre margem pra muitos errinhos bestas. usamos e abusamos de testes, linter e formatters e usamos Typescript apenas no modo strict, com typechecking requerido para merges. opiniao forte, mas acho que essa é a base pra ter sucesso com JS (TS?) em produção.
eu tambem uso e abuso de TS pra ter type safety em tudo. os tipos que usamos na API sao os tipos que usamos nos nossos background workers, filas e afins. as aplicações sao monorepos com todos os serviços e codigos compartilhados. isso mantem o repo coeso e os tipos próximos. novamente, TS em modo strict e linters e testes automatizados pra todo o lado.
usamos de arquitetura de codigo e de design de sistemas pra ter aplicações robustas. acho que isso é a base do sucesso na real.
evitamos ter dependências desnecessárias, e se podemos copiar algo para o projeto ao inves de adicionar uma dependencia, é o que fazemos.
em resumo: js é uma boa linguagem se vc aplicar os fundamentos e usar ES6 ou mais. TS escala muito melhor em times grandes, JS escala melhor em projetos pequenos ou times pequenos.
eu tambem odeio js. o ecossistema anda fragmentado, com muitas runtimes, ESM vs CommonJS, e sinceramente irrita quem quer resolver problemas.
boas alternativas modernas são Rust e Go, embora eu particularmente goste mais de Go.