2 pontos por GN⁺ 2024-08-13 | 1 comentários | Compartilhar no WhatsApp

Go é meu martelo, e tudo é prego

Introdução

  • Markus é um desenvolvedor solo e criador de produtos digitais
  • Trabalha sozinho, sem equipe, e busca uma forma de trabalho flexível
  • Evita stacks tecnológicas complexas e se concentra em entregar valor aos clientes

Por que escolhi Go

Motivo 1: Go consegue fazer quase tudo

  • Go é simples, fácil de ler e consistente
  • Pode ser usado para diversos fins, como CLI, infraestrutura de nuvem, servidores HTTP e trabalho de rede
  • Também é possível desenvolver jogos para Nintendo Switch, apps com GUI e sintetizadores de strings para terminal em Go

Motivo 2: Menos troca de contexto

  • Usar várias linguagens de programação dificulta a mudança de sintaxe
  • Usar apenas uma linguagem permite evitar esse problema
  • Fica mais fácil gerenciar vários elementos, como linguagem, compilador, IDE, toolchain e comunidade

Motivo 3: Conhecimento mais profundo

  • Focar em uma única linguagem permite construir um conhecimento mais profundo
  • Concentrar-se em uma linguagem é mais produtivo do que lidar com várias ao mesmo tempo
  • Isso ajuda a reduzir a complexidade do desenvolvimento de software

Conclusão

  • Markus vem realizando diversos projetos com sucesso usando Go
  • Ele aumenta sua produtividade por meio de um conhecimento profundo de Go
  • Com Go, consegue resolver diferentes desafios

Resumo do GN⁺

  • Como desenvolvedor solo, Markus escolheu Go para reduzir a complexidade e aumentar a produtividade
  • Go pode ser usado para diversas finalidades e é simples e consistente, o que facilita sua gestão
  • Focar em uma única linguagem permite desenvolver conhecimento profundo e pode ser mais eficiente do que lidar com várias linguagens
  • Com Go, é possível realizar com sucesso diversos projetos, e isso também pode ser útil para outros desenvolvedores

1 comentários

 
GN⁺ 2024-08-13
Comentários do Hacker News
  • Tenho experiência trabalhando em uma empresa que processava dados financeiros usando Go

    • Eu me incomodava com colegas usando Go para tarefas pontuais, como agregar arquivos CSV ou atualizar bancos de dados
    • Era difícil confiar vendo colegas implementarem algoritmos básicos por conta própria em vez de usar Pandas
    • Achei que era um desperdício de tempo da empresa e parecia mais uma questão de orgulho para provar que Go bastava
  • Muitas pessoas subestimam o custo de aprender uma linguagem de verdade

    • Leva de 2 a 4 anos para chegar a um nível em que se possa dizer que “conhece” a linguagem
    • Leva de 8 a 10 anos para entender a linguagem, o compilador, o runtime, a biblioteca padrão e as formas idiomáticas de usá-la
    • Nesse período, é possível evoluir a forma de usar a linguagem e treinar iniciantes rapidamente
  • Acho que Go serve para quase todo tipo de trabalho

    • Sou muito produtivo usando Go
    • Quando o projeto passa de 100 linhas, acho melhor que Python
    • Vantagens do Go:
      • a linguagem é muito simples
      • a biblioteca principal é bem projetada
      • dá para resolver a maioria das tarefas só com o toolchain e a biblioteca principal
  • Acho que Go não é adequado para projetos pessoais

    • O código é verboso e até tarefas simples exigem escrever muito código
    • Faltam enums adequados, union types, null safety etc.
    • Por esses motivos, não acho divertido para projetos pessoais
  • Prefiro Typescript e Rust

    • Deno e Typescript são ferramentas mais versáteis que Go
    • Typescript é mais seguro e ergonômico, mas um pouco mais lento
    • Rust é mais seguro e mais rápido, mas difícil de aprender
    • Vantagens do Typescript:
      • null safety
      • generics amplamente suportados
      • discriminated union types
      • concorrência segura
      • métodos de collections/iterators
    • Vantagens do Go:
      • é mais eficiente em termos de tamanho e uso de memória
      • o GC do Go é melhor que o do V8
      • é mais rápido em tarefas CPU-bound
      • biblioteca padrão maior
  • Já usei Go e Typescript, mas prefiro Kotlin/JVM

    • Apesar da dicotomia Gradle/Maven e da insegurança com o sistema de build, estou muito satisfeito com os recursos da linguagem e o runtime
  • Acho que Go é uma ferramenta coringa

    • Tudo é simples e fácil de usar
    • Dá para compilar e fazer deploy com comandos simples sem depender muito de ferramentas externas
    • Outras linguagens também têm seus pontos fortes, mas nenhuma é tão simples e sem complicação quanto Go
  • Gosto de Go, mas não amo

    • Acho que o ecossistema de ferramentas é bagunçado
    • Os módulos do Go parecem inacabados
    • Os generics ainda são primitivos
    • O ecossistema parece incompleto
  • Gosto da maioria dos aspectos do Go, mas, como alguém que escreve muito código numérico, a falta de operator overloading é uma desvantagem

    • Continuo usando Python e C++
    • Rust é atraente como substituto de C++, mas tem regras demais para substituir Python
  • A vida é curta demais até para ficar realmente bom em uma coisa só, então é preciso escolher com cuidado

    • Razões para escolher Go:
      • biblioteca padrão incrível
      • fácil de ler e escrever
      • build de binário estático único
      • não precisa de containers
      • pode ser usado em qualquer lugar (desenvolvimento web, apps desktop, desenvolvimento de jogos, embarcados etc.)