36 pontos por GN⁺ 2025-01-08 | 1 comentários | Compartilhar no WhatsApp
  • Texto que resume a experiência de programar com LLMs (modelos de linguagem de grande porte) ao longo do último ano
  • Os LLMs aumentaram a produtividade, e é difícil voltar a programar sem usá-los
  • O foco está principalmente no ambiente de programação em Go, com o desenvolvimento de uma ferramenta chamada sketch.dev

Contexto

  • Tudo começou pela curiosidade em relação a uma nova tecnologia.
  • Houve fascínio pela capacidade dos LLMs de gerar respostas complexas para perguntas ou escrever código de programação
  • Isso despertou um interesse e uma sensação de potencial semelhantes aos do surgimento inicial da internet
  • Foi identificado o ganho líquido obtido quando a ferramenta gera código “geralmente correto”, junto com o esforço para aplicar isso de forma prática

Principais casos de uso

  1. Autocompletar (Autocomplete)

    • Aumento de produtividade ao deixar tarefas de codificação frequentemente repetitivas para o autocompletar
    • Em especial, os modelos FIM (Fill-In-the-Middle) são essenciais nas tarefas do dia a dia
  2. Substituição de busca (Search)

    • Responde a perguntas específicas de programação (ex.: configurar a opacidade de um botão em CSS) com mais precisão do que mecanismos de busca
    • As respostas dos LLMs podem estar erradas, mas essa limitação é aceita no uso prático
  3. Programação guiada por chat (Chat-driven Programming)

    • A área mais difícil, mas também a mais valiosa.
    • Assume tarefas iniciais como criar novos arquivos e pesquisar bibliotecas.
    • O objetivo da programação conversacional é reduzir os incômodos atuais e tornar as capacidades dos LLMs mais amigáveis para o usuário

Essência da programação conversacional

  • Por que usar conversa?

    • Útil para fornecer um primeiro rascunho quando a energia cai ao longo do dia
    • Ver e revisar um rascunho inicial é mais eficiente do que escrever tudo do zero
  • Forma de trabalhar com LLMs

    1. Definir objetivos de tarefa claros e concisos
    2. Ler, validar e corrigir o código
    3. Usar erros do compilador para resolver problemas rapidamente
  • Escrever testes de forma eficaz

    • Os LLMs são entusiasmados para escrever testes e podem montar um ambiente de testes mais completo
    • Além de testes baseados em exemplos, também é possível expandir para fuzz test

Exemplo: amostrador de quartis

  • Objetivo: escrever um algoritmo em Go para amostrar os quartis de um fluxo de dados
  • Processo
    1. Escrever o primeiro rascunho com ajuda de um LLM
    2. Melhorar o código corrigindo erros de compilação
    3. Reescrever o código de teste para criar uma estrutura mais legível

Possibilidades para uma nova estrutura de código

  • Pacotes menores, mais testes

    • Pacotes pequenos fornecem um contexto de código mais claro, sendo mais úteis tanto para LLMs quanto para humanos
    • Aumentam a possibilidade de testes independentes e de compilação bem-sucedida
  • Ex.: wrapper de API

    • Recomenda-se usar wrappers leves que implementem apenas o necessário, em vez de bibliotecas oficiais muito grandes
    • Reduz custos de manutenção e aprendizado

Direção futura: sketch.dev

  • Uma IDE Go para LLMs
    • Oferece um ambiente de programação centrado em LLMs
    • Dá suporte a feedback automatizado de testes, correção de erros do compilador, integração com módulos Go e mais
    • Reforça a colaboração entre humanos e LLMs para oferecer um ambiente mais produtivo

1 comentários

 
GN⁺ 2025-01-08
Comentários do Hacker News
  • O autor já é um engenheiro de software de nível mundial, ex-funcionário do Google e cofundador/CTO da Tailscale. É impressionante que os LLMs o tornem mais produtivo.

    • LLMs são úteis ao rascunhar novas ideias.
    • Antes, ele buscava implementações em bancos de dados, mas agora os LLMs as geram em tempo real.
  • Os LLMs reduzem a energia inicial necessária para começar uma tarefa.

    • Diminuem a barreira para tentar algo novo.
    • Não têm profundidade em nível humano, mas possuem conhecimento amplo.
    • São úteis para quem programa em várias áreas.
  • Ao usar LLMs, deve-se usá-los apenas em áreas que você conhece bem.

    • Só economizam tempo quando é fácil identificar o que está errado.
    • Ajudam nas buscas.
  • Os LLMs têm potencial como ferramenta de desenvolvimento de software.

    • O sketch.dev fornece exemplos limpos já na primeira tentativa.
    • São necessários LLMs treinados de acordo com a documentação oficial da linguagem.
    • A humanização dos LLMs é desconfortável.
  • É semelhante ao uso de mecanismos de busca.

    • Usar palavras-chave adequadas é importante.
  • Não sente vontade de usar LLMs.

    • Gosta do processo de programar diretamente.
    • Os LLMs podem aumentar os custos.
  • Para quem não é programador, os LLMs são de grande ajuda.

    • Reduzem bastante o tempo para escrever código.
    • São úteis para projetos pessoais.
  • Os LLMs são úteis para escrever aplicações simples.

    • Ao descrever um produto mínimo viável, conseguem gerar código.
    • A dívida técnica pode se acumular rapidamente.
  • Para quem programa como hobby, os LLMs ajudam.

    • Ajudam a configurar a estrutura do projeto e a gerar código.
    • Porém, instruções ambíguas podem causar problemas.
  • Os LLMs são usados principalmente para autocompletar e buscar.

    • O ChatGPT é útil para otimizar código existente.