Eu sou completamente a favor da briga entre linguagens, runtimes, compiladores, frameworks e qualquer tipo de ferramentas. Discussões entre tecnologias não são um problema, elas são um dos motores da evolução da indústria de software.
Por quê?
Porque é legal! Quando essa briga acontece de forma natural, entre pessoas intelectuais que sabem o que estão fazendo, que sabem o que estão defendendo, isso se torna um pilar para evolução dessas ferramentas.
Exemplos:
-
Rust
Graydon Hoare, estava insatisfeito com as linguagens de baixo nível, as falhas de segurança e gerenciamento e erros de memória de linguagens como C e C++, levou ele a criar o Rust. Não demorou muito para se criar um hype em cima da linguagem, levantando muitas críticas em cima de C/C++, o que causou uma divisão na comunidade low-level. De um lado, amantes de Rust e do outro, defensores do C++. -
Angular
Por muitos anos, Angular foi taxado de bloated, complexo e de curva de aprendizado lenta. Com isso, a comunidade criou um hate em cima do framework da google, o que espalhou muita desinformação a respeito do mesmo. Com a popularização do React e o hate no Angular, criou uma inimizade entre as duas comunidades. -
Java e PHP
Por muitos anos, essas duas linguagens eram desnecessariamente complexas. Criar um projeto, subir infra e gerenciar dependências, era um grande inferno. PHP era (as vezes ainda é) feio e inseguro. Java era verboso e inflexível. Com linguagens mais abstraídas e modernas como Python e Javascript (que escondem complexidade), novos sistemas foram criados do 0, seguindo os padrões e boas práticas. Isso fez Java e PHP se tornarem monstros do legado. Muitos sistemas em Java ainda estão na versão 8/11 e sistemas em PHP de 10 anos atrás nunca foram modernizados. Novamente, se cria uma rivalidade, comparando umHello, worldem Python com o equivalente em Java e comparando uma Rest API moderna em Express/Nestjs com os legados php.
O que muda?
Essas "inimizades", geram um alerta muito grande em cima da tecnologia. Afinal, o outro lado pode ter razão. No mundo de TI, as coisas tendem a estagnar. Afinal, não se mexe no que funciona. Pra que alterar o que dá dinheiro?
Mas o defeito está lá! É por isso que, hoje, muitos sistemas em Java acabam nunca sendo atualizados! Porque as vezes tecnologia central morreu, ou o sistema é tão grande que acaba sendo mais fácil construir do zero do que portar um sistema Java 5/6/7 para o Java 21. É o preço da estagnação.
Com a comunidade "pegando fogo", nasce a chama da modernização. Hoje, Rust evoluiu. Umas das maiores críticas, era o fato da linguagem depender de libs em C/C++ e descartar a segurança com código unsafe. Hoje, isso está gradativamente diminuindo, algumas dependências de C e C++ estão sendo Reescritas em Rust.
O Angular, na versão 17, melhorou as parte mais complexa do framework: os módulos e as confusões com diretivas (DSL em template, que modernizaram). Na versão 18, adotou signals, que diminui o uso do RxJS. Na versão 21, abandonou o Zone.js, reduzindo o tamanho do build e aumentando o controle sobre o CD (Change detection).
Java e PHP, se modernizaram tanto, que nem parecem a mesma linguagem. Mudaram sintaxe e nasceram frameworks e ferramentas que resolvem vários problemas.
Responsabilidade!
Eu sou o tipo de pessoa, que aquece as brigas por tecnologia na internet. Eu entro em discussões, e vou até o final. Mas mantenho a humildade e meu lugar de fala. Eu sou um dev, formado pela comunidade. Aprendi no Tabnews e no stack overflow. Eu trabalho com Angular + Nestjs, mas atuo 80% dos casos como arquiteto e não como dev.
Minha opinião sobre minhas ferramentas de trabalho: eu amo Angular, amo Nestjs. Mas eu odeio com todas as forças Javascritp e todo seu ecossistema. Não gosto de Javascript, nem do Browser, nem do Typescript, nem do npm.
Então, porque eu continuo usando? Simples! De ponto batido, tecnologia é pra ganhar dinheiro! Eu separo muito bem as responsabilidades.
Fora do trabalho, eu não toco em Javascript. Minha stack é GO, C e C++. Na internet, vou defender GO para CLI, criticar APIs em Python (na minha opinião, não é linguagem para fazer API), vou criticar quem usa Electron (essa porcaria) e defender que Desktop é código nativo em C++ ou hibrido em Flutter.
Eu não vou na comunidade React Native xingar o framework dos caras. Mas quando o tópico for "melhor desempenho em renderização", pode ter certeza, o skia e o Impeller são superiores ao RN. Agora, de ponto batido, não cabe essa discussão. Eu levanto os requisitos e comparo com a competência técnica do time, faço estimativa de tempo com as tecnologias e ganha quem constrói mais rápido em menos tempo.
A gente tem que saber separar bem as coisas. E saber também, a finalidade da discussão. Eu não posso chegar cagando regra, se o tópico for, por exemplo: "Como otimizar uso de recursos em aplicações Python". Eu vou chegar no post do cara falando:
— Tem que usar Rust, porque ele gerencia memoria automaticamente e blá blá blá...
Ai por trás, o cara tem um serviço segurando 6 dígitos de RPS.