Desenvolva software como os Ramones faziam músicas
Quem me conhece sabe que sou fã de Ramones. Não foi por esse motivo e nem por acaso que os escolhi para explicar porque simplicidade é algo tão importante quando estamos desenvolvendo software.
Comecei a gostar de Ramones por influência de um tio que morava numa cidade litorânea do Rio Grande do Sul, e por ficar perto da região metropolitana de Porto Alegre, trazia discos para mim e meus primos. Foi com ele que conheci o Nevermind pela primeira vez e fiquei uns cinco anos só ouvindo Nirvana. Que fase! Também foi ele quem me apresentou Ramones, pela coletânea Ramones Mania.
Antes das plataformas de streaming, em que você paga uma dezena de reais e tem acesso a discografia de milhares de artistas quando deseja conhecer um grupo, as coletâneas eram o caminho com o melhor custo e benefício. Geralmente por uns quinze ou vinte reais se comprava um CD com até trinta músicas.
O Ramones Mania tinha trinta músicas. Mas minha sensação foi diferente de outras coletâneas que eu já tinha ouvido. Isso aconteceu porque ao longo da história, os Ramones nunca perderam a essência. Era a mesma receita: três acordes, guitarra, baixo e bateria. Simples.
Fico pensando que nos meus quase dez anos de carreira, os softwares que trabalhei eram muito diferentes um dos outros. Mesmo quando usava um framework que eu já conhecia, como Ruby On Rails no back-end ou uma biblioteca como a jQuery no front-end, eles ainda eram diferentes. Apesar de todas as convenções, dificilmente eu poderia categorizá-los como “simples”. É bem comum você entrar em uma empresa e passar semanas até conseguir abrir o primeiro pull request com uma feature relevante.
Simplicidade que permite mudanças
Mais além, assistindo a um documentário da banda, descobri que eles mudaram a formação diversas vezes. Apesar das mudanças, as características não mudavam, estava tudo lá. Quantas vezes você viu um software sendo reescrito porque ele tinha um desenvolvedor que sabia de tudo e sem a presença dele ninguém sabia nada?
O segundo baterista da banda, Marky Ramone, sofria com alcoolismo. Por causa da dependência, houve um show em que há instantes da apresentação ele estava sem condições de tocar. Dizem que o baterista do Talking Heads estava presente e sabia tocar as músicas, pegou as baquetas e fez o show. Deu tudo certo. Sem dúvidas isso não aconteceria se as músicas fossem complexas, como aquele software que não faz uso de injeção de dependências e tem código de bibliotecas espalhados pelas suas entranhas.
Mas aí você pode pensar: “se o músico for bom, ele topa qualquer uma”. Isso não é uma verdade quando o estilo da banda é complexo. Tem o caso famoso do baterista do Dream Theater, Mike Portnoy, que não deu certo como baterista do Avenged Sevenfold. Aposto minhas fichas que ele faria um show dos Ramones de olhos fechados.
“Deixe algo complexo só quando necessário”
Quantas vezes você já ouviu essa frase? Se foram inúmeras vezes, por que decide começar, por exemplo, uma aplicação web com uma ferramenta de gerenciamento de estado no front-end se ela ainda nem se faz necessária?
Os Ramones começaram simples e terminaram simples. Eles não sabiam tocar direito, era tosco. Porém, ao longo da carreira foram melhorando. Existe um momento da banda que eles contaram com a produção de Phil Spector, que já tinha trabalhado com Bruce Springsteen e Beatles. Riffs mais elaborados e outros instrumentos começaram a aparecer nas músicas da banda, mas a essência ainda estava lá. É como aquele software que já funciona bem e que mesmo adicionando novas features não quebra o que já funciona.
Os Ramones só deixaram suas músicas (um pouco) mais complexas quando foi necessário. É isso. Desenvolva software como os Ramones faziam músicas.