Devo aprender mais de uma linguagem de programação ?
Tags: discuss, programming, career, community
Published: 2022-08-24 03:59:19

Vou ser direto e reto: eu pessoalmente acredito que sim, todos programadores independentemente da area de atuação, seja web, software, mobile ou qualquer outra, deveria sim saber pelo menos uma linguagem de programação que não a sua "principal" linguagem, isso além de acrescentar em repertório também vai ajudar em muito seu desempenho com sua linguagem "principal". Mas vamos com calma para que eu possa explicar meu ponto.

## A tecnologia está sempre mudando

Quando começamos a programar acabamos desenvolvendo um certo afeto por alguma linguagem em específico e investimos completamente nosso tempo de aprendizado nela, o que aumenta ainda mais este vinculo entre o programador e a linguagem. Pode ser a primeira que você resolveu aprender, a mais simples pra você, ou a que acabou por sanar melhor suas necessidades e gostos, todos temos essa linguagem que acaba se encaixando melhor a nós.

Porém, todos sabemos que não existe uma tecnologia que seja bala de prata, ou seja, que consiga solucionar todo e qualquer problema, diferentes linguagens tem diferentes propósitos e servem a diferentes fins e a história nos mostra isso muito bem.

A não muito tempo as aplicações web eram em sua grande maioria feitas utilizando PHP com seu back-end, uma stack que era conhecida como LAMP (Linux, Apache, MySQL, PHP), porém com o tempo Django e Flask começaram a se tornar bem populares e então o "P" começou a fazer referencia a Python e não mais a PHP. O JavaScript que até esse ponto servia apenas como uma linguagem utilizada dentro dos navegadores para fazer interações simples, agora poderia ser usado no Back-end com o Node.js e com isso surgem novas stacks e os desenvolvedores precisam novamente se adaptar e começar a dar atenção a este novo mercado.

Agora vendo esses pontos durante a história e o mercado atual podemos ver que nenhuma dessas tecnologias sumiu, elas continuam aqui, isso porque servem diferentes propósitos e são úteis de diferentes maneiras. O JavaScript é muito versátil e permite construir uma aplicação inteira usando somente uma linguagem, o PHP é prático e pode ser usado de forma versátil na maioria das hospedagens sendo assim ótimo para projetos mais simples e ainda assim podendo ser usado em projetos mais complexos, já o Python com o Django ou o Flask é capaz de produzir aplicações altamente escaláveis de uma forma bem simples dado o poder de processamento da linguagem.

## Ser um especialista

O argumento que mais vejo sendo usado contra a ideia de ser um desenvolvedor poliglota é que para aprender mais de uma linguagem é necessário pagar o alto preço de não ser um "expert" na sua linguagem principal. Muitas pessoas acreditam veementemente que aprender outra linguagem seria perder tempo que poderia ser usado aprimorando a sua favorita, e isso faria de você menos capacitado com sua linguagem principal para ter uma segunda que poderia acabar não sendo tão útil.

Nesse momento você espera que eu discorde, porém não é bem assim, eu não concordo mas não discordo completamente. Realmente, você está colocando esse tempo que poderia ser usado melhorando sua linguagem mais usada em outra que talvez não seja tão necessária, entretanto, eu como atleta que já praticou diversos esportes vejo que praticar um deles te ajuda muito em outro. Antes de começar com o Karate, eu joguei futebol por mais ou menos 5 anos e por conta disso além de uma alta resistencia fisica eu ganhei muita força nas pernas que me foi extremamente útil como artista marcial.

Olhando programação com o mesmo ponto de vista, eu como desenvolvedor JavaScript tive uma melhora muito grande no meu conhecimento de estruturas de dados, memória e algoritmos quando decidi aprender Python já que esta linguagem trabalha muito melhor com essas coisas e graças a isso minhas aplicações desenvolvidas com JavaScript tiveram uma melhora impressionante na sua velocidade de resposta e na sua arquitetura, foi um tempo extremamente bem investido.

## Novos horizontes

Eu sou um defensor da ideia de olhar para a mesma coisa utilizando vários pontos de vista, é algo bem positivo e que em geral só tem a acrescentar, e aprender outra linguagem é algo que certamente traz isso para você.

![Objeto formando sombras com formas distintas quando iluminado de diferentes direções](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6kmpeibaadtwribfboab.jpg)

Quando apenas temos uma linguagem em nossa caixinha de ferramentas temos nosso campo de visão limitado ao que aquela linguagem consegue fazer e se propõe a fazer e isso faz com que certos projetos ou certas atividades aparentem ser muito mais dificeis do que realmente são.

Vamos olhar, por exemplo, para o ASP.NET Core, eu comecei a aprender programação através do C# e minha entrada no mundo do desenvolvimento Web foi com este simpático framework. Por mais que seja muito eficiente, tenha uma extensibilidade ótima, te dê um alto controle sobre o HTML e o HTTP, tenha uma ótima testabilidade e um excelente sistema de rotas, além, é claro, dos incriveis recursos do C#, este Framework é relativamente complexo de se trabalhar e pelo menos na minha visão não é o ideal para se trabalhar com projetos pequenos já que seria trabalhoso demais faze-los e o retorno não seria dos melhores. Por conta disso eu acabei por pensar que a Web não valeria a pena já que é trabalho demais para pouco retorno pelo menos no começo aonde só temos trabalhos pequenos.

Quando conheci o PHP meu pensamento mudou bastante, já que era muito mais simples desenvolver aplicações pequenas, mas que conseguissem dar conta do que fosse necessário, mas ainda assim era necessário muito controle da sua aplicação para que ela não ficasse confusa conforme fosse ficando maior, e então eu acabei reparando que o ASP.NET Core trabalhava muito melhor com aplicações maiores que precisavam de constante expansão, porém não era tão bom para aplicações menores por conta de ser trabalhoso começar um projeto nele, o PHP, por outro lado, conseguia atender melhor as necessidades de um projeto mais simples e com menor necessidade por extensibilidade.

## Um investimento, não um gasto.
Com tudo isso dito fica bem claro que em meu ponto de vista, aprender uma nova linguagem não é um gasto do tempo que poderia ser investido melhorando habilidades já existentes, mas um investimento no seu próprio conhecimento.

Você vai ter a mesma capacidade com todas as linguagens? Provavelmente não, mas no final das contas esse não deveria ser seu objetivo, não da para ser bom em tudo. Vai te ajudar com sua linguagem de programação principal? Muito provavelmente sim. O processo de aprendizagem de outra linguagem acaba fazendo você perceber diferenças entre as linguagens, o que faz você se questionar porque as coisas são feitas de formas diferentes e como isso muda o produto final.

Vou usar um exemplo real da diferença que faz ter a ferramenta certa para o trabalho. Durante a produção da dashboard desse mesmo ‘blog’ eu precisava de um webhook no servidor da API para que sempre que eu fizesse um push no meu GitHub a API fosse reiniciada aplicando as alterações, instalando novos pacotes e etcetera. Eu acabei optando por fazer isso usando um servidor com Node.js e Express, mas isso me rendeu alguns problemas.

Era muito complicado verificar se havia uma modificação no arquivo de pacotes para assim rodar o comando de instalação apenas quando necessário.
Como o comando tinha que ser escrito de uma vez só ele ficava muito comprido e complicado de modificar
Escrever logs e salva-los com o FileSystem do Node as vezes não funcionava (timeout) ou demorava por conta do tamanho dos logs, o que fazia eu perder controle da aplicação
Eu poderia sim, ter resolvido todos esses problemas utilizando o Node, todavia, acabei optando por passar esta parte da aplicação para Python e foi provavelmente a melhor decisão que eu tomei. Tudo ficou bem mais simples, esses problemas desapareceram e eu ainda consegui melhorar essa pseudo-pipeline adicionando mais verificações e processos que melhoraram bastante o processo. É justamente aqui que se diferencia o programador poliglota do não poliglota.

## E então?
Com toda certeza é muito importante aprofundar seus conhecimentos em um específico campo, ou nesse caso, linguagem. Contudo, acho importante antes de dar esse grande mergulho, ter mais conhecimento geral. 
Em muitos casos saber mais sobre outras arquiteturas, infraestrutura ou outra linguagem pode ser muito mais interessante e importante do que realmente se aprofundar na que você já conhece, tudo vai depender do que você está fazendo e do que precisa para conseguir levar esse projeto a frente.

Lembre-se, não se deve colocar todos os ovos na mesma cesta. Até a próxima.