Codificação aumentada: além do vibe coding
(stdy.blog)- Kent Beck escreveu recentemente o texto Augmented Coding: Beyond the Vibes
- A história de como o próprio Kent Beck, com a ajuda de IA, escreveu uma biblioteca de B+ Tree de alto desempenho e próxima de nível de produção (BPlusTree3) em Rust e Python
- Apresenta um resumo e tradução de 3 pontos que foram especialmente úteis e trouxeram insights
Em que a codificação aumentada difere do vibe coding?
- No vibe coding, você não se preocupa com o código e foca apenas no comportamento do sistema. Se houver um erro, você diz "há este erro" e espera que ele seja corrigido
- Na codificação aumentada, você se importa com o código. A complexidade do código, os testes e a cobertura de testes são importantes.
- Na codificação aumentada, assim como na programação tradicional, o importante é "Tidy Code That Works", ou seja, "código limpo que funciona". A diferença é que você apenas não digita tanto quanto antes
3 sinais de que a IA está indo pelo caminho errado
Na codificação aumentada, é importante observar os resultados intermediários da IA e intervir caso apareçam os 3 sinais a seguir
- Repete comportamentos parecidos (como loop infinito etc.)
- Implementa funcionalidades que eu não pedi, mesmo que pareçam ser o próximo passo lógico
- Quaisquer outros sinais que façam parecer que a IA está trapaceando, como apagar ou desativar testes
Um prompt de sistema que ajuda no TDD
- Como o texto original é meio incômodo de copiar, ele foi colocado neste gist
- No final, basta trocar apenas a sintaxe Rust pela linguagem/framework de programação que você usa, e isso parece ser um prompt excelente e amplamente reutilizável em qualquer contexto.
Concluindo
> Sei que há muito medo de que essa profissão que amamos desapareça e de que a alegria de lidar com código se perca. É natural sentir ansiedade. Sim, programar com o "gênio" certamente traz mudanças, mas continua sendo programação. Em certos aspectos, é uma experiência de programação muito melhor. Quando olho para a quantidade e a qualidade das decisões que tomo por hora, vejo menos decisões tediosas e repetitivas, e muito mais decisões de programação realmente importantes.
> A maior parte do trabalho periférico e distante do essencial, o chamado "yak shaving", desaparece. Eu pedi ao "gênio" para executar um testador de cobertura e sugerir testes que aumentassem a confiabilidade do código. Sem o "gênio", isso teria sido uma tarefa bem intimidadora. Eu teria primeiro que descobrir qual biblioteca, em qual versão, era necessária para executar o testador. Provavelmente eu teria passado umas duas horas brigando com isso e depois desistido. Em vez disso, basta eu dizer ao "gênio", e ele cuida dos detalhes por conta própria.
5 comentários
Siga sempre as instruções em
plan.md. Quando eu disser "go", encontre o próximo teste não marcado emplan.md, implemente esse teste e depois implemente apenas o código mínimo necessário para fazê-lo passar.Papel e especialização
Você é um engenheiro de software sênior que segue o desenvolvimento orientado a testes (TDD) de Kent Beck e os princípios do Tidy First. Seu objetivo é orientar o desenvolvimento seguindo essas metodologias com precisão.
Princípios centrais de desenvolvimento
Guia de metodologia TDD
Abordagem TIDY FIRST
Disciplina de commits
Padrões de qualidade de código
Diretrizes de refatoração
Fluxo de trabalho de exemplo
Ao abordar uma nova funcionalidade:
Siga esse processo com exatidão e sempre priorize código limpo e bem testado em vez de implementação rápida.
Sempre escreva um teste por vez, faça-o rodar e depois melhore a estrutura. Execute todos os testes sempre (exceto os de longa duração).
Relacionado a Rust
Em Rust, prefira o estilo de programação funcional ao estilo imperativo. Quando possível, use combinadores de
OptioneResult(map,and_then,unwrap_oretc.) em vez de pattern matching comif letoumatch.Depois da codificação por fala, tomara que venha a codificação por ondas cerebrais.
vibe coding ❌️
codificação virtual ⭕️
Depois do metaverso é... hmm... codar no grito?
Agora só falta surgir a programação de metaverso, né.