Capítulo 01 Método
Como pensar o futuro desta profissão sem chutar
Nenhuma área tem tantas previsões erradas por metro quadrado quanto esta — e quase todas erram do mesmo jeito. O método começa por entender esse jeito.
1.1 O que esta apostila é — e o que ela não é
Esta apostila é sobre a disciplina, não sobre a carreira. Onde fica o gargalo do trabalho, qual artefato é canônico, quem responde pelo que o sistema faz, como se garante que está correto. As perguntas de emprego, salário, nível de entrada e forma da empresa estão em O Futuro do Trabalho em Tecnologia — leia as duas em sequência se quiser o quadro completo, mas elas não se repetem.
1.2 As três camadas: sinal, tendência, incerteza
| Camada | Exemplo aqui |
|---|---|
| Sinal | "Uma fração significativa do código que entra em produção passou a ser sugerida ou gerada por ferramenta." |
| Tendência | "O custo marginal de produzir uma linha de código está caindo mais rápido que o custo de entendê-la, revisá-la e mantê-la." |
| Incerteza crítica | "A capacidade de verificar vai acompanhar a de gerar — ou vai ficar para trás?" |
Repare: o sinal é verificável, a tendência é uma leitura defensável, e a incerteza é honestamente aberta. Confundir os três é o que produz manchete.
1.3 O erro clássico das previsões nesta área
Praticamente toda previsão sobre programação nos últimos sessenta anos previu substituição e o que aconteceu foi adição e deslocamento. O COBOL foi anunciado como o fim da necessidade de programadores — "gerentes escreverão os programas". As ferramentas de geração visual dos anos 1990 idem. A programação declarativa, idem. Em todos os casos: a barreira caiu, a demanda cresceu, a natureza do trabalho mudou, e a profissão ficou maior — não menor.
Toda previsão de substituição deve ser lida como uma previsão de deslocamento até prova em contrário. A pergunta útil não é "isso substitui o programador?", e sim "o que isso torna barato, e para onde o trabalho escasso se muda em consequência?". Esta apostila é construída em cima dessa pergunta.
Mas há um contra-argumento honesto, e ele precisa ficar registrado: o fato de o padrão ter se repetido não garante que se repita. Ondas anteriores subiram o nível de abstração com ferramentas determinísticas — um compilador dá sempre a mesma saída e ela é verificavelmente correta pela construção. Esta onda é diferente: a ferramenta é probabilística. Se essa diferença importa ou não é justamente uma das incertezas do cap. 8.
1.4 Horizonte e confiança
Horizonte: ~6 anos (2032). Cada projeção vem com grau de confiança declarado — alta, média ou baixa. Onde eu não sei, digo que não sei; num tema com esta densidade de hype, essa é a parte mais útil do documento.
Pegue uma afirmação recente sobre o futuro da programação. Separe: que fato ela cita? que leitura ela faz? que incerteza ela esconde apresentando como certeza? Ela prevê substituição ou deslocamento?
Crie um "Caderno de Sinais": 3 por semana, com data, fonte e força correspondente. Regra deste tema: prefira sinais de dados de operação (tempo de revisão, taxa de defeito, tempo de recuperação) a sinais de anúncio de produto.
Capítulo 02 Sinais
O inventário: o que já está acontecendo
O registro do presente (2026), separando o que se sabe do que se afirma. É a base de qualquer cenário — e a primeira coisa a envelhecer.
2.1 Na produção de código
- Geração assistida virou padrão de ferramental — completar, gerar função a partir de descrição, traduzir entre linguagens, explicar código alheio.
- O ganho é real e desigual. Maior em código repetitivo, de fronteira bem definida e em linguagem/biblioteca popular; muito menor em sistema grande, antigo, com contexto implícito e regras de negócio idiossincráticas.
- Estudos e relatos convergem num ponto incômodo: a percepção de ganho de velocidade é sistematicamente maior que o ganho medido. Programadores sentem que foram mais rápidos mais do que de fato foram.
- Agentes que executam tarefas de várias etapas (ler o repositório, alterar vários arquivos, rodar teste, abrir proposta de mudança) saíram da demonstração para o uso real — com taxa de sucesso muito dependente do tamanho e da qualidade do repositório.
2.2 Na revisão e na qualidade
- O volume de código submetido a revisão cresceu sem aumento proporcional na capacidade de revisar.
- Revisão superficial de código gerado é um problema reconhecido: aprovar o que parece plausível é mais fácil do que aprovar o que se entende.
- Geração de teste ficou barata — e com isso apareceu um risco novo: teste gerado a partir do código apenas descreve o que o código faz, inclusive o defeito. Teste que não vem da intenção não verifica nada.
- Tipagem estática, contratos e verificações em tempo de compilação ganharam valor relativo — são a parte da garantia que não depende de alguém ler.
2.3 Na estrutura do trabalho
- O tempo de escrever caiu; o de entender, integrar, revisar e operar não. Onde o gargalo já era comunicação e decisão, o ganho total é pequeno.
- Cresceu a importância do que o modelo consegue "ver" — repositório organizado, testes existentes, tipos, documentação e convenções explícitas passaram a ter valor operacional direto.
- Sistemas antigos continuam sendo o grosso do trabalho real — e são exatamente onde a assistência ajuda menos.
2.4 Na segurança e na procedência
- Preocupação com procedência e licenciamento do código gerado, ainda sem resolução definitiva em vários mercados.
- Inventário de componentes de software passou a ser exigência em contratos e compras públicas em mercados relevantes.
- Ataques à cadeia de dependências continuaram crescendo — e a facilidade de gerar código aumenta a superfície de risco de dependências adicionadas sem escrutínio.
Inventário de 2026 — envelhece rápido, e este é o capítulo com prazo de validade mais curto de toda a apostila. Se você lê isto em 2030, refaça-o antes de usar os cenários.
Numa entrega recente da sua equipe, estime a divisão do tempo: escrever, entender/investigar, revisar, esperar aprovação, integrar, operar. Se escrever é menos de 30%, dobrar a velocidade de escrita muda pouco. Quanto exatamente?
Na próxima tarefa em que você usar geração, anote antes quanto tempo acha que vai levar, e depois quanto levou de fato. Repita 5 vezes. A diferença entre percepção e medida é o achado mais consistente do cap. 2.1.
Capítulo 03 Força
Força 1 — o gargalo se deslocou
A força mais bem estabelecida da lista, e a que reorganiza tudo o que vem depois. Barateie uma etapa e o valor migra inteiro para a etapa seguinte.
3.1 A cadeia inteira, e onde o custo estava
| Etapa | Custo antes | Custo depois | Efeito |
|---|---|---|---|
| Decidir o que construir | Alto | Alto | Inalterado — e agora relativamente mais caro. |
| Entender o sistema existente | Alto | Médio-alto | Alguma ajuda para explicar código; o contexto implícito continua na cabeça das pessoas. |
| Escrever o código | Alto | Baixo | É o que caiu. Toda a consequência vem daqui. |
| Verificar que está certo | Alto | Alto | Não caiu na mesma proporção — vira o novo gargalo. |
| Integrar e liberar | Médio | Médio | Já estava otimizado pela cultura de entrega contínua. |
| Operar e responder por falhas | Alto | Alto | Inalterado — e mais volume de mudança significa mais superfície. |
3.2 A consequência contraintuitiva
Quando escrever fica barato, a quantidade de código tende a crescer — e código é passivo, não ativo. Cada linha precisa ser entendida, mantida, migrada, auditada e eventualmente apagada. Uma equipe que produz três vezes mais código com a mesma capacidade de revisão e operação não ficou três vezes mais produtiva: ficou mais endividada.
É também um caso do padrão que economistas chamam de paradoxo de Jevons: baratear o uso de um recurso costuma aumentar o consumo total dele, não reduzir. Projeção (confiança alta): o volume de código em existência cresce mais rápido que a capacidade humana de compreendê-lo — e a diferença entre os dois é a variável central desta apostila.
3.3 Para onde o trabalho escasso se muda
Especificar bem
Dizer com precisão o que o sistema deve fazer — e o que ele não deve. Sempre foi o trabalho difícil; agora é o trabalho visível, porque é o único passo que não barateou.
Verificar de verdade
Saber que está correto sem depender de ler linha por linha. É o cap. 4 inteiro, e o eixo nº 1 dos cenários.
Decidir a arquitetura
Onde traçar fronteiras, o que acoplar, o que isolar. Decisões caras de reverter — e o custo de errar sobe junto com o volume. Ver Arquitetura & System Design.
Operar e investigar falhas
Diagnosticar o que quebrou num sistema grande e mutante é o trabalho que menos barateou. Ver Causa Raiz e Pensamento Sistêmico.
No último trimestre da sua equipe: quantas linhas entraram, e quantas horas de revisão houve? A razão está subindo? Se sim, você está no cenário 1 do cap. 8 sem ter escolhido.
Liste três partes do seu sistema que ninguém entende bem hoje. Como elas chegaram lá? Se o volume de mudança triplicasse, quantas partes assim existiriam em dois anos?
Capítulo 04 Força
Força 2 — o problema da verificação
Se existe uma pergunta que decide o futuro desta profissão, é esta: como garantir que um sistema está correto quando ninguém leu todo o código dele. É o eixo nº 1 dos cenários.
4.1 Por que a revisão humana não escala
Ler código é mais difícil do que escrevê-lo — porque escrever é reconstruir uma intenção que você tem, e ler é reconstruir uma intenção que você não tem. Com volume crescente, a revisão degrada de forma previsível: de "entendi e concordo" para "parece razoável" e daí para "os testes passaram". E código gerado é especialmente ruim para revisão superficial, porque ele é plausível por construção — foi produzido para parecer com código correto. Os defeitos que sobrevivem são exatamente os que não parecem defeitos.
4.2 O arsenal de garantia, do mais fraco ao mais forte
| Mecanismo | O que garante | Escala com volume? |
|---|---|---|
| Revisão humana | Muito, quando feita a sério. | Não. É linear no tempo de gente. |
| Teste gerado a partir do código | Quase nada — descreve o comportamento atual, defeito incluído. | Sim, e é por isso que é perigoso: dá sensação de garantia. |
| Teste escrito a partir da intenção | O comportamento esperado nos casos previstos. | Sim, se a intenção estiver escrita em algum lugar. |
| Tipos e contratos | Classes inteiras de erro, na compilação, sem executar. | Sim, muito bem. Custo fixo, benefício proporcional ao volume. |
| Teste de propriedade e fuzzing | Invariantes sob entradas que ninguém pensaria em escrever. | Sim — subestimado e barato hoje. |
| Verificação formal | Correção demonstrada em relação a uma especificação. | Sim, mas com custo alto e alcance restrito a partes críticas. |
| Observabilidade e reversão rápida | Nada antes; muito depois — limita o dano. | Sim. É a rede de segurança quando a garantia prévia falha. |
O que escala com volume é o que não exige uma pessoa por unidade de código. Tipos, contratos, propriedades e invariantes escalam; leitura não. Um sistema que vai receber muito código gerado precisa investir na metade de baixo da tabela antes de aumentar o volume — não depois.
4.3 A armadilha do teste gerado
Gerar testes a partir do código produz cobertura alta e garantia zero. Se o código tem um defeito, o teste gerado consagra o defeito como comportamento esperado — e ainda dificulta a correção, porque o teste vai falhar quando alguém consertar. Teste tem que vir da intenção, não da implementação. Onde a intenção não está escrita, gerar teste é gerar concreto em volta do erro. Ver Testing Moderno & Automação.
4.4 A incerteza crítica
Incerteza crítica nº 1: a garantia acompanha a geração? Isto é — surgem meios baratos, confiáveis e amplamente adotados de saber que o código faz o que deveria, sem depender de leitura humana proporcional ao volume? Há razões para otimismo (tipos, propriedades e verificação formal são técnicas maduras e subutilizadas; e a mesma tecnologia que gera pode ajudar a especificar) e razões para pessimismo (verificação exige que exista uma especificação, e escrever especificação continua sendo trabalho humano difícil que ninguém quer fazer). Confiança sobre a resposta: baixa. É por isso que ela é um eixo, e não uma projeção.
Percorra a tabela de 4.2 e marque o que você usa de fato. Quanto da sua garantia depende de alguém ler? Essa fração escala com três vezes mais código?
Escolha uma função pura do seu sistema. Escreva uma invariante em vez de um caso de teste ("o resultado nunca é negativo", "ordenar duas vezes dá o mesmo que ordenar uma"). Rode com centenas de entradas aleatórias. Achou algo?
Capítulo 05 Força
Força 3 — o que a história da abstração ensina (e o que não)
"É só mais uma subida de nível de abstração, como do assembly para o C." A analogia é boa e é usada mal. Vale examinar exatamente onde ela se aplica e onde ela quebra.
5.1 As subidas anteriores e o padrão
| Subida | O que virou descartável | O que ficou humano |
|---|---|---|
| Assembly → linguagens de alto nível | O código de máquina. Ninguém lê a saída do compilador no dia a dia. | O programa fonte, a lógica, o desenho. |
| Gestão manual → coleta automática de memória | Boa parte do controle explícito de alocação. | O desenho de dados, e o desempenho quando importa. |
| Servidor físico → nuvem e contêineres | A operação manual de máquina. | A arquitetura, o custo, a confiabilidade. |
| SQL sobre acesso manual a registro | O algoritmo de acesso — você declara o que quer, não como buscar. | O modelo de dados e o entendimento do plano quando ele fica lento. |
O padrão: em todas, a camada de baixo virou descartável mas auditável — você normalmente não lê a saída, mas pode ler quando precisa, e ela é sempre a mesma para a mesma entrada. E em todas, a profissão cresceu.
5.2 As três diferenças que a analogia esconde
O compilador é determinístico
Mesma entrada, mesma saída, e correção demonstrável pela construção. A geração probabilística não tem essa propriedade — o que muda tudo sobre confiar sem ler.
A linguagem fonte era precisa
C é ambíguo em muito menos coisas que português. Se a nova "linguagem fonte" for descrição em linguagem natural, a ambiguidade entra no artefato canônico — e ambiguidade não compila duas vezes igual.
Antes, a fonte era guardada
Ninguém versiona o binário e joga fora o fonte. Hoje, muita equipe guarda o código gerado e joga fora a conversa que o produziu — o que é exatamente ao contrário. É o sinal mais fácil de observar de qual cenário você está construindo.
Mas o padrão econômico se mantém
Barateou, o volume cresceu, a demanda cresceu junto, e o trabalho subiu de camada. Isso aconteceu em todas as subidas e não há motivo forte para não acontecer nesta.
5.3 A projeção honesta
Projeção (confiança média): uma subida de abstração acontece, mas parcial e desigual — muito clara em software novo, de escopo delimitado e baixo risco; muito lenta em sistema grande, antigo e crítico, onde o código continua canônico até 2032. A ideia de um corte limpo em que "ninguém mais lê código" é improvável no horizonte desta apostila; a de que "nada muda" é igualmente improvável.
E a condição que decide: a subida só se completa se a camada de baixo virar confiável o bastante para não ser lida — que é dizer que o eixo da abstração depende do eixo da verificação. Eles são ortogonais como incertezas, mas ligados como mecanismo: é por isso que o cenário 2 do cap. 8 (abstração sem garantia) é o mais desconfortável dos quatro.
Quando alguém da sua equipe gera código, o que é guardado: só o resultado, ou também o pedido e o critério? Se o sistema tivesse que ser regenerado do zero, o que você teria em mãos?
Aplique as três diferenças de 5.2 ao seu contexto. Qual delas mais te preocupa? O que custaria pouco corrigir já?
Capítulo 06 Força
Força 4 — o código que ninguém escreveu
Um sistema antigo é difícil porque quem o construiu foi embora. Um sistema gerado pode nascer nessa condição — e essa é uma categoria de problema nova.
6.1 O software é uma teoria, não um texto
Há uma ideia antiga e pouco lembrada de Peter Naur: programar é construir uma teoria. O código é o registro parcial de um entendimento que existe na cabeça de quem o construiu — por que estas fronteiras, o que foi tentado e descartado, quais casos importam de verdade. Quando essa teoria se perde, o código continua rodando mas fica irremediavelmente difícil de modificar, porque cada mudança pode violar uma razão que ninguém sabe mais que existia.
Esta é a lente mais útil para pensar o problema desta força: a questão não é se o código gerado é bom, é se a teoria existe em algum lugar. Código gerado, revisado superficialmente e integrado sem que ninguém tenha construído a teoria correspondente nasce como sistema legado.
6.2 O que se perde e o que compensa
| O que se perde | O que compensa (e escala) |
|---|---|
| Por que esta fronteira e não outra | Registro de decisão de arquitetura, curto e datado |
| Quais alternativas foram descartadas e por quê | O mesmo registro, com a seção "descartamos X porque" |
| Quais casos-limite importam de verdade | Testes escritos a partir da intenção — que são a teoria em forma executável |
| Quais restrições são reais e quais são acidentais | Tipos e contratos: a restrição fica no código, não na memória |
| Onde é seguro mexer | Fronteiras explícitas, acoplamento baixo, e a capacidade de reverter rápido |
Repare que a coluna da direita é a mesma lista do cap. 4.2. Não é coincidência: o que serve para verificar é o que serve para preservar entendimento. Ambos são formas de tirar conhecimento da cabeça das pessoas e colocá-lo num lugar que não vai embora.
6.3 Propriedade e responsabilidade
Uma pergunta que as equipes ainda não responderam bem: quem responde pelo código que ninguém escreveu? A resposta que funciona é a mesma de sempre — quem integrou responde. Aprovar uma mudança é assumi-la, independentemente de quem ou o que a produziu. Isso soa óbvio e é rotineiramente violado na prática, com o "foi a ferramenta que gerou" funcionando como diluição informal de responsabilidade.
Projeção (confiança média-alta): equipes que mantêm a regra de propriedade explícita — quem aprova, responde — atravessam qualquer um dos quatro cenários melhor do que as que a diluem, porque essa regra é o que impede o volume de virar passivo silencioso.
Escolha um módulo do seu sistema. Fora do código, onde está registrado por que ele é assim? Se a resposta é "na cabeça de fulano", quanto custaria escrever meia página hoje?
Pegue a última mudança que você aprovou. Você conseguiria explicar, sem reler, o que ela faz e por que está correta? Se não, o que a sua aprovação garantiu de fato?
Capítulo 07 Força
Força 5 — a pressão institucional
A força mais lenta e a mais subestimada. Enquanto a discussão técnica corre, contratos, seguros e reguladores estão redefinindo o que significa entregar software de forma responsável.
7.1 O que já se move
- Inventário de componentes (SBOM) — saber exatamente o que compõe o seu software virou exigência contratual e de compra pública em mercados relevantes.
- Segurança da cadeia de suprimentos — procedência, assinatura de artefatos e construção reproduzível saíram do nicho para a exigência.
- Responsabilidade por defeito de software — a tendência regulatória em vários mercados é reduzir a proteção histórica da indústria, aproximando software de outros produtos quanto à responsabilidade por dano.
- Setores regulados (saúde, financeiro, automotivo, aeroespacial) já exigem rastreabilidade entre requisito, implementação e evidência de teste — e são o laboratório de como isso se parece.
- Procedência do código gerado — licenciamento e origem seguem como questão aberta, com risco concentrado em quem incorpora sem registro.
7.2 Por que isto importa para o futuro da disciplina
Rastreabilidade e responsabilidade empurram na direção oposta à do volume descuidado. Se alguém precisa demonstrar que um requisito virou um comportamento verificado, a especificação deixa de ser opcional — não por virtude, por contrato. E é isso que torna o cenário 4 do cap. 8 possível: a pressão institucional pode fornecer o incentivo que a virtude técnica sozinha não forneceu em cinquenta anos.
Projeção (confiança média-alta): até 2032, a exigência de rastreabilidade entre intenção, implementação e evidência se espalha dos setores regulados para o software corporativo comum — puxada por contrato e por seguro antes de por lei.
Regulação de software é historicamente lenta, desigual entre jurisdições e frequentemente ineficaz — vira preenchimento de formulário sem mudança de prática. É plausível que a rastreabilidade se torne mais um teatro de conformidade do que uma melhoria real. O sinal que distingue os dois: se a evidência exigida é gerada pelo processo (testes que rodam, construções assinadas) ou escrita à parte (documento produzido para a auditoria). O primeiro melhora o software; o segundo só consome tempo.
Escolha um requisito do seu produto. Você consegue apontar o código que o implementa e o teste que o verifica? Quanto tempo levou para responder? Essa é a sua distância até a rastreabilidade.
Você sabe listar todas as dependências do seu sistema, com versão e licença, em menos de 10 minutos? Se não, é a lacuna mais barata de fechar desta apostila.
Capítulo 08 Cenários
Quatro cenários para 2032
Nenhum é uma previsão. Quatro configurações plausíveis da disciplina, cada uma com o que teria de ser verdade, os sinais precoces, e o que fazer se for ela.
8.1 Os dois eixos de incerteza
8.2 Cenário 1 — A dívida acelerada
O que acontece: a geração barateia, o volume triplica, o nível de abstração não sobe e a verificação continua dependendo de leitura humana. Os sistemas ficam maiores, mais rápidos de construir e progressivamente mais difíceis de mudar. O trabalho da profissão migra para arqueologia: entender e consertar código que ninguém escreveu. Sintoma característico: entregar a primeira versão fica muito rápido, e a segunda muito lenta.
Teria de ser verdade: as técnicas de garantia continuarem subutilizadas; a pressão por velocidade vencer a por rigor; nenhuma exigência externa de rastreabilidade.
Sinais precoces: razão entre linhas integradas e horas de revisão subindo; tempo de recuperação de falha piorando enquanto a frequência de entrega melhora; equipes reescrevendo sistemas de dois anos de idade.
O que fazer: investir na metade de baixo da tabela de 4.2 antes de aumentar o volume — é a única defesa, e é barata comparada ao custo de sair depois.
8.3 Cenário 2 — A caixa-preta
O que acontece: a especificação vira a fonte de verdade e o código gerado passa a ser tratado como descartável, mas sem que exista meio confiável de garantir que ele faz o que a especificação diz. Alto poder de produção, baixa garantia. Funciona bem na maior parte do tempo, e falha de forma rara, difícil de diagnosticar e potencialmente grave. É o cenário mais desconfortável dos quatro — e não é implausível, porque a conveniência de não ler chega antes da capacidade de não precisar ler.
Teria de ser verdade: confiança adotada mais rápido que confiabilidade demonstrada; e ausência de um evento suficientemente caro para corrigir o rumo.
Sinais precoces: equipes descartando o código gerado da revisão por política; incidentes cuja causa ninguém consegue explicar; queda no percentual de código que alguém da equipe consegue explicar.
O que fazer: manter a regra de propriedade do cap. 6.3 e exigir que a fronteira crítica do sistema — a parte cuja falha é cara — permaneça verificável por outro meio que não a confiança.
8.4 Cenário 3 — O ofício da garantia
O que acontece: o código continua sendo o artefato canônico, mas o centro do ofício se desloca definitivamente de produzir para garantir. Tipagem forte, contratos, testes de propriedade, verificação formal em partes críticas e observabilidade séria viram o padrão profissional. Escrever é barato e quase irrelevante; saber que está certo é o que se paga. Provavelmente o cenário mais confortável para a profissão como ela existe hoje — e o mais compatível com sistemas antigos, que são a maior parte do software do mundo.
Teria de ser verdade: adoção ampla de técnicas de garantia que já existem e são subutilizadas; e pressão institucional (cap. 7) o bastante para justificar o investimento.
Sinais precoces: crescimento de linguagens e ferramentas com garantias fortes em tempo de compilação; teste de propriedade saindo do nicho; vagas descrevendo verificação como a competência central.
O que fazer: é o cenário para o qual vale a pena se preparar mesmo que ele não venha, porque tudo o que ele exige é útil nos outros três.
8.5 Cenário 4 — A nova camada
O que acontece: a subida de abstração se completa. A especificação executável — precisa, versionada, testável — vira o artefato que humanos escrevem e mantêm, e o código gerado passa a ser tratado como saída de compilador: auditável, mas normalmente não lido. Uma nova disciplina se forma acima, com suas próprias práticas de revisão, teste e modularidade. É a repetição literal do que aconteceu com o assembly — e é o cenário mais transformador.
Teria de ser verdade: o problema da verificação resolvido a ponto de a saída ser confiável sem leitura; e a linguagem de especificação ficar precisa o bastante para não ser ambígua — o que, na prática, significa que ela se parecerá menos com português e mais com uma linguagem formal legível. O que reabre uma velha ironia da área: a linguagem de especificação perfeitamente precisa já tem um nome — é uma linguagem de programação.
Sinais precoces: equipes versionando a especificação e regenerando o código a partir dela; ferramentas que garantem a correspondência entre as duas; a conversa que produziu o código sendo tratada como o artefato guardado.
O que fazer: praticar escrever intenção com precisão — que é a competência transferível para este cenário e útil em todos os outros.
(1) Identifique as ações robustas — aqui elas são notavelmente convergentes: tipos, contratos, testes vindos da intenção, registro de decisão e propriedade explícita servem nos quatro; (2) defina sinais de alerta e revise a cada 6 meses; (3) mantenha uma opção barata contra o cenário que mais te prejudicaria. Ver Decisão sob Incerteza, cap. 6.
Sem escolher o que você quer: pelos sinais atuais, para qual cenário a sua equipe está caminhando? O que na prática de vocês está determinando isso?
Escolha 2 por cenário, mensuráveis nos seus próprios dados (revisão, defeito, recuperação, cobertura vinda da intenção). Agende revisão semestral.
Capítulo 09 Método aplicado · Demo
Um sinal virando cenário — demo ao vivo
Role devagar. Um sinal concreto e desconfortável — a percepção de velocidade é maior que o ganho medido — percorre a cadeia até virar decisão de engenharia.
Registre o fato incômodo
Quando se mede em vez de perguntar, o ganho de velocidade com geração de código aparece consistentemente menor do que quem programou estimou. Não é que não haja ganho — é que ele é menor do que a sensação. E como as decisões de investimento e de processo são tomadas com base na sensação, essa diferença é cara.
Procure a explicação, não a manchete
Escrever de fato ficou muito mais rápido. Entender o sistema, revisar, integrar e corrigir não ficaram. Além disso, o esforço mental caiu mais do que o tempo — e é o esforço que a memória registra como "foi rápido". A tendência real: o tempo migrou de etapa em vez de desaparecer. Da produção para a verificação.
Separe o que escala do que não escala
Se o tempo migrou para a verificação, o volume sobe sem que a revisão acompanhe. Gerar teste a partir do código não resolve — dá cobertura alta e garantia zero, porque consagra o defeito. O que escala é o que não exige uma pessoa por unidade de código: tipos, contratos, invariantes, propriedades. A incerteza crítica: a garantia acompanha a geração?
O eixo abre os quatro futuros
Se a garantia não acompanha, você está no cenário 1 (dívida acelerada) ou no 2 (caixa-preta, se a abstração subir mesmo assim — a combinação mais perigosa). Se acompanha, você está no 3 (o ofício da garantia) ou no 4 (a nova camada). E o melhor deste eixo: ele é medível nos seus próprios dados, sem depender de nenhuma previsão de ninguém.
Separe o robusto, o monitorado e a opção barata
Robusto nos quatro: medir o tempo de ciclo inteiro em vez da sensação; escrever teste a partir da intenção, nunca do código; investir em tipos e contratos, que são garantia sem gente por linha; e manter a regra de que quem aprova responde. Monitorar: a razão entre linhas integradas e horas de revisão, e o tempo de recuperação de falha. Opção barata: um registro de decisão de meia página nos módulos críticos — a teoria do cap. 6.1 fora da cabeça de alguém.
Pegue um sinal do seu Caderno. Percorra os cinco elos. Atenção especial ao elo 2: a explicação mais interessante quase nunca é a primeira, e quase sempre é "o custo migrou" em vez de "o custo sumiu".
Capítulo 10 Muito avançado
O que não muda
O capítulo mais durável. Estas constantes valeram em todas as subidas de abstração anteriores, e não há motivo para deixarem de valer nesta.
10.1 As constantes
| Constante | Por que não muda |
|---|---|
| Complexidade essencial ≠ acidental | Brooks separou a dificuldade que vem da ferramenta (acidental, e que as ferramentas reduzem) da que vem do problema em si (essencial, e que nenhuma ferramenta reduz). Geração de código ataca a acidental. A essencial — o que o sistema deve fazer, em que casos, com que garantias — continua inteira. |
| O difícil é decidir o que construir | A parte cara nunca foi digitar. Foi descobrir o que era necessário, com quem, sob que restrições — e isso é trabalho de conversa e de decisão. |
| Ler é mais difícil que escrever | Escrever é registrar uma intenção que você tem; ler é reconstruir uma que você não tem. Vale para código de humano e para código de máquina. |
| Lei de Conway | A arquitetura do sistema espelha a estrutura de comunicação de quem o constrói. É sobre organização humana, não sobre ferramenta. |
| O software é uma teoria | Perder o entendimento de por que o sistema é assim o torna difícil de mudar, mesmo com o código inteiro à vista (Naur). Ver cap. 6.1. |
| Não existe bala de prata | Brooks previu em 1986 que nenhuma inovação isolada traria ganho de uma ordem de grandeza em produtividade dentro de uma década. Foi verdade — e o padrão do argumento (o ganho vem da complexidade acidental, que é finita) continua de pé. |
| O custo total é dominado pela manutenção | A maior parte do dinheiro de um sistema é gasta depois da primeira entrega. Baratear a primeira entrega mexe na fração menor do custo. |
10.2 O que a história diz sobre as previsões desta área
- COBOL (1959) — "gerentes escreverão os próprios programas, programadores serão desnecessários". Resultado: uma profissão inteira de programadores COBOL, viva até hoje.
- Ferramentas de geração assistida por computador (anos 1980-90) — prometeram gerar o sistema a partir do diagrama. Resultado: diagramas que envelheciam mais rápido que o código.
- Programação visual e "sem código" (recorrente desde os anos 1990) — prometeram o fim da programação textual. Resultado: uma categoria de ferramenta útil para um conjunto delimitado de problemas, e programadores para todo o resto.
- Metodologias como bala de prata — cada onda prometeu resolver o problema da entrega. Resultado: melhorias reais e incrementais, nenhuma ordem de grandeza.
O padrão: cada onda entregou um ganho real na complexidade acidental, foi anunciada como o fim da profissão, e a profissão cresceu. Aplique o desconto correspondente às projeções desta apostila também — inclusive ao cenário 4, que é o mais entusiasmado dos quatro.
"Nenhum desenvolvimento isolado, em tecnologia ou em técnica de gestão, promete sequer um ganho de uma ordem de grandeza em produtividade, em confiabilidade, em simplicidade."
10.3 As ações robustas
- Garantia que não exige uma pessoa por linha — tipos, contratos, invariantes, propriedades. É o investimento com melhor retorno em qualquer futuro.
- Teste vindo da intenção, nunca da implementação. A regra mais barata e mais violada.
- Registrar a teoria — meia página por decisão de arquitetura, datada, com o que foi descartado e por quê.
- Propriedade explícita — quem aprova, responde. Independentemente de quem ou o que produziu.
- Medir o ciclo inteiro, não a sensação de rapidez: tempo até produção, taxa de falha em mudança, tempo de recuperação.
- Praticar escrever intenção com precisão. É a competência que serve para especificar, para revisar, para testar e para o cenário 4.
Repare que nenhuma delas depende de saber qual cenário virá — e que todas já eram boa engenharia antes. É esse o teste de uma ação robusta.
Liste as cinco maiores dificuldades do seu projeto atual. Quantas são acidentais (ferramenta, ambiente, processo) e quantas são essenciais (o problema é difícil)? Só as primeiras respondem a ferramenta nova.
Aplique o padrão de 10.2 às projeções desta apostila. Onde eu posso estar superestimando a ruptura? Reescreva a projeção do cap. 5.3 de forma mais conservadora e guarde para conferir em 2032.
Capítulo 11 Estudo
Oito sinais analisados
Cada sinal pela cadeia do cap. 9, com o grau de confiança declarado e a ação que ele sugere hoje.
Percepção de velocidade maior que o ganho medido
Prática · Confiança média-altaSinal: quando se mede em vez de perguntar, o ganho aparece menor que o estimado por quem programou. Tendência: o tempo migrou de etapa (produzir → verificar), e o esforço caiu mais que o tempo. Implicação: decisões tomadas pela sensação superestimam o retorno. Incerteza: se a diferença diminui com maturidade de uso. Robusto: medir o ciclo inteiro.
Volume de revisão crescendo sem capacidade proporcional
Prática · Confiança altaSinal: mais código submetido, mesma quantidade de gente para revisar. Tendência: sim, e é a consequência direta da força 1. Implicação: a revisão degrada para "parece razoável" — que é justamente o crivo que código gerado atravessa melhor. Incerteza crítica: se aparece garantia que não dependa de leitura. Robusto: mover garantia para tipos e contratos.
Teste gerado a partir do código
Qualidade · Confiança alta no riscoSinal: geração de teste barata e amplamente usada para elevar cobertura. Tendência: sim. Implicação: cobertura alta com garantia zero — o teste descreve o comportamento atual, defeito incluído, e ainda trava a correção. Incerteza: baixa; isso é um erro conhecido, não uma aposta. Robusto: teste sempre a partir da intenção.
Valor relativo crescente de tipos e contratos
Técnica · Confiança média-altaSinal: tipagem estática e verificação em tempo de compilação ganhando adoção e valor percebido. Tendência: sim — é a garantia que não exige gente por linha. Implicação: linguagens e ferramentas com garantias fortes ficam relativamente mais atraentes conforme o volume cresce. Incerteza: média sobre o alcance. Robusto: investir aqui serve nos quatro cenários.
Agentes executando tarefas de várias etapas
Tecnologia · Confiança alta no fatoSinal: ferramentas que leem o repositório, alteram vários arquivos, rodam teste e propõem a mudança. Tendência: sim, com taxa de sucesso muito dependente da qualidade do repositório. Implicação: repositório organizado, com testes e tipos, passa a ter valor operacional direto — a higiene vira infraestrutura. Incerteza: se a confiabilidade chega ao ponto de dispensar revisão. Robusto: organizar o repositório é útil de qualquer forma.
O código gerado guardado, a conversa descartada
Prática · Confiança médiaSinal: equipes versionam o resultado e não registram o pedido nem o critério. Tendência: observável e pouco discutida. Implicação: é o inverso da lógica de compilação — guarda-se a saída e joga-se fora a fonte. Sistemas nascem sem teoria (cap. 6.1). Incerteza: se a prática se corrige sozinha. Robusto: registrar intenção e critério.
Rastreabilidade exigida por contrato
Institucional · Confiança média-altaSinal: inventário de componentes, procedência e evidência de teste entrando em contrato e compra pública. Tendência: sim, espalhando-se dos setores regulados. Implicação: a especificação deixa de ser opcional por razão contratual, não por virtude — o que pode viabilizar o cenário 3 ou 4. Incerteza: se vira melhoria real ou teatro de conformidade. Robusto: gerar a evidência pelo processo, não à parte.
Sistemas antigos continuam sendo o grosso do trabalho
Mercado · Confiança altaSinal: a maior parte do software em operação é antigo, grande e cheio de contexto implícito — e é onde a assistência ajuda menos. Tendência: estável; o estoque cresce sempre. Implicação: qualquer projeção de ruptura total ignora que o objeto de trabalho da profissão é majoritariamente legado. Incerteza: se ferramentas de compreensão de código maduram. Robusto: competência em entender sistema alheio é a mais durável que existe.
Escolha 2 e refaça a análise com o que você observa hoje — de preferência com dados da sua própria equipe, que valem mais que qualquer estudo geral.
Escreva um sinal do seu contexto no formato dos cases, com grau de confiança. Guarde no Caderno de Sinais.
Capítulo 12 Prática · Plano
Plano de 30 dias + a sua antena
O valor desta apostila não são as projeções. É o método e o hábito de acompanhar — mais as seis ações robustas, que você pode começar hoje sem saber nada sobre 2032.
12.1 Plano de treino — 30 dias, ~15 min/dia
| Semana | Foco | Entregável ao fim da semana |
|---|---|---|
| 1 — Método e inventário | Caps. 1–2: desmontar 3 previsões (substituição ou deslocamento?); medir a divisão de tempo de uma entrega; iniciar o Caderno. | Caderno iniciado + 1 medição de gargalo |
| 2 — Gargalo e garantia | Caps. 3–4: calcular a razão linhas/horas de revisão; auditar a tabela 4.2; escrever 1 teste de propriedade. | 1 auditoria de garantia + 1 invariante rodando |
| 3 — Abstração e teoria | Caps. 5–6: identificar o artefato canônico da equipe; escrever meia página de registro de decisão para 1 módulo crítico. | 1 registro de decisão + análise do artefato canônico |
| 4 — Cenários e ação | Caps. 8, 10: escrever o que acontece com o seu sistema nos 4 cenários; implementar 2 das 6 ações robustas; definir 8 sinais de alerta. | 4 análises + 2 ações em curso + sinais agendados |
12.2 Como montar a sua antena
- Caderno de Sinais (5 min/semana), com preferência por dados de operação sobre anúncios de produto.
- Fontes primárias: os seus próprios indicadores de entrega e de falha; estudos com metodologia declarada (não os resumos); relatórios de incidente publicados; e os textos das exigências contratuais que chegam a você.
- Revisão semestral (1 hora): conferir sinais de alerta, recalcular a razão de revisão, e verificar de qual cenário a sua equipe se aproximou.
12.3 Como não cair no hype
- Toda previsão de substituição é uma previsão de deslocamento até prova em contrário. Pergunte "o que barateou, e para onde o escasso se mudou?".
- Separe complexidade acidental de essencial. Ferramenta nova só ataca a primeira, e ela é finita.
- Desconfie de demonstração em problema novo e pequeno. O trabalho real é em sistema antigo e grande, e a diferença de desempenho entre os dois é enorme.
- Exija medição, não sensação. É o achado mais consistente do cap. 2.
- Cobertura não é garantia. Pergunte de onde veio o teste — da intenção ou do código.
12.4 Onde continuar
- Fundamento (envelheceram muito bem): "The Mythical Man-Month" e o ensaio "No Silver Bullet" (Frederick Brooks) · "Programming as Theory Building" (Peter Naur, 1985) · o artigo de Melvin Conway sobre organização e arquitetura (1968)
- Prática: "Accelerate" (Nicole Forsgren, Jez Humble, Gene Kim), sobre medir entrega com indicadores que resistem · "Working Effectively with Legacy Code" (Michael Feathers) · "Software Engineering at Google" (Titus Winters, Tom Manshreck, Hyrum Wright)
- Sobre complexidade: "Out of the Tar Pit" (Ben Moseley & Peter Marks) — o melhor tratamento moderno de essencial vs. acidental
- Nesta casa: O Futuro do Trabalho em Tecnologia (o lado da carreira) · Aceleração de Código com IA (a prática atual) · Testing Moderno & Automação · Arquitetura & System Design · Causa Raiz · Pensamento Sistêmico
Escrita em 2026, horizonte 2032. O cap. 2 é o que envelhece primeiro e mais rápido. As projeções dos caps. 3–8 têm prazo de validade declarado. O que não expira: as constantes do cap. 10.1, a heurística de desconto do cap. 1.3 e as seis ações robustas do cap. 10.3 — que já eram boa engenharia antes de qualquer disto. Se você lê isto muito depois, refaça o inventário e confira de qual cenário a disciplina se aproximou.
Escreva uma página: qual cenário você acha mais provável e com que probabilidade; que sinais te fariam mudar de ideia; que duas ações você começa nesta semana que valem nos quatro. Guarde com data e reabra em seis meses. A parte que envelhece é a probabilidade; a parte que fica são as ações.