Me deparei recentemente com um estudo muito interessante: Can Language Models Rebuild Programs From Scratch?
O ProgramBench, criado pela Meta FAIR, Stanford e Harvard, propôs um teste simples, mas extremamente revelador para avaliar IA em programação: dar ao modelo um programa compilado e sua documentação, remover o código-fonte e pedir que ele reconstrua o software do zero. Foram 200 tarefas, indo de pequenas ferramentas de linha de comando até projetos como FFmpeg, SQLite e PHP.
O resultado?
Nenhuma tarefa foi totalmente resolvida. Mas o ponto mais interessante não foi apenas o fracasso em si. Foi como os modelos falharam.
Mesmo quando o resultado “funcionava”, a estrutura gerada raramente se parecia com um software real. Havia menos arquivos, pastas mais simples, funções mais longas, menos decomposição e, principalmente, menos arquitetura.
Em outras palavras: modelos de linguagem estão ficando extremamente bons em escrever código. Mas ainda parecem frágeis como designers de software.
E essa distinção importa muito.
Escrever código é execução. Projetar software é julgamento.
Um bom design exige decomposição, abstração, análise de trade-offs, estruturação e a capacidade de entender o que deve existir antes mesmo da primeira linha de código.
Hoje, vejo o prompting como a camada mais alta de abstração de programação que já tivemos. A diferença é que, agora, código e dados estão cada vez mais próximos.
Então, onde está a próxima camada de valor? Na orquestração.
A IA já consegue gerar sintaxe. O verdadeiro desafio agora é construir sistemas que ajudem a IA a pensar, dividir problemas, testar, revisar e organizar soluções como um engenheiro de software.
Porque o futuro da engenharia me parece que não será apenas sobre pedir código melhor. Será sobre desenhar sistemas melhores para que a IA consiga construir com mais critério.
Qual parte do processo de desenvolvimento você acredita que ainda depende mais do julgamento humano?