Executando verificação de segurança...
5

[RANT-2] A linguagem não é ruim, você que é medíocre

Start

Todo mundo já viu aquele programador reclamando: "Essa linguagem é horrível!", "Isso aqui é inútil!", "Por que alguém usa isso?". Mas será mesmo que a linguagem é ruim ou você que não sabe usá-la?

A falácia do "X é melhor que Y"

Se tem uma coisa que novato (e até veterano inseguro) adora fazer é entrar em guerra de linguagem.

  • "Python é melhor que Java"
  • "JavaScript é um lixo"
  • "PHP deveria morrer"

Só que essa conversa nunca foi sobre qualidade técnica. No fundo, é pura preguiça e resistência a aprender algo novo.

Toda linguagem tem Ônus e Bônus. Algumas priorizam performance, outras produtividade. Algumas focam em tipagem forte, outras em flexibilidade. O que define se algo é "bom" ou "ruim" não é a ferramenta, mas sim quem a usa.

O problema é o programador, não a linguagem

Se você não consegue escrever código limpo e eficiente em uma linguagem, isso não significa que a linguagem é ruim. Significa que você não aprendeu a usá-la corretamente.

  • C é um "inferno" para quem não entende alocação de memória.
  • JavaScript é um "caos" para quem não estudou como funciona o event loop.
  • Haskell é "complicado" para quem nunca entendeu programação funcional.

Outro exemplo clássico é Ruby on Rails. Muita gente diz que "não escala" e que é "lento". Mas se olhar bem, verá que grandes empresas como Shopify, GitHub e Airbnb usam Rails sem problema algum. O que acontece é que programadores medíocres escrevem código desastroso e depois culpam a ferramenta.

"Mas linguagem X tem problemas!"

Óbvio que tem. Toda tecnologia tem. Mas problemas técnicos são coisas objetivas e, na maioria das vezes, contornáveis. O que não dá para contornar é a mentalidade de alguém que sempre culpa a ferramenta em vez de melhorar suas próprias habilidades.

Veja o JavaScript: já foi ridicularizado como "brinquedo de browser" e hoje domina o mundo com Node.js, Deno e frameworks insanos como React. O que mudou? A evolução da linguagem e, principalmente, a maturidade dos programadores que aprenderam a usá-la direito.

Outro exemplo: PHP. Durante anos, foi considerado "a praga da web". Mas e hoje? Frameworks modernos como Laravel tornaram o desenvolvimento PHP extremamente produtivo e eficiente. O problema nunca foi a linguagem, e sim os programadores que escreviam código de qualquer jeito.

E que tal Java? "Java é verboso", dizem. Mas é usado em sistemas bancários, aplicações corporativas gigantescas e até em Android. Quem reclama da verbosidade muitas vezes nunca estudou direito boas práticas em Java, como o uso correto de design patterns, bibliotecas modernas e frameworks como Spring Boot.

Conclusão: pare de chorar e programe

Da próxima vez que você pensar em dizer que uma linguagem "não presta", pare e reflita: será que o problema está nela ou em você? Em vez de reclamar, estude. Leia a documentação. Pratique. Aprenda os padrões de projeto adequados. Se depois de um tempo ainda não gostar, tudo bem. Mas se sua única justificativa for "é ruim porque eu não sei usar", parabéns: você acabou de admitir sua mediocridade.

No final do dia, código bom é aquele que resolve problemas de forma eficiente, não aquele escrito na linguagem da sua panelinha do Twitter. Quer ser um programador de verdade? Então pare de arranjar desculpas e comece a programar.

Carregando publicação patrocinada...
3

Eu falo mais ou menos isso, especialmente aqui: https://www.tabnews.com.br/maniero/faq-do-programador-perdidao.

O que não falo ali que não era pertinente é que apesar do problema ser o programador, as tecnologias, principalmente as linguagens, têm características boas e ruins e ambas devem ser ressaltadas, o que obviamente desagradará lovers e haters de cada uma delas, porque eles são o que está definido na postagem principal.

A leve discordância vai no sentido que a ferramenta é boa e ruim sim, não é só o programador. As frases que as pessoas usam nos exemplos acima realmente indicam que a pessoa está em um nível de conhecimento técnico e maturidade tão baixo que o problema real é só quem disse aquilo. Mas é possível fazer críticas, assim como elogios, pertinentes para demonstrar que a tecnologia é deficiente, ou poderosa, em algo. E quem é capaz de fazer isso está longe de ser o problema.

Também é necessário tomar cuidados com exemplos de utilização como determinantes para indicar algo. Claro que ajuda dar uma ideia, mas precisa aprofundar para saber a realidade, a informação rasa é um dos males que as pessoas cometem ao avaliar uma ferramenta. Vou citar alguns exemplos.

A Wikipedia é um dos sites mais acessados do mundo, bem entre os do topo mesmo, e o PHP sempre deu conta, mesmo com um software mal feito responsável pela plataforma. Isso significa que é possível escalar com PHP? Sim, sem dúvida, é possível escalar com qualquer linguagem, falar que linguagem X não escala é o mesmo que dizer que linguagem X é um lixo, é só a deficiência da pessoa falando algo. Mas não quer dizer que escala bem, que é fácil e barato de fazer isso. Em outra linguagem, e mais bem-feito, o resultado final seria melhor, ainda que para o usuário isso talvez não seria percebido, mas internamente faria uma diferença enorme.

O Stack Overflow até há pouco tempo atrás estava entre os 30 sites mais acessados do mundo e já tentaram rodar ele com apenas um servidor e deu conta do recado sem nenhuma dificuldade. Ele foi feito em C#. Isso quer dizer que C# é a linguagem mais eficiente do mundo? Claro que não, mas é das mais, e se os programadores forem bons, como sempre foram os do SO, é possível escalar de forma fácil e barata, melhorando inclusive o SEO por responder muito rápido, e isso sempre foi um dos segredos, mas não o único, para ele aparecer nas buscas. Outras pessoas não conseguem obter o mesmo resultado com C#, mas a linguagem faz uma diferença grande para conseguir essa eficiência toda. Isso poderia ser feito com bons resultados até certo ponto em Java, Go, Rust e várias outras linguagens, mas virtualmente impossível em JS, Ruby, Python, PHP ou Lua (que é impressionantemente rápida pra o tipo de linguagem que é).

Ruby escala, mesmo com Rails, mas se paga um preço por isso. E para manter a robustez que no longo prazo o custo de testar mais tira a vantagem da produtividade inicial que ela dá. Ninguém diz que esses sites citados estão com o melhor custo/benefício possível. Apesar de funcionar, nem sempre é o mais certo adotar uma tecnologia porque todas são iguais e dão exatamente o mesmo resultado, só depende do programador.

JS sempre teve seus problemas e eles continuam lá, as críticas à linguagem, quando bem elaboradas são verdadeiras, o que não impede de ser usada em projetos de qualquer espécie. Novamente não quer dizer que é a melhor opção em todos os sentidos, mas pode ser em alguns, inclusive alguns de extrema importância para o seu projeto. Adotá-lo vai cobrar um preço, mas pode ser interessante de pagá-lo, porque o preço de usar outra linguagem pode ser inaceitável para seu projeto. Não podemos aceitar que todas as linguagens podem ser ideiais para tudo, apenas que todas podem ser usadas, de uma forma ou de outra, para o bem ou para o mal do projeto. O maior problema de JS é que ela não foi criada para os projetos onde ela é usada hoje, por isso surgem iniciativas como TS ou Dart, ou muita gente vai para o WebAssembly através de alguma outra linguagem. JS atende todo tipo de projeto, mas em alguns cobra um preço que muitos não enxergam, especialmente quem não tem experiência com outras tecnologias.

Laravel é popular, mas tecnicamente tem dificuldades. Popularidade não é o mesmo de ser bom ou ideal para alguma coisa. Ele não resolveu o problema dos programadores escrevem código de qualquer jeito, a minha observação, pode ter um viés, é que ele ajudou isso piorar. Algumas tecnologias atraem mais programadores falhos. Laravel fez PHP escalar com muito mais dificuldade, mas ainda escala, mesmo que custe mais caro.

Um adendo aqui que produtividade muitas vezes é obtida com adoção precipitada de certas tecnologias e de codificar sem muito planejamento. Por isso que certas linguagens são produtivas no curto praz mas não no longo prazo. Quantas pessoas ficaram décadas no projeto para ver a produtividade cair, cair e cair, e ser quase inviável trocar de tecnologia depois disso? Tem escolhas que só os experientes sabem fazer bem.

Java ser verboso, e está longe de ser o maior problema da linguagem, não impede mesmo de fazer qualquer aplicação, e já está caminhando para ser razoável, mas longe do ideal, para fazer até um sistema operacional. As questões citadas não tornam Java melhor em nada, até porque também não era tão ruim.

Então pare de chorar e aprenda os fundamentos, de forma correta, aprenda toda a computação e engenharia de software, tenha certeza que está bem na comunicação e expressão, na matemática, nas ciências, incluindo filosofia, para raciocinar com subsídios corretos e não com crenças, para ter informações completas, mantenha-se informado de tudo, entenda o que é hype, o que é alguém divulgado algo por interesse próprio, e ganhe experiência real, correta, porque se ganhar experiência erra irá treiná-la cada vez mais e sempre errará. O que mais vejo é isso, a pessoa errada tanto, se apaixona tanto por certa tecnologia que não consegue fazer uso correto dela.

O que mais vejo de falha nos programadores é a falta dos fundamentos da área e até de conhecimentos mais básicos, por isso escolhem linguagem errada por um motivo ou outro, especialmente no Brasil onde temos 92% de analfabetos funcionais, muitos são programadores, e somos o 2o. país com pior percepção da realidade, assim não tem como tomar decisões certas. As pessoas precisam se responsabilizar pela sua evolução.

S2


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

2

Achei sua postagem muito pertinente e cheia de insights valiosos! Eu concordo totalmente que é preciso levar em consideração as características de cada linguagem e tecnologia antes de simplesmente adotar uma ou rejeitar outra, sem uma análise mais profunda. Às vezes, parece que as pessoas se apegam a certas ideias de que "essa linguagem é a melhor" ou "isso não serve mais", sem realmente entender os contextos e trade-offs envolvidos.

Seu ponto sobre o PHP, por exemplo, é perfeito. O fato de ser usado em grandes plataformas como a Wikipedia não significa que seja a melhor opção para todos os casos, mas também não significa que não seja capaz de lidar com sistemas de grande escala. A questão é como a aplicação é construída, como ela é mantida e escalada ao longo do tempo. Da mesma forma, o C# no Stack Overflow mostra que, com um bom entendimento e um uso adequado das ferramentas, é possível tirar muito proveito de qualquer linguagem.

O mais importante é ter a maturidade e o conhecimento para saber quando usar uma ferramenta e quando ela pode ser um fardo. A criticidade que você trouxe sobre as escolhas de tecnologias, como o uso de Ruby on Rails ou Laravel, é um exemplo claro de como uma decisão errada pode impactar o futuro de um projeto, especialmente em termos de manutenção e escalabilidade. A produtividade imediata nem sempre é sinônimo de um bom resultado a longo prazo.

Sobre os fundamentos da computação, sem dúvida é o que mais falta na maioria das pessoas. As pessoas querem pular etapas, se apaixonam por tecnologias "da moda" e esquecem de desenvolver uma base sólida que vai permitir que elas realmente entendam o que estão fazendo. E sim, como você bem colocou, isso acaba gerando um ciclo vicioso onde o erro se torna aprendizado, mas é um aprendizado errado, que vai se perpetuar.

Infelizmente, com a popularização da tecnologia, muitas dessas falhas acabam sendo disseminadas mais rapidamente, o que só contribui para a confusão e as escolhas impulsivas. Portanto, a responsabilidade pela evolução de cada programador passa muito por essa autoanálise e compromisso com o aprendizado contínuo.

Adorei a reflexão que você trouxe. O debate técnico e a construção de um pensamento crítico são fundamentais para uma evolução verdadeira no campo da programação.

1

Infelizmente, isso atualmente são os comentarios mais comuns que existem!
Sou professor em um curso tecnico, e estudante de mestrado atualmente, em ciencias da computação, e pensei que são locais que não teriam nada em comum, me enganei...

Em ambos os lugares vejo pessoas, que reclamam da linguagem usada para o estudo, dizendo que não vale a pena aprender a liguagem pq não é mais usada, que isso não vai da futuro, que são linguagens antigas que ninguem deveria mais utilizar as mesmas.

E isso é triste pela tanto de pessoas, que pensa dessa maneira, seja a nova geração, ou o pessoal que esta no mercado atualmente.

Desculpa remoer isso nos comentarios, mas concordo com a sua linha de pensamento.

1

Exato! Esse tipo de comentário já virou o padrão.

A galera reclama da linguagem usada para ensinar porque não é "moderna" ou "não tem mercado", como se o propósito fosse simplesmente encher um currículo com buzzwords da moda. Esquecem que aprender uma linguagem é só um meio para desenvolver o raciocínio lógico e a compreensão dos conceitos fundamentais de programação.

Achar que "X não vale a pena porque ninguém mais usa" é um pensamento míope. Hoje reclamam de C, amanhã vão reclamar de Python, depois vão reclamar que não aprendem com IA. A real é que quem tem base sólida aprende qualquer linguagem nova sem sofrimento.

E pior, isso não acontece só com iniciantes. Tem gente no mercado há anos que ainda pensa assim.

No fim, programação não é sobre a ferramenta, é sobre como você pensa e resolve problemas. E isso nunca fica obsoleto.