- Porque aprender Golang e não Rust?
- Porque aprender Golang e não JS/TS?
- O quão custoso é a simplicidade do Golang?
- Quais os pontos negativos do Golang?
- Quais os principais players/empresas que utilizam Golang no BR?
- Existem vagas mid/senior? Só vejo vaga SR+
- Existem vagas para Backend, sem que envolva infraOps?
- Há perspectiva de crescimento de demanda/vagas para Golang?
- é preferivel utilizar http (standard) ou algum framework/router?
- injeção de dependencias via reflector ou instanciando tudo na mão? (Wire ou Dig)
- quais o padrões de códigos são comuns em Golang?
- caso tenha migrado para golang de uma linguagem POO, como foi a adaptação?
- Como voce organizaria uma API REST modular com Golang?
- Quais arquiteturas são mais usadas em Golang?
- Quais motivos de não usar determinada Arquitetura em Golang?
- Quais são as principais libs usadas no dia a dia?
Motivos
Eu não vejo Rust e Go como concorrentes. Go tem sido usado bastante em microsserviços e APIs, aplicações dentro de empresas. Já Rust tem sido usado mais para coisas "baixo nível", como IDEs (Zed), terminais (Warp) e até no kernel do Linux e do Windows. Eu faço uma analogia com Go substituindo aplicações que foram escritas em Java e Rust substituindo coisas que foram originalmente feitas em C/C++. Ou seja: estude os dois (é o que eu pretendo fazer)
Com Go vc gera aplicações nativas para o sistema operacional que vai ser usado, o que resulta em uma ótima performance. Por ser uma linguagem compilada tem muita coisa que vc consegue detectar já na compilação, diferente de JS (não usei TS o suficiente para poder dizer o quão legal é).
O quão custoso é a simplicidade do Golang?
Eu não vejo custos nesse caso. Simplicidade é uma das melhores coisas da linguagem :)
Quais os pontos negativos do Golang?
Menos vagas do que outras linguagens mais antigas. Menos livros e materiais em portugues, apesar disso ter melhorado muito nos últimos anos.
Mercado
Quais os principais players/empresas que utilizam Golang no BR?
De cabeça eu lembro de Globo, PicPay, Transfeera, ContaAzul, LuizaLabs, Magalu Cloud, Resultados Digitais, Pismo. Neste link tem mais cases.
Existem vagas mid/senior? Só vejo vaga SR+
Eu tenho uma teoria quanto a isso: na maioria das vezes as empresas começam a usar Go quando estão enfrentando problemas de performance, concorrência, escalabilidade. Nestes cenários o normal é procurar pessoas que tem mais experiência, por isso tem mais vagas para senior+ do que outras linguagens como JS. A tendência é isso melhorar com o tempo, conforme mais empresas começam a adotar Go como sua linguagem principal.
Existem vagas para Backend, sem que envolva infraOps?
Sim, muitas empresas usam Go para desenvolver APIs e microsserviços.
Há perspectiva de crescimento de demanda/vagas para Golang?
Não tenho números para provar isso, mas tenho visto um aumento nas vagas. Um contra-ponto é que os salários tendem a ser maiores.
Idioms
é preferivel utilizar http (standard) ou algum framework/router?
A tendência da comunidade é usar ao máximo a stdlib, para garantir a compatibilidade com as futuras versões da linguagem. Eu gosto de libs pequenas, que adicionam algumas funcionalidades mas mantém a compatibilidade com a stdlib, como o Chi. Mas na versão 1.22 está prevista uma melhoria grande na lib http que vai tornar obsoleta várias libs de terceiros.
injeção de dependencias via reflector ou instanciando tudo na mão? (Wire ou Dig)
Eu prefiro usar o main.go como o local para definir e invocar as dependências, passando elas explicitamente para os serviços (ou como queira chamar) que vão usá-las. Explicito é sempre melhor que implícito. Isso torna mais fácil os testes também.
quais o padrões de códigos são comuns em Golang?
Esta doc tem muita coisa importante que é recomendado ser seguido. Algumas empresas tem criado padrões baseados neste, mas simplificado ou adaptado para suas realidades. É o que fizemos no PicPay
caso tenha migrado para golang de uma linguagem POO, como foi a adaptação?
Eu vim de PHP e as únicas coisas que eu estranhei no começo foi o tratamento de erros e a falta de herança. Mas logo entendi como funcionam e não consigo me ver usando outra coisa :)
Padrões
Como voce organizaria uma API REST modular com Golang?
Esta doc representa o que eu uso hoje para organizar um projeto em Go. Além disso, gravei um curso com um exemplo de API. Ele está um pouco antigo mas acredito que ainda seja válido (pretendo revisar esses videos em 2024)
Quais arquiteturas são mais usadas em Golang?
Acredito que sejam Clean Architecture e Hexagonal (ou ports/adapters)
Quais motivos de não usar determinada Arquitetura em Golang?
Não consigo pensar em uma boa resposta para essa :)
Quais são as principais libs usadas no dia a dia?
Complicado listar porque são muitos projetos diferentes. Minha recomendação é sempre procurar no Aweseme Go