Skip to content

Capítulo 1 — Quando escrever código deixa de ser o gargalo

A mudança que parece pequena, mas não é

Section titled “A mudança que parece pequena, mas não é”

Durante décadas, uma parte importante do trabalho de desenvolvimento consistiu em transformar uma intenção em código executável. A ideia podia estar clara na cabeça de alguém, mas ainda era necessário convertê-la, linha por linha, em uma implementação que compilasse, executasse e se integrasse ao restante do sistema.

Agentes de IA comprimem parte desse trabalho. Eles conseguem produzir implementações plausíveis, navegar por repositórios, gerar testes, modificar vários arquivos e iterar sobre erros com uma velocidade que altera a economia da atividade. O efeito mais importante não é simplesmente “programar mais rápido”. É deslocar o ponto onde o trabalho difícil se concentra. Quando uma parcela maior da implementação pode ser delegada, compreender o problema, especificar o que deve existir e verificar o que foi produzido passam a ocupar uma fração maior da responsabilidade humana. 1

Essa mudança é fácil de interpretar de maneira superficial: se escrever código ficou barato, engenharia de software ficou barata. O restante deste livro parte da hipótese oposta. Quando a geração fica barata, ficam mais visíveis as partes do trabalho que nunca foram apenas digitação: domínio, arquitetura, especificação, contexto, verificação, integração, operação e aprendizado.

A consequência prática é simples: mais código produzido não significa automaticamente mais software correto.

Há um motivo para vibe coding ser atraente. Para explorar uma ideia, testar uma interface, aprender uma API ou produzir um protótipo descartável, a redução de atrito é extraordinariamente útil. É possível chegar rapidamente a algo que funciona o bastante para responder perguntas que antes exigiriam muito mais preparação.

O problema começa quando um protótipo é tratado como produto apenas porque parece completo.

A literatura contemporânea que estamos usando como base faz essa distinção de maneiras diferentes, mas convergentes. Addy Osmani trata o protótipo gerado rapidamente como um primeiro estágio: para chegar a produção, ainda é necessário refatorar, endurecer a implementação e aplicar práticas sistemáticas de arquitetura, qualidade e deployment. 2 Ahmed E. Hassan também separa o espaço de exploração rápida do espaço de software durável, no qual processo repetível, rastreabilidade e manutenção passam a importar tanto quanto o resultado imediato. 3

Portanto, este livro não é uma crítica a vibe coding como forma de exploração. O problema é a troca silenciosa de contexto: usar uma prática adequada para descoberta como se ela fosse suficiente para construir e operar sistemas que precisam continuar corretos depois do primeiro momento de entusiasmo.

O ponto de transição é responsabilidade.

Um script pessoal descartável pode tolerar decisões implícitas. Um sistema que recebe usuários, dados, pagamentos, integrações, regras de negócio ou obrigações operacionais não pode depender apenas da memória de quem o gerou — humano ou agente.

Geração é proposta; verificação é decisão

Section titled “Geração é proposta; verificação é decisão”

Uma das confusões centrais da era dos agentes é tratar geração e verificação como se fossem a mesma atividade.

Não são.

Gerar uma implementação significa propor uma solução. Verificar significa determinar se as propriedades importantes realmente são verdadeiras: requisitos atendidos, invariantes preservados, integrações corretas, limites de segurança respeitados e comportamento observado compatível com o esperado.

Jeremy McEntire chama atenção para essa assimetria ao separar geração de verificação como trabalhos cognitivamente diferentes. Acelerar a primeira não remove a segunda e pode aumentar a superfície que precisa ser compreendida. 4

Isso muda a medida de produtividade. Linhas produzidas, tarefas fechadas e velocidade de geração capturam justamente a parte que ficou mais barata; o custo pode reaparecer em revisão, rework, integração, incidentes ou manutenção.

Há ainda uma armadilha específica: código plausível pode parecer profissional sem estar correto. Pode compilar e violar uma regra de domínio; passar testes locais e quebrar uma integração; seguir a arquitetura aparente e ignorar uma decisão registrada em outro lugar.

Por isso, neste livro, evidência terá sentido operacional: artefatos que sustentam uma decisão — testes, checks, contratos, diffs, commits, revisões, sinais de runtime, health checks, traces e evidência de recuperação apropriados ao risco.

“O agente escreveu” não encerra uma mudança. A mudança termina quando há base suficiente para aceitá-la.

O trabalho humano sobe um nível — mas não desaparece

Section titled “O trabalho humano sobe um nível — mas não desaparece”

Dizer que o gargalo muda não significa dizer que o engenheiro deixa de programar. Implementação, debugging e compreensão de código continuam importantes.

O que muda é a distribuição de esforço. Quando agentes assumem mais execução, humanos precisam ser melhores em formular intenção, reconhecer ambiguidade, definir fronteiras, escolher restrições, desenhar verificação, avaliar risco e decidir quando uma mudança pode avançar. 1

A responsabilidade não é transferida junto com a digitação. Autonomia só é útil quando acompanhada por limites, evidência e capacidade de recuperação.

Da sequência prompt → código para um sistema de engenharia

Section titled “Da sequência prompt → código para um sistema de engenharia”

O modelo mental mais simples para uso de IA em desenvolvimento é:

Prompt → Código

Ele é suficiente para uma demonstração. Não é suficiente como sistema profissional.

A sequência usada neste livro é deliberadamente maior:

Intent → Domain → Architecture → Spec → Context → Agent Work → Evidence → Review → Delivery → Operations → Learning

Esse pipeline é uma síntese operacional deste projeto. Não é apresentado como uma taxonomia universal nem como invenção de conceitos como Context Engineering, mechanical gates ou Agentic Software Engineering. Ele existe para tornar explícita uma pergunta que o fluxo prompt → código esconde: o que precisa ser verdadeiro antes e depois da geração para que uma mudança possa ser considerada engenharia?

Cada etapa reduz um tipo diferente de incerteza.

Intent pergunta por que a mudança existe.
Domain pergunta o que os conceitos significam.
Architecture define limites e dependências.
Spec transforma intenção em propriedades verificáveis.
Context fornece ao agente o que ele precisa saber.
Agent Work executa dentro dos limites definidos.
Evidence mede o que aconteceu.
Review combina verificação e julgamento.
Delivery promove um artefato identificado.
Operations observa comportamento real e permite recuperação.
Learning transforma resultado e falha em melhoria durável.

O código está dentro do processo. Ele não é mais o processo inteiro.

O livro não vai sustentar seu argumento apenas com afirmações de produtividade. O estudo longitudinal usa Change Episodes para preservar intenção, contexto, trabalho do agente, commits, testes, revisão, deploy, runtime, falhas, rollback e aprendizado quando esses elementos existirem.

Falhas e bloqueios contam como dados. Um dos primeiros episódios do projeto, por exemplo, registrou um gate pré-produção que impediu a promoção de uma imagem incompleta; o caso será analisado em detalhe quando tratarmos de gates e recovery. 5

A função dessa evidência é permitir comparar decisão e consequência, não produzir uma narrativa em que tudo sempre funciona.

“O gargalo mudou” não é uma lei universal. Ferramentas, modelos, tarefas e ambientes variam; há trabalho em que geração continua difícil e trabalho em que verificação é relativamente simples.

A afirmação mais restrita é suficiente: à medida que agentes reduzem o custo de produzir implementações plausíveis, cresce a importância relativa de decidir o que construir, limitar a superfície da mudança e produzir evidência para aceitá-la. 1 4

É desse deslocamento — e não da abolição da programação — que o restante do livro parte.

Próximo passo: colaboradores estocásticos, controles verificáveis

Section titled “Próximo passo: colaboradores estocásticos, controles verificáveis”

Se o código pode ser produzido por colaboradores cujo caminho de execução não é totalmente previsível, a pergunta seguinte não é “qual prompt usar?”.

A pergunta é: como construir confiança sem exigir que cada passo seja determinístico?

O próximo capítulo começa exatamente aí.

Neste capítulo, a principal fronteira de confiança está entre produção de uma solução plausível e aceitação da solução como mudança de engenharia. O output do agente não atravessa essa fronteira apenas porque compila ou parece correto.

Para sustentar a tese deste capítulo:

  • claims sobre mudança do gargalo devem estar ligadas a fonte integral e contexto temporal;
  • claims sobre nosso próprio método devem ser identificadas como método deste livro;
  • resultados do nosso projeto devem apontar para evidência do caso canônico.

Não é o foco operacional deste capítulo, mas a reversibilidade entra desde o início como critério: se uma mudança não pode ser entendida, identificada e revertida com segurança proporcional ao risco, o sistema de engenharia ainda está incompleto.

Rastreabilidade deste capítulo:

  • CLM-011 — Tantithamthavorn;
  • CLM-014 — Osmani;
  • CLM-015 — McEntire;
  • CLM-016 — Hassan;
  • CLM-010 — case evidência, citado apenas como antecipação do caso real.

Fontes de acesso limitado não foram usadas como autoridade factual neste capítulo.

Recursos previstos:

  • mapa interativo do pipeline completo;
  • Evidence Explorer;
  • link para o Change Episode citado;
  • comparação visual entre Prompt → Código e o pipeline de Engenharia Agêntica.

  1. Kla Tantithamthavorn, Agentic Software Engineering (2026), front matter, p. 2. Rastreabilidade interna: CLM-011. ↩ ↩2 ↩3

  2. Addy Osmani, Beyond Vibe Coding (2025), Summary and Next Steps, pp. 134–135. Rastreabilidade interna: CLM-014. ↩

  3. Ahmed E. Hassan, Agentic Software Engineering (2026), Vibe coding has a place, but it is not the construction site, pp. 36–37. Rastreabilidade interna: CLM-016. ↩

  4. Jeremy McEntire, Beyond Code (2026), Chapter 1: The Inversion, p. 11. Rastreabilidade interna: CLM-015. ↩ ↩2

  5. Evidência do estudo longitudinal, CE-2026-005; evidências EVID-CE-2026-005-01, EVID-CE-2026-005-02, EVID-CE-2026-005-03, EVID-CE-2026-005-04, EVID-CE-2026-005-05. Rastreabilidade interna: CLM-010. ↩