- Uncle Bob, famoso por "Clean Code", declara que chegou a era em que a IA escreve código muito mais rápido do que os desenvolvedores e pede uma mudança no papel dos desenvolvedores
- Como a IA consegue concluir em 5 minutos um trabalho que antes levava um dia, a era em que desenvolvedores escreviam código diretamente acabou
- Mas isso também dá aos desenvolvedores um poder enorme, permitindo fazer coisas que antes eram inimagináveis
- Cobertura de testes sempre foi dolorosa, mas agora os desenvolvedores podem instruir a IA a garantir cobertura de testes e usar um mutation tester para verificar a eficácia real dos testes
- Em combinação com ferramentas de análise de complexidade ciclomática (cyclomatic complexity), é possível instruir a IA a elevar a qualidade do código a um nível muito superior ao de antes
Transcrição do vídeo anexado
Vamos encarar a realidade. A IA escreve código várias vezes mais rápido do que vocês. O que levaria um dia para vocês, a IA termina em 5 minutos. Acabou. A era em que vocês escrevem código diretamente acabou. Eu sei. Aceitem isso.
Mas aqui está a questão. Isso, na verdade, dá a vocês um poder enorme. Porque agora vocês podem fazer coisas que antes nem sonhavam ser possíveis.
Pensem, por exemplo, em cobertura de testes. Eu sei o quanto isso era doloroso. Era preciso escrever todos aqueles testes irritantes. E, ainda assim, ter testes não significava que o código realmente funcionava. Vocês rodavam a cobertura de código, sorriam de lado e diziam: "É, tudo bem, mas isso não quer dizer que o código funciona... só quer dizer que ele foi executado".
Agora dá para corrigir isso. Porque vocês ganharam horsepower. Mandem a IA cobrir o código e, depois, executem um mutation tester. Sim, isso é uma ferramenta. E essa ferramenta também pode ser pedida à IA para criar. Ela faz isso em 5 minutos. Depois, façam a IA executar a ferramenta. Essa ferramenta altera o código-fonte e roda todos os testes. Se os testes não falharem? Então ela escreve testes que façam esses casos falhar. Aí, sim, vocês passam a ter cobertura de testes de verdade.
Eu juro, vocês passam a ter cobertura de testes de verdade.
E sabem mais o que vocês podem fazer? Podem analisar a qualidade do código. Dá para escrever uma ferramenta que examine a complexidade ciclomática do código. Na verdade, já existe uma excelente ferramenta. É uma ferramenta de 20 anos. O nome dela é CRAP. É um bom nome. Não sei do que é sigla. Nem quero saber. É a combinação de cobertura de testes com complexidade ciclomática. Vocês podem mandar a IA reduzir a pontuação de CRAP para 5 ou menos, 4 ou menos. Aí a IA vai dividir funções grandes em partes menores e cobrir tudo com testes.
Pensem no poder que vocês têm. Vocês podem elevar a qualidade do código a um nível nunca visto antes.
Eu sei. Eu sou aquele velho cara do Clean Code. Mas vou ser honesto. Se vocês colocarem a IA para trabalhar pesado, vão conseguir tornar o código muito, muito mais limpo.
2 comentários
Opiniões do Reddit
Parece a voz de vilão que Mark Hamill costuma fazer
Isso realmente parece um desenvolvedor calejado
if (f == -1) { printf("open failed\n"); exit(1); }A IA vai escrever isso no meu lugar e ainda vai adicionar tipos de erro separados e mensagens com parâmetros significativos para todos os motivos possíveis de falha. A IA não é preguiçosa como eu, então agora posso focar na lógica de manipulação de arquivos
Acho que entramos numa era em que a maior parte do código é boilerplate. O que importa é a capacidade de comunicar bem os requisitos e de continuar verificando a segurança (OWASP) e o desempenho do código gerado
É extremamente não determinístico, e até os modelos mais recentes muitas vezes oscilam ao longo do dia entre “isso aqui já serve” e “quase não dá para usar”
Linguagem natural sempre foi, é e provavelmente continuará sendo ambígua e vaga, então é bem possível que esse problema nunca seja resolvido. É por isso que usamos fórmulas matemáticas, e não “hmm, some X a Y e quando chegar em Z pense bem”
Estou justamente tentando fazer o Claude lidar bem com permissões agora, e a forma como ele implementou novas ações e mudanças de permissão foi um exemplo perfeito de código que “meio que funciona, mas vai quebrar algum dia”
O Claude escreve bem, mas isso não significa que sempre escreva um bom código
O que você precisa entender sobre IA é que ela não é melhor que pessoas na parte de “pensar”; ela só é mais rápida. Se você mandar, ela geralmente faz do jeito que a maioria das pessoas faria, e em código isso com frequência não é muito bom
Sempre foi possível contratar vários desenvolvedores, explicar o que você queria e receber algo cheio de bugs, onde uma mudança nova quebra outras três partes. O Claude faz exatamente a mesma coisa se você largar ele sozinho. Já vi isso na prática, e a resposta sempre é entrar, ler o código escrito e mandar refatorar para algo menos frágil e mais robusto
Enquanto você usar o Claude para escrever código, ainda vai precisar da capacidade de julgar se aquele código está bom. É igual deixar alguém escrever seu currículo ou seus documentos contábeis: você ainda precisa conferir o resultado
Talvez não escrevamos código do jeito antigo, mas a capacidade de ler o que foi gerado e revisar à luz da experiência continua sendo necessária
O problema é que todo mundo acha que, por falar inglês, pode mandar o Claude criar um programa. Mas falar inglês não significa que você consegue mandar o Claude escrever uma tese de doutorado refutando a radiação Hawking. Você não tem nenhuma forma de saber se o resultado está certo
Hoje há mais programadores empregados do que quando a Microsoft introduziu scaffolding. Também havia mais programadores quando linguagens como Basic permitiram que as pessoas digitassem instruções legíveis por humanos em vez de assembler, e mais do que na época anterior, quando se perfurava código em cartões
Os computadores sempre foram programados com conjuntos de instruções cada vez menos restritivos e mais fáceis de ler e escrever
Bob Martin é alguém que eu respeito, mas acho que desta vez ele está errado. As pessoas ainda vão escrever instruções para computadores. A diferença é que não será mais um conjunto limitado e específico de comandos, e sim uma linguagem muito menos restritiva e muito mais legível para humanos
Nada acabou. Está apenas começando. A programação lançou uma nova linguagem, e o nome dela é English
Já estamos produzindo uma quantidade recorde de software, e isso vai acelerar ainda mais. Vamos escrever mais código do que antes e, mesmo ficando muito mais rápidos, no fim haverá mais gente trabalhando com software de algum jeito. O custo de produzir caiu demais, o que se aproxima do paradoxo de Jevons
Achar que “desta vez é diferente” é arrogância, e até gente inteligente tem dificuldade de imaginar o que significa crescimento exponencial multifacetado. Não são só os modelos de linguagem de grande porte que estão melhorando
Então acho que isso faz sentido
Esse é o pico da bolha, certo? Estou cravando isso aqui agora ☎️
A forma como ele fala exige anos de entendimento sobre métricas de qualidade de software, testes profissionais e qualidade de código
Ainda não temos ferramentas suficientes para isso. Pelo menos, elas ainda não foram amplamente adotadas. Nem tenho certeza de que a indústria vá adotar
As práticas de CI/CD também não eram tão difíceis de implementar, mas muitas empresas nunca adotaram tudo isso e continuaram trabalhando de forma ineficiente contratando mais gente. Vai continuar assim no futuro, a menos que a IA cuide de tudo isso por padrão. As ferramentas atuais, como Claude Code, Cursor e Codes, não bastam
Parece Matrix com esse cara como um Agent
Para guiar a IA direito, você precisa de profundidade técnica de altíssimo nível. Se você simplesmente mandar a IA continuar adicionando código, isso não vai ser manutenível
Além disso, ainda não ouvi falar de um único produto de mercado operado só por IA. Então vamos com calma
Daqui a pouco vão querer fazer vibe coding também com o cérebro humano
As opiniões no reddit parecem bem negativas ou cheias de sarcasmo.
Na prática, quando graças à IA estamos finalmente avançando de forma concreta em partes que foram adiadas por tanto tempo, como cobertura de testes e testes E2E, essa postura parece até cínica.