Tudo o Que Eu Adicionei Era Razoável. Juntas, Essas Coisas Me Soterraram.
Quase tudo o que eu já adicionei a este projeto era, no momento em que adicionei, algo perfeitamente razoável de se adicionar. Cada funcionalidade tinha uma justificativa real. Cada caso extra que tratei era um caso que genuinamente surgiu. Cada pequena melhoria melhorava alguma coisa. E a soma de todas essas adições individualmente sensatas foi um sistema tão pesado, tão emaranhado e tão amplo que mal conseguia se mover.
A parte perturbadora é que ninguém jamais decidiu deixá-lo assim. Não houve nenhum momento de mau julgamento para o qual apontar. Ele simplesmente se acumulou, uma decisão inteiramente defensável de cada vez, até virar algo que ninguém jamais teria escolhido de propósito.
Toda adição é localmente justificada
Este é o cerne do motivo pelo qual o aumento de escopo é tão difícil de resistir: ele nunca chega como uma única decisão ruim. Ele chega como uma longa e ininterrupta sequência de boas decisões. Cada nova funcionalidade é útil. Cada caso extremo adicional é real. Cada melhoria do tipo “já que estou aqui, posso muito bem também” faz genuíno sentido no momento em que você a faz. Em nenhum momento, em nenhum passo isolado, você está fazendo algo que consiga reconhecer como errado.
É precisamente isso que o torna tão insidioso. Se o aumento de escopo parecesse um erro enquanto você o cometia, você pararia. Mas não parece. Parece diligência, parece minúcia, parece responsividade, parece construir. Cada “sim” individual é fácil de defender, e o dano não é causado por nenhum deles em particular, mas pelo fato de que você continuou dizendo sim, de forma razoável, por muito tempo.
O custo que você não consegue ver no momento de adicionar
A contabilidade é viciada, e é viciada de uma maneira específica. Quando você adiciona algo, seu benefício é vívido e imediato — você consegue ver exatamente o que ele lhe dá. Seu custo, por outro lado, é quase invisível no momento da decisão, porque a maior parte do custo ainda não aconteceu.
Porque toda adição carrega custos contínuos que chegam depois e silenciosamente. Mais superfície. Mais interações entre as partes. Mais coisas que podem quebrar. Mais coisas que precisam ser compreendidas por quem quer que toque no sistema, inclusive o seu eu futuro. Mais coisas a manter, para sempre. O benefício é um ganho único e visível. O custo é um imposto permanente e invisível, pago em pequenas parcelas muito depois de a decisão ter sido esquecida. Então, no instante em que você escolhe, o benefício visível quase sempre supera o custo visível — não porque a troca seja boa, mas porque metade do custo está oculta no momento em que você faz a escolha.
Localmente razoável, globalmente uma bagunça
O estado final de tudo isso é um sistema no qual cada parte individual é justificada e o todo é um desastre. Esta é a assinatura inconfundível da acumulação, e ela tem uma propriedade cruel: não há nenhuma coisa isolada para a qual você possa apontar como o erro. O erro é a própria acumulação, espalhada por uma centena de decisões separadas que eram, cada uma tomada isoladamente, completamente aceitáveis.
Isso é genuinamente desorientador de encarar, porque todo instinto que você tem para resolver problemas é construído em torno de encontrar a parte ruim e consertá-la. Aqui não há parte ruim. Você sai à procura do componente que arruinou tudo, e não consegue encontrá-lo, porque nenhum componente arruinou tudo — todos eles arruinaram, um pouco, juntos. Você não consegue depurar para sair de um problema cuja causa está distribuída uniformemente por tudo o que parece individualmente razoável.
A deriva sempre aponta para o “mais”
Por baixo disso há uma espécie de gravidade que, em qualquer projeto, aponta firmemente em uma direção: para a adição. Adicionar coisas parece progresso. É visível, é satisfatório, produz artefatos que você pode ver e apontar. Construir mais parece trabalhar, porque é.
A subtração parece o oposto de tudo isso. Remover algo parece perda, parece desfazer esforço, parece andar para trás. E, crucialmente, nunca parece urgente — porque nada quebra no momento em que você deixa de remover algo. O custo de não subtrair é invisível e adiado, exatamente como o custo de adicionar, o que significa que nunca há uma função de força. Então, na ausência de resistência deliberada, um sistema só faz acumular. A deriva é unidirecional, e o resultado padrão de deixá-la correr é a bagunça soterrada e imóvel.
A subtração é uma luta deliberada e desconfortável
Remover coisas acaba sendo muito mais difícil do que adicioná-las, e principalmente por razões que nada têm a ver com dificuldade e tudo a ver com psicologia. Quando você remove algo, está destruindo um trabalho que alguém fez, muitas vezes você mesmo. Você está admitindo tacitamente que aquilo não deveria estar ali. Não há nenhuma sensação satisfatória de criação nisso, nenhum artefato novo para admirar, nenhuma daquelas pequenas recompensas que a adição proporciona. É puro desfazer, sem glamour, levemente doloroso.
Mas a disposição de fazê-lo mesmo assim — de cortar funcionalidades, de eliminar componentes que já não merecem seu lugar, de apagar coisas que funcionam bem mas não valem o peso que carregam — é uma das únicas forças capazes de neutralizar a deriva implacável rumo à ingovernabilidade. A subtração nunca acontece por padrão, jamais. Ela só acontece quando alguém decide, contra todo instinto confortável, lutar por ela.
Dizer não é, em si, uma funcionalidade
O reenquadramento que mais ajudou foi perceber que algumas das decisões de design mais valiosas que já tomei foram as coisas que decidi não fazer. Cada adição razoável que você recusa é peso que você nunca terá de carregar, superfície que você nunca terá de defender, complexidade que você nunca pagará ao longo de todos os meses que se seguem.
Uma noção clara do que um projeto não é acabou sendo tão importante quanto a noção do que ele é — e muito mais difícil de manter, porque preservá-la significa recusar repetidamente coisas que soam genuinamente boas. Cada exclusão é um pequeno e contínuo ato de resistência contra uma ideia que parece perfeitamente sensata, e você tem de realizar essa resistência repetidas vezes, para sempre, sem nenhuma recompensa por ela exceto a ausência de um problema que você nunca chegará a ver que evitou. Dizer não não deixa artefato algum. É exatamente por isso que é tão subvalorizado, e tão essencial.
A lição mais profunda: proteger o todo das partes
Tudo se resume a isto: eu vinha otimizando cada decisão localmente — esta adição em particular é boa? — quando a pergunta que de fato determinava o destino do projeto era global: o que isto faz com o todo? São perguntas diferentes, e têm respostas diferentes com muito mais frequência do que eu havia presumido.
Um sistema não é simplesmente a soma de suas partes localmente boas. Ele tem sua própria saúde, seu próprio peso, sua própria coerência — propriedades que pertencem ao todo e pelas quais nenhuma decisão isolada é responsável, mas que toda decisão isolada afeta. Proteger esse todo, contra um fluxo constante e genuinamente razoável de pedidos para adicionar só mais uma coisa, acabou sendo a maior parte do trabalho de verdade. Eu havia pensado que meu trabalho era tomar boas decisões individuais. Na verdade, era proteger o sistema do peso acumulado de uma centena delas.
— Sem sinais, sem retornos, não é aconselhamento de investimento.