Executando verificação de segurança...
2

A bomba-relógio no seu codebase (e no meu também)

Vou te contar uma coisa que eu demorei anos pra aceitar: não importa o quão bom você é — seu codebase está apodrecendo agora mesmo.

Não é culpa sua. É biologia.

O número que explica tudo

Seu cérebro consegue manter 4 a 7 blocos de informação na memória de trabalho de uma vez. É assim pra mim, pra você, pro dev sênior mais brilhante que você já conheceu. É limite biológico, não skill issue.

Agora pensa: quantas interações implícitas tem a base de código que você mantém? 50 mil linhas? 200 mil? Meio milhão?

Você tá tentando monitorar um sistema com milhares de dependências invisíveis usando um processador que roda 7 threads. Não vai dar.

O ciclo que eu já vi dezenas de vezes

Trabalho com software há 22 anos. O padrão é sempre o mesmo:

Mês 1 — O arquiteto desenha tudo com clareza. As decisões fazem sentido. Todo mundo tá alinhado.

Mês 6 — O arquiteto ainda tá lá, mas já não lembra por que escolheu aquele timeout de 30 segundos em vez de 5. "Deve ter tido um motivo."

Mês 12 — Dois dos três engenheiros originais saíram. O motivo do timeout? Saiu junto com eles. O que ficou foi um comentário // don't change this sem explicação.

Mês 18 — O dev novo, que é competente, muda o timeout pra 5s porque "30s é absurdo". Produção quebra na madrugada. Ninguém entende por quê.

O problema nunca é o dev novo. O problema é que o contexto não sobrevive ao tempo.

As falhas que me tiraram sono

Depois de duas décadas, eu coleciono essas histórias:

O hook inocente. Um usePopup() que adiciona um listener global ao DOM. Lindo, testado, aprovado no code review. Só que foi usado em 100 componentes. Agora são 100 listeners disparando a cada clique na página inteira. Nenhum code review individual vai pegar isso — porque cada review vê só 1 uso.

O cache fantasma. Uma refatoração legítima muda a construção de um objeto. Funcionalmente idêntico. Referencialmente diferente. O cache que dependia de === nunca mais funciona. Testes passam. App não quebra. Só fica silenciosamente mais lenta, semana após semana, até alguém abrir um ticket três meses depois.

O N+1 elegante. Um loop com ORM que gera código lindo de ler e 50 queries SQL separadas de executar. O dev vê elegância. O banco vê bombardeio.

O padrão é sempre o mesmo: o problema não é visível no nível de abstração em que você trabalha. Você precisaria ver múltiplos níveis simultaneamente — e seus 4 a 7 blocos de memória não deixam.

Onde IA realmente muda o jogo

Eu sei que tem muito hype. Eu sei que metade das promessas de IA em software são marketing. Mas tem uma coisa que IA faz que é estruturalmente diferente de qualquer ferramenta que já existiu:

Janela de contexto gigante. Quando você muda uma linha, a IA pode ver os 47 módulos que chamam aquela função, verificar se algum depende de igualdade referencial, e detectar se seu "fix simples" vai quebrar algo silenciosamente do outro lado do codebase. Não por ser mais inteligente — por ter mais memória de trabalho ativa.

Vigilância que não cansa. Sexta-feira 17h, deploy marcado pra segunda, o code review fica mais superficial. No centésimo PR da semana, a atenção é menor que no primeiro. Com a IA é o mesmo escrutínio no PR #1 e no PR #100. Sem "dessa vez é diferente", sem "é só um hotfix".

Memória institucional. "Por que esse serviço tem timeout de 30s?" — o dev novo não sabe, o Slack de 2 anos atrás não aparece na busca. Uma IA que tem acesso ao histórico lembra: "INC-4521, março de 2024, spot instances com cold start de 25s."

Mas calma — humanos continuam insubstituíveis

Antes que alguém ache que eu tô dizendo que IA vai substituir devs: não vai.

IA é extraordinária em seguir padrões e detectar violações. Mas não inventa paradigmas novos. Não sabe que você aceita aquele débito técnico porque o mercado fecha em 3 semanas. Não sabe que "não deploya na segunda porque o time de pagamentos deploya terça." Não sabe o que aconteceu na última Black Friday.

Julgamento, criatividade, contexto de negócio, conhecimento tribal — isso continua sendo nosso.

A parceria real

O futuro não é "devs vs. IA". É:

  • IA cuida da consistência e da escala — detecta violações, mantém memória, verifica impactos cascata, vigia sem fadiga
  • Humanos focam no julgamento e na criatividade — decidem o quê construir, fazem trade-offs estratégicos, inventam coisas novas, navegam política organizacional

Equipes que resistem a isso por orgulho ("eu consigo revisar tudo sozinho") vão acumular entropia mais rápido. Não porque são piores devs — porque são humanos com limites cognitivos fixos enfrentando complexidade crescente.

A bomba tá contando

Se sua base de código tem mais de 18 meses, a entropia já tá lá. A questão não é se ela existe — é se você tem um sistema capaz de desarmá-la continuamente.

Ou se tá contando com 4-7 blocos de memória humana pra monitorar centenas de milhares de linhas.


Escrevi uma versão expandida com diagramas, gráficos e os exemplos técnicos detalhados aqui: stickybit.com.br/bomba-relogio/

Se você mantém um codebase legado (e quem não mantém?), vale a leitura.

Carregando publicação patrocinada...
1

Esse "problema" tá sendo criado, justamente porque coisas que são a BASE DA ENGENHARIA deveriam ser a BASE DA ENGENHARIA DE SOFTWARE e não são.
Se a documentação tivesse explícito que o timout é de 30s porque X, Y, Z, e mais N fatores precisam que seja assim... o dev novo teria que ser MUITO INCOMPETENTE para mudar, sem ANTES, verificas esses N outros pontos e o impacto que isso esta gerando.
A incompetência e o ego humano JAMAIS serão substituídos, se o DEV sênior atual quiser mudar de 30s pra os 5s mesmo a IA ou a documentação alertando, ele vai mudar e se tiver que quebrar as 3:00 de um domingo com feriado prolongado na segundam vai quebrar. Nesse caso o EGO falou mais alto e sim, ele fez porque algo interno a ele disse que é o certo e ponto.
Se, o codebase precisa de uma IA ou de qualquer outra fonte de referência que não a documentação existente, é hora de repensar os conceitos, pois o erro não é só humano, é estrutural, no momento em que é necessário uma alteração por menor que seja, uma simples correção gramatical em uma label, ela deveria estar documentada, e o motivo da escolha deveria estar explicitamente declarado. Daqui a 10 anos, no review do centésimo PR em uma sexta-feira pré feriado prolongado ele vai ver que aquela mudança tem impacto e saber qual é o impacto. Ai ele aceitar ou marcar para revisão ou denegar, é a escolha profissional dele.

O que temos que ter em mente, é que uma vez que todas as etapas do processo estejam executadas, não faz diferença se o executor é uma IA, um DV sênior de 10a de experiência

1

IA resolve problema de preguiça artificial

// Don't change this

É um excelente exemplo de comentário ruim, o comentário real deveria explicar o motivo com uma stack trace desceitiva

Conteúdo excluído
Conteúdo excluído