Que Dure Para Sempre - Meu Cavaquinho Partituras: Partitura - Que Dure Para Sempre - Netinho ...
Meu Cavaquinho Partituras: Partitura - Que Dure Para Sempre - Netinho ...

O problema da durabilidade na prática

Quase todo mundo que trabalha com projetos digitais, desenvolvimento de software ou até conteúdo editorial se depara com o mesmo cenário: algo é construído com pressa, entrega rápida, orçamento apertado, e dois anos depois nada funciona mais. O termo que dure para sempre não é um conceito mágico. É uma forma de pensar que exige decisões ruins no começo para evitar dores muito piores no futuro. A primeira lição que eu aprendi foi em 2019. Montei um sistema de automação de relatórios para uma equipe de marketing usando uma planilha conectada a scripts Python rodando num servidor compartilhado barato. Funcionou perfeitamente por onze meses. Quando a provedora atualizou o ambiente e quebrou a compatibilidade da biblioteca, eu passei três dias seguidos correndo atrás de soluções. O problema não era técnico. Era estrutural. Eu tinha construído algo que nunca seria mantido.

A base de tudo que dure para sempre

Existe um princípio simples que a maioria ignora: durabilidade não é sobre tecnologia. É sobre decisões de arquitetura que sobrevivem à troca de pessoas. Quando você cria algo usando ferramentas que dependem exclusivamente do conhecimento de uma pessoa específica, aquele algo já nasceu morto. Ele só parece vivo enquanto essa pessoa está disponível. O que diferencia um projeto que sobrevive cinco anos de um que quebra em cinco meses geralmente é uma única decisão tomada nas primeiras semanas. Escolher uma stack padrão. Documentar o básico. Deixar o código legível sem depender de inteligência artificial para explicar o que o sistema faz.

No meu caso, após o incidentes dos relatórios, eu mudei completamente de abordagem. Em vez de scripts soltos conectados a serviços terceirizados, eu passei a usar contêineres com dependências congeladas em versões específicas. Um Dockerfile simples que lista cada pacote e sua versão exata. Se algo quebrar, você sabe exatamente o quê e quando. Isso transforma três dias de debugging em trinta minutos de investigação.

Os pilares práticos

Decisões de.stack determinam a vida útil de qualquer coisa. Ferramentas que mudam de nome, endereço ou modelo de licenciamento a cada seis meses criam dependência tóxica. Escolha tecnologias com histórico de estabilidade. Python não morreu porque alguém quis. Node.js continua existindo apesar das mudanças bruscas do ecossistema. A diferença é que o primeiro tem décadas de backward compatibility; o segundo cobra preço por inovação constante. Documentação mínima significa três coisas: como rodar, como modificar, e como quebrar. Não escreva um manual de cem páginas. Ninguém lê. Escreva um README que responda às perguntas que você faria se chegasse neste projeto amanhã sem contexto. Eu costumo incluir uma seção chamada "coisas que vão te atrapalhar" porque as pessoas precisam saber onde estão as armadilhas antes de pisar nelas.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Versionamento de tudo. Código, configuração, dados de teste, até os dados de produção quando possível. Sem versionamento, você não tem ponto de restauração. Tem apenas esperança. E esperança não escala. Um exemplo concreto: recentemente precisei migrar um banco de dados PostgreSQL de uma máquina para outra. A versão do servidor antigo era 13, a nova era 16. Se eu tivesse usado migração direta, provavelmente teria perdido dados ou enfrentado incompatibilidades de tipos. Usei pg_dump com flag de versão específica, exportei para SQL, ajustei manualmente duas colunas que tinham mudado de comportamento entre as versões, e importei. Doze horas de trabalho que poderiam ser vinte minutos se eu tivesse mantido os dumps versionados desde o início.

Armadilhas que ninguém menciona

O maior erro que vejo em projetos que pretendem durar é o uso excessivo de abstração prematura. Criar camadas de código para situações que ainda não existem. Isso parece inteligente no momento, mas na prática gera manutenção infinita de funcionalidades que ninguém usa. Cada camada extra é um ponto de falha em potencial. Outro erro comum é achar que monitoramento substitui boa engenharia. Colocar um alerta no Sentry não vai resolver um problema de arquitetura ruim. Vai apenas notificá-lo quando ele acontecer. Monitoramento é um colete salva-vidas, não um tratamento. Se você depende dele para saber se seu sistema está funcionando, o sistema já está falhando.

A durabilidade real também depende de custo de manutenção. Se algo é tão caro para manter que ninguém quer mexer, ele morre. Sempre. Eu já vi projetos com código impecável serem abandonados simplesmente porque a equipe de suporte era uma pessoa só e essa pessoa pediu demissão. Não há mágica que resolva isso além de garantir que o conhecimento esteja distribuído.

O teste prático

Antes de considerar algo pronto para o longo prazo, faça esta pergunta: se todos os envolvidos saíssem amanhã, quanto tempo levaria para um novo integrante entender o que o sistema faz e conseguir fazê-lo funcionar? Se a resposta for mais de uma semana, você não tem algo que dure para sempre. Tem algo que espera para morrer. Não existe caminho rápido. Não existe ferramenta que resolva isso automaticamente. O que existe é disciplina de fazer as coisas certas no começo, mesmo quando parece exagero. E quando eu falo disciplinas certas, quero dizer escolhas chatas: escolher o caminho boring quando existir três opções igualmente válidas, documentar o óbvio que todo mundo esquece, e testar o recovery antes de precisar dele.

O projeto dos relatórios que citei no início nunca mais quebrou porque eu passei a tratar cada componente como se fosse responsável por si mesmo. Isolamento de dependências, configuração externaizada, logs estruturados. Nada disso é inovador. Mas é exatamente por ser simples que funciona. Complexidade é o que mata projetos. Simplicidade deliberada é o que os mantém vivos. Se você está começando agora e quer um ponto de partida concreto, a recomendação é ir pelo padrão oposto ao que parece mais eficiente no curto prazo. O que economiza tempo hoje geralmente cobra juros altos amanhã. A durabilidade é um produto de escolhas que parecem irracionais no momento certo.