Reflexões sobre Linguagens

Quem me conhece sabe que eu desenvolvi minha carreira com tecnologias Microsoft, como C# e SQL Server, apesar de já ter participado de projetos com Java e PHP, e há uns 7 anos(quando o boom de microserviços chegou até mim) passei à utilizar outras tecnologias FOSS e junto com isso a Microsoft abriu o código fonte de algumas ferramentas, como o .NET e o compilador Roslyn.

Depois da popularização da computação distribuída(erroneamente chamada de microserviços) outras linguagens de programação começaram à ser vistas num ecossistema corporativo, outrora dominado por C#/.NET e Java.

Python, Ruby, JavaScript e Golang passaram à deixar de ser linguagens “hipsters” de startups e invadiram o mundo corporativo devido à sua facilidade de adoção e performance já no começo do projeto.

Eu pessoalmente me tornei um entusiasta de Python e Golang.

Python por sua característica de ser simples e ter uma biblioteca para absolutamente qualquer coisa. Apesar de pecar um pouco em desempenho, isso não é algo que as aplicações web de hoje em dia precisem olhar, afinal não temos mais recursos tão limitados e caros como há anos atrás.

Golang por sua vez é performático, uma linguagem compilada. Porém com uma curva de aprendizado ligeiramente maior que Python, pelo uso extensivo de ponteiros e ferramentas para lidar com paralelismo mais sofisticadas, ainda que sua sintaxe continue simples.

Mas sabe o que essas 2 aí tem em comum? Elas não fazem absolutamente nada diferente de qualquer outra linguagem antiga(Delphi, Clipper, C#, Java, PHP). E você pode ter performance e legibilidade de código com qualquer linguagem (SOLID e Data Structures fazem diferença até hoje).

Tá bom Otávio, legal a historinha, mas o que faz você escolher uma determinada tecnologia para seus projetos hoje em dia?

Minha resposta é simples: Depende!

  • Depende do time que estará comigo e da sua expertise.
  • Depende da adoção da tecnologia pela comunidade e se ela passou ou tem condições de passar pelo “teste do tempo”
  • Depende da compatibilidade dela com os mecanismos que temos hoje nas plataformas de nuvem públicas
  • Depende do que estou tentando construir(web, embarcado, mobile, terminal app)
  • Depende da escala que quero atingir com meu software

A única regra que posso afirmar que funciona é: Comece simples.
Comece escolhendo a linguagem que você e seu time mais tem produtividade. Analise o objetivo final(software não fim, porém você vai saber quais serão as funcionalidades “core” do teu produto).

Faça escolhas baseado mais em produtividade do que em hype de aplicar alguma nova buzzword de mercado. Tenha em mente que software é um facilitador para alcançarmos objetivos e não deve se tornar um “dificultador” no longo prazo.

E caso você não consiga ver como alguma das tecnologias poderá se tornar um dificultador ou um custo desnecessário no longo prazo. Me chama e vamos bater um papo aqui no meu LinkedIn.

Forte abraço. Até mais. 😊

Leave a Reply

Your email address will not be published. Required fields are marked *