5

Acho que estamos desperdiçando IA na parte errada do desenvolvimento de software

Passei o último ano construindo ferramentas de desenvolvimento assistidas por IA, e comecei a questionar uma premissa que praticamente toda ferramenta de código com IA parece adotar.

A premissa é: a IA deve gerar tudo.

Depois de centenas de experimentos, começo a achar que isso é ineficiente.

Coisas como:

  • autenticação
  • RBAC
  • CRUD
  • roteamento
  • estrutura de projeto
  • migrations
  • validação
  • scaffolding de API

são problemas determinísticos.

Já existem padrões e boas práticas bem estabelecidos para a maioria deles. Ainda assim, continuamos pedindo para LLMs regerarem o mesmo boilerplate repetidamente.

Isso significa:

  • mais prompts
  • mais tokens (que hoje pagamos planos subsidiados, que em algum momento acabarão)
  • tempos de geração maiores (que são muito menores em relação aos que nós conseguiríamos programando)
  • implementações inconsistentes
  • mais debugging

Meu raciocínio atual é quase o oposto.

Gere a fundação da aplicação de forma determinística. Depois deixe a IA focar no que realmente é difícil para humanos:

  • regras de negócio
  • workflows
  • lógica específica do domínio
  • melhorias de UX
  • edge cases
  • refinamento iterativo

Em outras palavras:

Use geração determinística para a infraestrutura da aplicação (CRUDs, RBAC, Login etc).
Use IA para a criatividade.

Fico curioso para saber se mais alguém chegou à mesma conclusão depois de trabalhar bastante com ferramentas de código com IA.

Estou deixando passar alguma coisa? Estou validando uma tese.

Carregando publicação patrocinada...
6

Concordo plenamente, e acho que a tese fica ainda mais forte quando você percebe que a "geração determinística" que você tá procurando já existe há 20 anos: chama-se framework.

O erro da maioria das ferramentas de código com IA é tratar o LLM como se ele estivesse escrevendo numa folha em branco. Aí sim ele precisa reinventar auth, RBAC, migrations, roteamento, e reinventa diferente toda vez. Mas se a fundação já é opinativa, o LLM não gera boilerplate: ele preenche lacunas dentro de uma convenção. É uma tarefa completamente diferente, e muito mais barata.

Na prática, o framework que mais tenho gostado nesse cenário é o Laravel, por três motivos:

  1. Convenção forte = menos entropia. Eloquent, migrations, policies, form requests, filas, jobs. O LLM não decide onde as coisas moram, ele só escreve a regra de negócio. Isso mata boa parte das "implementações inconsistentes" que você citou.

  2. Scaffolding determinístico de verdade. artisan make:*, Breeze/Fortify/Jetstream, Filament pra painel. Auth e CRUD saem prontos e iguais, sem token nenhum de LLM.

  3. O ecossistema já veio pra IA. O Laravel Boost expõe guidelines e skills próprias pro agente (docs versionadas do teu projeto, convenções, tinker, leitura de schema). É literalmente a documentação do framework virando contexto executável.

Com pouquíssimo harness próprio, eu consigo consistência absurda entre projetos, MVP saindo em horas e o que pra mim é o ponto mais subestimado, legado gigante continuando de pé. Manutenção de projeto antigo é onde o "IA gera tudo" mais quebra a cara, porque ali o valor não está em gerar código novo, está em respeitar as decisões que já existem. Framework opinativo dá esse contrato de graça.

Um adendo à sua tese: não é só custo de token e latência. É superfície de revisão. Cada linha que o LLM gera é uma linha que alguém precisa revisar. Código que veio de um make:policy eu não reviso — eu confio na convenção. Então geração determinística não economiza só inferência, economiza atenção humana, que é o recurso realmente escasso.

Onde eu colocaria a fronteira, resumindo: determinismo pro que tem resposta certa conhecida; LLM pro que tem resposta certa desconhecida. Regra de negócio, workflow, edge case, UX, refatoração de legado sem doc, isso é onde o modelo paga o próprio custo.

Você não tá deixando passar nada. Tá redescobrindo, via LLM, o motivo pelo qual frameworks opinativos ganharam de "monte tudo do zero" na década passada. A IA só aumentou o preço de não ter convenção.

4

Meus 2 cents,

Parabens pelo post !

Faz alguns meses que estou quebrando a cabeca com esta questao e estava tentando resolver via harness (skills + SPECs/DTOs/Contratos/etc + context7), mas nao tinha chego a nenhum modelo realmente eficiente.

Dito isso, gostei da forma como voce resolveu a questao: atraves de templates/blueprints de codigo com jinja2/tera (?) e samples de entidades/atributos de banco de dados.

Desde entao tenho procurado estudar um pouco mais o assunto com foco em blueprints (prologin/iorgen ?, swagger-codegen ?, yellicode ?, jondot/hygen ?, tatkhanhgia/Agentic-Spec-Engine ?, dorian68/OptiQuantAI ?)

Dei uma olhada em alguns artigos (p.ex. Code Templates Meet Large Language Models, https://d-nb.info/1279397179/34, https://www.rocket.new/blog/the-best-strategies-for-structured-ai-code-generation, https://www.researchgate.net/publication/341617522_A_template-based_code_generator_for_web_applications, https://www.softwareseni.com/specification-templates-for-ai-code-generation-from-first-draft-to-production, https://www.semanticscholar.org/paper/Template-based-Automatic-code-generation-for-Web-Ullah-Inayat/7efa6dda55ce6bbca6973a0c99b0d4dff8376895, https://www.linkedin.com/pulse/ai-driven-mulesoft-code-generation-using-prompt-samir-benjamin-ndzuf, https://dl.acm.org/doi/abs/10.1145/3640537.3641567, https://dl.acm.org/doi/10.1145/3786583.3786902) mas a maioria eh pre-LLMs ou nao se enquadra de forma adequada ao proposito.

Um pouco mais recente foram estes:

So comentando, nos idos dos anos 2000 eu ja tinha tentado algo para geracao de paginas web usando XML/XSLT (p.ex. da ideia https://imatix-legacy.github.io/twp/codegen.pdf), mas nao fui adiante justamente devido as limitacoes da epoca.

Enfim, acho a ideia bem interessante, tua solucao provavelmente eh a mais robusta que vi ate agora - mas por alguma razao nao vejo ninguem na gringa na mesma pegada, o que acho no minimo curioso.

Saude e Sucesso !


Este post foi favoritado via extensão TABNEWS FAVORITOS

Tem curiosidade sobre IA ? Da uma olhada no meu LIVRO: IA PARA ENGENHEIROS

3

Não preciso dizer que seu comentário me deixa super feliz. Muito obrigado mesmo.

Minha vida toda lidei com geração de código. Meu primeiro contato com geração de código foi em meados dos anos 90, quando trabalhei com um sistema operacional/banco de dados/linguagem de programação chamada Pick. Havia um utilitário chamado Pick Design, que gerava código em Pick Basic (https://en.wikipedia.org/wiki/Pick_operating_system)

Desde lá já gerei código em tudo que é linguagem e pra tudo que é linguagem e framework.

Mas acho que o ClickMVP foi o melhor resultado até hoje. E defendo realmente que pra infra basica de aplicações, é um desperdício de tempo e dinheiro usar IA. IA é uma ferramenta muito mais poderosa para ser desperdiçada com coisas que podem ser geradas de forma determinística.

Recomendo Jinja fortemente se estiver pensando em uso de templates. Já tentei fazer meu próprio sistenma de templates, mas Jinja é um achado.

Mais uma vez obrigado pelo comentário.

3

Aqui na fiiiirma eu resolvi e e duas formas, não por necessidade de ter as duas formas, mas pura frescura kkkkkkk.

criei uns 500 boilerplates e uns 1000 snippets nas stacks que uso. Tudo organizadinho por categorias etc em uma pasta.

A forma 1: no start do projeto, uso uma cli própria que configura todo o ambiente de dev, repositório git, etc de forma deterministica e com base no tipo de projeto, já monta o "template" dele usando a biblioteca citada antes.

A forma 2: criei um workflow que chamo pela IA, ela segue o passo a passo e chama umas skills que fazem exatamente o mesmo trabalho acima, só que gastando tokens, pq eu sou gado da anthropic. Hihihiji. 🤣

2

Eu gosto de usar frameworks como quase tudo que construo é on-line uso flask ou django, porque eles ja tem essas implementações todas de forma deterministica. Já em software puro eu criei skills e MCPs com as regras deterministicas seguindo o mesmo padrão sempre.

2

É exatamente isso, e a escolha do framework é metade da resposta. Django já entrega auth, admin, migrations e convenções de ORM, então boa parte das decisões está tomada antes do modelo ver qualquer coisa. Sobra pouco pra ele errar.