Contexto Geral

O mito do programador de uma única Linguagem

Olá FelipePoter e Devs! É tentador pensar que uma única linguagem pode ser a solução de toda uma carreira, certo? Muitos, seduzidos pelo brilho de linguagens populares, como o JavaScript hoje ou o Java ontem, podem até pensar que sua jornada de programação se resumirá a ela.

A Variade na Escolha

Mas, uma rápida olhada no post e você perceberá que a maioria de nós flertou com várias linguagens ao longo da carreira. Por quê? Porque cada projeto, cada desafio, muitas vezes pede algo diferente. Mesmo que hoje você acredite que uma única linguagem é suficiente, acredite, um novo dia virá, trazendo consigo novos desafios.

O Motivo Prático

Para a questão "Por que você escolheu a linguagem de programação que usa atualmente?" A resposta, para muitos, é simples, objtiva e pragmática: na maioria das vezes, é o que o projeto de trabalho utiliza. Ao longo da carreira, um desenvolvedor vai se ver "obrigado" a aprender e adotar novas linguagens e paradigmas.

A Ferramenta Certa

A escolha de uma linguagem, muitas vezes, se dá pela busca da ferramenta certa para a tarefa em mãos. As diferentes linguagens existem por diversas razões. Se a aplicação vai rodar em um navegador, o JavaScript é a escolha. Para tarefas de automação simples, Python em muitos casos é imbatível, mas Bash e Powershell podem ser bem mais úteis em alguns cenários. Já quando o desempenho é inegociável C, C++ e Rust são as opções.

Contexto Histórico

No final dos anos 1990 e início dos anos 2000, Java era o gigante da programação, atraindo desenvolvedores com sua promessa de "Write Once, Run Anywhere" - isso não é piada - e era ferramenta certa para criar aplicações de interfaces gráficas portavéis.

PHP ganhou destaque a partir dos anos 2000 com a emergência da pilha LAMP e uma solução totalmente aberta e gratuita para criar plataformas web robustas. Talvez neste periódo era a ferramenta 'certa' para aplicações backend. Logo depois o Ruby on Rails tomoando este titulo e fazendo a popularidade do Ruby disparar.

O Boom do JavaScript

Hoje, com muitas linguagens e soluções adequadas para a maioria dos backends web, tanto PHP quanto Ruby têm visto uma diminuição em grande em adoção, enquanto o JavaScript segue se solidificando, a medida enquanto a web se consolida como a ferramenta padrão para interface entre humanos e sistemas digitais.

Comparando Linguagens Populares

C#, Java e Go em muitos aspectos, são de certa forma muito similares. São versáteis e poderosas, projetadas com o objetivo em comum de maximizar a experiência de desenvolvimento enquanto sacrificam o mínimo possível de desempenho. Contudo, cada uma tem suas peculiaridades e curisodidades historicas, vale conhecer um pocuo de cada uma, isso vai necessariamente te tornar um desenvolvedor melhor.

Escolhendo Com Sabedoria

Quando linguagens possuem funcionalidades similares e ambas são igualmente boas para resolver o seu problema, a decisão geralmente é baseada na familiaridade do time com a ferramenta, na facilidade de contratar ou ser contratado para trabalhar com ela, e na disponibilidade de bibliotecas e ferramentas de suporte que podem te auxiliar. Considerando o desenvolvimento web, estes fatores justificam a popularidade do JavaScript, impulsionado por tecnologias como TypeScript e Node, no backend.

O poder do ecosistema

Além do exemplo do JavaScript na web, no campo de análise de dados, ainda que o Python possa não ser tecnicamente a melhor opção em muitos aspectos, ele frequentemente vai ser o escolhido por conta da vasta quantidade de bibliotecas e modelos disponíveis.

Reflexão

Em conclusão, ainda que às vezes os desenvolvedores escolham uma linguagem por paixão ou curiosidade, na prática, muitas vezes - mesmo quando pensamos que não - a decisão é influenciada por fatores externos.

Minha Jornada

A Introdução Acadêmica

Entrei no curso de ciência da computação sem saber programar, minha introdução à programação foi com C no primeiro semetre. No segundo aprendi Java. Durante os muitos anos de curso vi algumas outras linguagens em algumas disciplinas, mas nada que teve qualquer impacto na minha carreira. Com exceção de PL-SQL.

O Sonho, A Ferramenta Certa e o Problema Errado

Como um aficionado por música eletrônica, tinha o sonho de trabalhar com processamento de áudio digital em tempo real. Assim, me vi atraído a me dedicar ao C++, a linguagem que domina a área. Quando finalmente consegui uma oportunidade de ouro para trabalhar com C++ e processamento de áudio digital, compreendi que era sensato separar o hobby da carreira.

Carreira, Aventuras e Experimentos

E procurei por uma opção que me permitisse ter um bom trabalho que me permitisse dedicar tempo e dinheiro a outras atividades. Assim, enquanto a web se solidificava, consegui um estágio em Node e React, juntamente com Mongo e abracei o JavaScript no auge do MERN stack. Além do stack web, Python entrou em cena, sendo um aliado na automatização de tarefas rotineiras e em ciência de dados.

A busca pelo Backend Ideal

Após a graduação, a construção de aplicações web sob encomenta era minha rotina. Devido a familiaridade experimentei Java no backend, arrisquei com Python e me frustei com C++. Mas, minha insatisfação era constante. Após me frustrar com todas as ferramentas que conhecia para construir backends web, senti que precisava aprender algo novo.

Aprendendo a Pilotar Go com o Carro Andando

Considerei Go, C# e até OCaml. Optei por Go, devido a sua simplicidade. Iria aprender uma nova linguagem para um projeto com contrato já assinado e prazo justo. No entanto, grande parte da aplicação estaria ou no cliente, feito em JavaScript com Vue, ou diretamente no banco de dados em Postgres e talvez justamente por isso o Go era a ferramenta mais adequado. Depois de trabalhar diariamente por alguns meses com Go, fiquei encantado com a linguagem.

O Presente: Software Aeronáutico

Atualmente, trabalho com software aeronáutico, um domínio que exige extrema precisão. Aqui, a escolha da linguagem é determinada por regulamentos e precisa garantir que saibamos, de forma estática, todos os recursos que nosso programa vai consumir, tanto em termos de memória, uso de CPU, quanto de banda e IO. Isso limita bastante as opções.

Conclusão: Uma Jornada de Escolhas e Flexibilidade

A jornada até aqui me mostrou a importância da adaptabilidade. Minhas escolhas 'linguísticas' foram moldadas pelas necessidades técnicas, pelo mercado e pelo desejo de evolução. A programação, para mim, tornou-se uma arte de escolher a ferramenta certa para cada capítulo da minha carreira. E que venham as próximos linguagens!