Os limites da geração de código por IA e um estudo de caso pessoal sobre a perda da sensibilidade humana
(github.com/jackdoe)- Biblioteca de implementação do protocolo SWD para depurar o núcleo RP2350 RISC-V, com uma arquitetura em que um Raspberry Pi Pico2 é usado para transformar outro Pico em probe
- Cerca de 80% do código foi gerado por IA (Claude); o autor criou o protótipo básico com um osciloscópio e a documentação, depois deixou a IA expandir o código
- Durante o projeto, o autor vivenciou forte repulsa e ceticismo por causa da estrutura de tokens sem sentido do código gerado por IA, da perda de contexto e da perda do senso de pertencimento ao código
- Por outro lado, teve experiências positivas ao usar a IA como ferramenta auxiliar para análise de documentação, decodificação de dados e geração de structs
- Este caso expõe os problemas de qualidade, sensibilidade e propriedade no código gerado por IA e levanta questões fundamentais sobre a essência da programação e o papel humano
0. VIBE CODE WARNING
- Cerca de 80% de todo o código foi gerado por IA (vibe coded), e grande parte do README também foi gerada automaticamente
- O autor implementou diretamente, com base no osciloscópio e na documentação, itens como SBA, leitura/escrita de registradores, comandos abstratos e PROGBUF, e depois delegou à IA a transformação disso em biblioteca
- À medida que o código cresceu de 1 mil para 4 mil linhas, ele perdeu completamente a estrutura e o significado do código, e deixou de sentir que era algo escrito por ele
- A IA interpretou
dap_read_mem32de forma errada, o que gerou em massa erros de protocolo e código ilógico - No fim, quase 10 mil linhas de código ficaram prontas em 10 horas, mas não houve qualquer sensação de realização ou crescimento
A diferença entre código humano e código de IA
- O código escrito por humanos é composto de tokens com intenção e propósito, o que permite compreendê-lo; já os tokens do código de IA parecem combinações sem significado, difíceis de ler
- Parte do código de IA mostra qualidade superior à humana, mas a linha logo abaixo pode ser um código errado que só parece plausível à primeira vista
- Essa falta de uniformidade e a perda de confiança sensorial paralisam a capacidade de julgamento do programador
- Quanto maior o código, mais desaparece a sensibilidade (taste) para perceber se ele é bom ou ruim, e o modelo mental e o senso de propriedade entram em colapso
Emoções humanas e ceticismo
- O autor levanta a pergunta: “Isso é programação?”, expressando repulsa e vergonha
- Na era em que a IA escreve código no lugar das pessoas, ele relata uma confusão existencial sobre o que os humanos ainda criam e até onde devem intervir
- Ele já não tem certeza nem de que simplesmente “não escrever código” seja progresso, nem de que “não modelar o problema” seja eficiência
- Diz que ainda quer construir algo com as próprias mãos, mas que, em um ambiente de desenvolvimento centrado em IA, esse significado ficou nebuloso
Experiências positivas com o uso da IA
- O autor avalia como eficiente e satisfatório o uso da IA em análise de documentação, decodificação de dados de osciloscópio e geração automática de structs em C
- Em especial, ao ler o primeiro registrador e acessar a memória via SBA, ele sentiu uma verdadeira sensação de realização
- Ou seja, é possível ter uma experiência positiva quando a IA é usada como assistente, e não como autora do código
Reflexão final
- A geração de código por IA é rápida, mas provoca a perda de significado, sensibilidade e propriedade
- Quando desaparece a “sensibilidade para o gosto de um bom código (taste)” que os humanos têm, a própria essência da programação também vacila
- O autor encerra dizendo esperar que esse fenômeno seja apenas uma fase transitória, e admite que ele mesmo não sabe o que seria uma “programação melhor”
As seções técnicas posteriores do texto original (1~20) são uma documentação detalhada da implementação do protocolo de depuração RISC-V do RP2350, incluindo a hierarquia SWD, registradores DAP/DAPC, execução via PROGBUF, acesso SBA, controle de hart, tracing, reset e estrutura dual-hart, cobrindo uma especificação técnica completa de toda a pilha de depuração.
No entanto, o tema central é um estudo de caso pessoal (Vibe Code Warning) sobre a desconexão entre o código gerado por IA e a sensibilidade humana.
1 comentários
Comentários do Hacker News
Entendo o sentimento de quem diz que “a IA tirou a diversão da programação”, mas acho que ‘fazer’ importa menos do que ‘concluir’
No passado, o acendedor de lampiões perdeu o emprego por causa da lâmpada elétrica, mas no fim o importante era fornecer luz para a cidade
Para mim, a IA é uma ferramenta para concretizar ideias e produzir resultados. Ainda dedico tanto tempo e esforço quanto os ‘programadores de verdade’, mas o foco está em definição do problema, modularização, testes, correção de bugs e melhoria iterativa
O importante é construir um mundo em que os seres humanos possam sentir significado, dignidade e prazer.
Se eu comesse uma comida deliciosa sabendo que quem a fez sofreu, ou que foi feita por robôs controlados por forças mal-intencionadas, eu não a desejaria.
A sociedade existe para os seres humanos, não é uma simples checklist de eficiência
Em projetos pessoais, tudo bem, mas em ambientes com clientes, usuários ou acionistas é preciso ter resultados comprováveis
A analogia com os lampiões não é apropriada. IA não é um sistema físico como a eletricidade, e sim software.
No fim, o que importa é resolver o problema. Se não resolve, é apenas trabalho
Muita gente não programa apenas para criar software útil, mas pelo prazer de criar
Os “programadores de verdade” também passam o tempo pensando, definindo, testando e corrigindo
Coisas como um ‘dispensador inteligente de fio dental’, um comprador automático de papel higiênico ou bots tipo Clippy são desperdício de tempo e energia
Mais do que simplesmente obter um resultado, há uma satisfação grande no processo de aprender e compreender
Lendo o manual de sobrevivência Adrift, 76 Days at Sea, senti que conhecimento profundo pode ser a diferença entre a vida e a morte
Isso também se parece com a questão de hospedar seus próprios dados ou entregá-los a um serviço centralizado
Quando encontro na internet um texto que expressa perfeitamente o que penso, isso me dá uma sensação real de consolo
Obrigado por falar de uma experiência humana, em vez de só aumentar o ruído de “ajuste o prompt assim”
Para sair desse estado, preciso dormir bem uma noite
Ela dá respostas quase certas, mas tem uma capacidade viciante psicologicamente parecida com a de uma máquina de aposta
Alguém disse que “escreveu 10 mil linhas de código com IA em 10 horas, mas ficou horrível”, e essa experiência muda totalmente dependendo da abordagem
Estruturação de prompts, planejamento, revisão, testes e controle de ritmo variam de pessoa para pessoa
Muitos desenvolvedores iniciantes tentam uma abordagem improvisada conhecida como vibe coding e fracassam
O desgaste está grande e estou dando um tempo; um dia pretendo construir meus próprios agentes
Acho arriscado deixar isso nas mãos de big techs como OpenAI, Microsoft e Anthropic
No fim, acho que é só mais um bordão da moda
Parece uma fuga para gestão de projeto só porque você não quer aprender uma nova biblioteca
Até aquele texto famoso “Just Talk to It” deixava a desejar nos detalhes
Quanto mais improvisado, mais planejamento rigoroso é necessário. Esse é o ponto do que você está dizendo?
O código publicado já não é mais necessariamente feito por humanos
Se esse código voltar a entrar nos dados de treinamento, existe o risco de o mundo se encher de ainda mais resultados sem sentido
Já houve casos em pesquisa linguística em que a quantidade de texto gerado por máquina tornou a coleta de dados praticamente inútil
Na maioria dos casos, os humanos ainda estão dando a direção
Claro, se uma criança de 12 anos digitar “yolo 3d game now”, eu me preocupo, mas ao mesmo tempo isso parece legal
Ler código feito por vibe coding dá uma sensação parecida com “English as She is Spoke”
A gramática está certa, mas o código não parece linguagem humana
Também penso algo parecido
Quando desenvolvo um app, normalmente passo dias formando um modelo mental dele na cabeça, e até no banho fico reformulando a estrutura
Mas com vibe coding esse contexto interno desaparece, e ler o código vira sofrimento
Já ler código que eu mesmo escrevi me dá prazer
Entendo as conexões entre sistemas e o fluxo de dados, mas a implementação detalhada fica nebulosa
Tive uma experiência parecida. Os LLMs reduziram a diversão de programar
Minha rotina agora é “escrever prompt → esperar um pouco → repetir → revisar código”
Entendo a estrutura do código, mas por não mexer nele diretamente com as mãos, a profundidade da compreensão fica rasa
Talvez com o treinamento certo isso mude, mas ainda não cheguei lá
Também é útil para gerar testes. Escrevo eu mesmo um bom teste e mando a IA fazer o resto para economizar tempo
Isso me ajuda a entender os limites e depois reescrever com um design de sistema melhor
Mesmo quando o código do LLM é prolixo, ainda me parece melhor do que o código bizarro deixado por desenvolvedores do passado
O texto exagera um pouco, mas eu também concordo
LLMs são úteis para entender e resumir código existente, autocompletar e prototipagem por não desenvolvedores, mas
nunca deveriam ser usados para escrever código de produção
A solução é fazer grounding do modelo
Em código, desenvolvimento orientado a testes (TDD) é a forma de fazer isso
Escreva primeiro os testes, confirme que eles falham, valide por que falham e só então faça o modelo escrever o código
Assim, você cria uma especificação comportamental do código, que depois serve como documentação para pessoas ou agentes
Depois de ler o README do GitHub até o fim, vi que o autor admitia que 3/4 do código eram gerados por IA, mas mesmo assim reivindicava direitos autorais
Já existe jurisprudência de que conteúdo não criado por humanos não pode receber proteção autoral por lei