18
Na ditadura dos padrões
Texto escrito em 2013
Meu primeiro contato com os padrões de projeto: admiração e medo
Já mencionei esta minha experiência aqui no blog quando contei como a orientação a objetos entrou em minha vida. Meu primeiro contato com os padrões de projeto foi composto por dois momentos: admiração e pânico.
A admiração veio quando percebi que outras pessoas enfrentavam os mesmos problemas que nós e apresentavam soluções bem interessantes para aquelas questões. Mais do que isto: os padrões me forneciam vocabulário que passava a fazer parte do dia a dia da nossa equipe. Palavras como factory, proxy, bridge, adapter e outras nos ajudavam a transmitir idéias de uma forma mais rápida e direta.
(surgia um jogo legal: quando usávamos estas novas palavras em nossas conversas era como se estivéssemos treinando aquilo que aprendíamos nos livros e artigos que nos encontravam)
O pânico veio quando o padrão se tornou lei e a argumentação desapareceu. De repente nossas soluções só eram válidas se caissem em um dos padrões que haviamos aprendido a adorar. O terrível, fraco e covarde argumento da autoridade se impôs: quem eramos nós pra pensar algo diferente do que Erich Gama, Richard Helm, Ralph Johnson e John Vissides e de melhor qualidade?
A ingênua pergunta "por que você não usou um factory?" tinha um novo tom: não era mais um questionamento a respeito de qual caminho tomar mas sim uma crítica por não ter seguido a direção indicada por estes seres superiores. Frases como "iremos usar um factory, com a ajuda de um builder para montar nosso proxy que é um adapter para o command" proliferavam, e percebíamos que os padrões haviam se tornado componentes e não mais propostas, visões diferentes, idéias. Nós uníamos estes padrões apenas e a ilusão de que um sistema sairia dali sempre vinha. Funcionou uma vez ou duas: então era massa, certo?
Um rebelde na ditadura dos padrões?
Será que o padrão era realmente aplicável a qualquer situação ou na realidade este não estaria ocultando nossos medos e inseguranças?
Foi quando caiu a ficha: os padrões de projeto não eram mais ferramentas mas sim máscaras usadas para ocultar nossa insegurança. Foi quando conheci os dois melhores amigos do padrão mal aplicado: Sr. Medíocre e Sra Medo.
Não há nada de errado no medo ou mediocridade em si. Convenhamos: têm seu lugar e é um verdadeiro latifúndio. Inclusive possuem seus próprios habitats naturais, como por exemplo as terras do prazo apertado e a ilha do solo duvidoso aonde seus habitantes nunca sabem no que pisam.
(Agir com cautela é natural: há inclusive um diálogo platônico muito interessante chamado Laques aonde a principal questão é o limite entre a coragem e a tolice.)
Os desastrosos padrões ditatoriais na arquitetura
Conforme fui amadurecendo minha visão foi do micro para o macro: entrou a arquitetura e novamente vi o mesmo probelma se manifestando na figura do arquiteto ditador de padrões. Acho que é fruto da leitura ao pé da letra daqueles textos nos quais liga-se diretamente a figura do arquiteto com a definição dos padrões do sistema, ou se bobear é mero egocentrismo mesmo.
(aliás, já repararam que no egocêntrico há muito do inseguro?)
Era imposta uma solução arquitetural e esta devia ser aplicada a todas as situações. O problema é que sempre surgiam aqueles casos que furavam o padrão. Era quando me perguntava: trocamos/aprimoramos o padrão ou passamos a aceitar a diversidade de soluções que precisamos aplicar? Normalmente quando a resposta era um cego "siga o padrão porra!" a equipe dava voltas gigantescas para resolver problemas simples.
(mas não há como fugir da necessidade dos padrões. Por favor não entenda este texto como uma declaração de guerra aos mesmos ok?)
Neste caso o padrão só servia para mostrar a arrogância e inaptidão do arquiteto em ouvir a equipe.
Conclusões
Eu poderia escrever um artigo longo sobre o potencial imbecilizador dos padrões quando aplicados ao desenvolvimento de sistemas mas na prática eu estaria apenas escondendo um fato mais evidente: este potencial imbecilizador é na realidade a manifestação da incompetência ou imaturidade (as duas se misturam).
O grande problema na minha opinião é que o incompetente usa a imposição dos padrões como sua ferramenta para dominar o outro. Em si os padrões são e deveriam ser vistos como sugestões, idéias dos caminhos que poderíamos seguir pra resolver nossos problemas. Se você observa situações do tipo "temos de ter uma solução que abarque todos os casos", abra o olho: eu e você sabemos bem que a realidade sempre é mais complexa que a nossa solução infantil tenta abraçar.
Antes que digam, não, não sou contra padronizações, padrões de projeto, arquitetura, etc. Sou contra a ditadura que os incompetentes criam os usando como muletas.
18