16 pontos por GN⁺ 2025-02-07 | 6 comentários | Compartilhar no WhatsApp
  • Entre engenheiros de software, há basicamente dois grandes posicionamentos sobre LLMs
    • Alguns acreditam que se trata de uma tecnologia revolucionária capaz de transformar a indústria
    • Outros, por outro lado, enxergam isso apenas como uma miragem superestimada
  • O autor afirma que, pessoalmente, tem usado LLMs de forma útil e apresenta como faz isso de maneira eficaz

Escrevendo código de produção

  • Usa sempre o recurso de autocompletar do Copilot ao escrever código
    • A maior parte das sugestões de autocompletar corresponde a boilerplate repetitivo, como argumentos de função ou definição de tipos
    • Na sua principal área de trabalho (por exemplo, Ruby on Rails), considera que o código que ele próprio escreve é melhor
  • Em áreas nas quais tem menos especialidade, aceita com mais frequência a lógica sugerida pelo Copilot
    • Exemplo: quando precisa fazer pequenas alterações táticas em linguagens como Golang ou C
    • Com a ajuda do Copilot, entende rapidamente a sintaxe e o estilo idiomático de linguagens com as quais tem menos familiaridade
    • Como não domina tanto essas áreas, faz questão de que um especialista revise o resultado
    • Dessa forma, consegue produzir algo no nível de um “estagiário inteligente”, mas a etapa de validação continua sendo indispensável

Escrevendo código descartável

  • Usa LLMs de forma muito mais ativa ao escrever código descartável que não será colocado em produção
    • No caso de código feito para pesquisa, executado uma vez e depois descartado, a necessidade de manutenção é pequena
    • Exemplo: buscar dados públicos de uma API, classificá-los e aplicar regex para fazer uma validação simples
  • Diz que, nesses casos, conseguiu avançar de 2 a 4 vezes mais rápido com LLMs
  • Para escrever código de uso único, LLMs são muito eficientes

Aprendendo novas áreas

  • Considera este o caso de uso mais valioso: usar LLMs como um professor particular sob demanda
    • Exemplo: ao aprender Unity pela primeira vez, faz perguntas continuamente a modelos como o ChatGPT-4o
    • Não pergunta apenas “como X funciona?”, mas também faz perguntas de acompanhamento como “qual é a relação entre X e Y?”
    • Também usa para verificar sua compreensão, com perguntas como “o que eu entendi está correto?”
  • Durante o aprendizado, copia e cola diretamente suas anotações para pedir revisão
  • Preocupação com alucinações (hallucination)
    • Desde o GPT-3.5, sentiu que alucinações em geral não têm sido um problema tão marcante
    • Como a maior parte das áreas que aprende no dia a dia já é bem estabelecida, o risco de respostas erradas foi baixo
    • Até agora, nunca aconteceu de aprender informação incorreta por meio de um LLM

O conserto final de bugs

  • Quando fica realmente travado, mostra o arquivo inteiro e a mensagem de erro para ferramentas como Copilot ou Claude e pede ajuda
    • Na maioria dos casos, o LLM se confunde e não consegue oferecer uma solução adequada
    • Ainda assim, houve algumas ocasiões em que o LLM apontou algo que ele tinha deixado passar, economizando tempo
  • Como o desempenho não é tão bom quanto o esperado, ele não insiste várias vezes e costuma perguntar só uma vez

Correção de typos e erros de lógica

  • Não pede ao LLM para redigir completamente seus textos (ADRs, resumos técnicos, documentação interna etc.)
    • Acredita que consegue escrever de forma mais clara por conta própria e não gosta do estilo típico de escrita dos LLMs
  • Às vezes insere um rascunho no LLM para revisão gramatical ou correção de typos e recebe feedback
    • O LLM costuma identificar bem erros ortográficos e, às vezes, sugere perspectivas interessantes
  • Em vez de pedir várias rodadas de sugestões, normalmente verifica apenas uma rodada de feedback mais geral

Resumo

  • Escopo de uso de LLMs
    • “Autocompletar inteligente” com Copilot
    • Pequenas alterações táticas em áreas pouco conhecidas (com revisão obrigatória de um especialista)
    • Escrita de código de pesquisa para uso único e descarte
    • Fazer perguntas sem parar ao aprender novas tecnologias ou domínios
    • Tentar resolver bugs como último recurso quando estiver travado
    • Correção geral de ortografia/typos e falhas de lógica em rascunhos de documentos em inglês
  • Onde ainda não usa LLMs
    • Delegar a escrita de um Pull Request inteiro em áreas que conhece bem
    • Escrever documentos técnicos completos, como ADRs
    • Entender arquiteturas complexas dentro de grandes bases de código

6 comentários

 
fortune 2025-02-07

Isso é... um engenheiro staff...?

 
smallzoo 2025-02-10

Realmente parece um staff engineer do GitHub.

 
vwjdalsgkv 2025-02-07

Eu também não acho que isso pareça estar no nível de um staff engineer... acho que o correto seria mais o nível de assistente.

 
flaps3 2025-02-07

Há um erro de tradução no título: não é "como um staff engineer", e sim "como staff engineer".

 
fortune 2025-02-07

👍!!

 
GN⁺ 2025-02-07
Opiniões no Hacker News
  • Como "staff engineer", os LLMs são muito fracos para escrever código idiomático ou ensinar, e acabam consumindo mais tempo em revisão de código. Usar LLMs para escrever código traz o risco de aprender más práticas e de passar a depender de volume de código, boilerplate e resultados não determinísticos. LLMs podem ser úteis para gerar ideias ou explorar informações não confiáveis, mas depender deles para geração de código é loucura.

  • Ao corrigir bugs, há quem use o Copilot anexando o arquivo inteiro e colando a mensagem de erro para pedir ajuda. Modelos de "reasoning" entregam resultados muito melhores do que isso; quando se cola toda a base de código e se explica a mensagem de erro, eles frequentemente encontram a causa raiz do problema.

  • LLMs são úteis para código boilerplate ou autocompletar, mas têm limites em tarefas complexas, porque não entendem a lógica de negócio. Ainda assim, são muito úteis para escrever rapidamente documentação corporativa.

  • Trabalho no GitHub e tive experiência participando diretamente do Copilot.

  • Se você usa uma linguagem com tipagem estática e uma boa IDE, o recurso de "smart auto complete" pode ser menos útil. O autocompletar do Intellij dá a sensação de ler sua mente na maioria dos casos.

  • Uma reflexão sobre por que engenheiros de software têm sentimentos negativos em relação aos LLMs. Muitas pessoas tendem a julgá-los por um padrão absoluto, e isso limita sua capacidade de usar a ferramenta de forma eficaz.

  • Como usar IA na manutenção de projetos Python. Ela ajuda a converter para Python abordagens usadas em outras linguagens.

  • A experiência de usar o ChatGPT para escrever código utilitário foi boa. Em code reviews, ele frequentemente aponta problemas triviais, mas ainda assim tem valor quando encontra pontos de melhoria.

  • Depois de migrar do VSCode para o Cursor, o modo agente com o Sonnet foi impressionante. Quando um desenvolvedor experiente o conduz, isso pode contribuir muito para aumentar a produtividade.

  • Uso LLMs para ajudar a corrigir typos e erros lógicos em documentos. Ajusto o Graphite Reviewer para focar em bugs e erros reais. A IA não é perfeita, mas é útil como ferramenta de correção de código.