- 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
Isso é... um engenheiro staff...?
Realmente parece um staff engineer do GitHub.
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.
Há um erro de tradução no título: não é "como um staff engineer", e sim "como staff engineer".
👍!!
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.