Balas de Prata e o Pensamento Engenheiro: Uma reflexão
Introdução
Embora o título se direcione à área da programação em específico, a verdade é que a busca incessante por "balas de prata" não se limita a ela. Esse fenômeno se estende para áreas correlatas e passa até mesmo por campos completamente diferentes. Para ser sincero, acho que vale a pena falar um pouco mais sobre isso.
Percepção do problema
Uma das melhores decisões que tomei, pouco antes de ingressar no curso de Ciência da Computação, foi estudar matemática desde o início. Isso me deu uma boa base de habilidades, incluindo um raciocínio lógico mais afiado. Entretanto, o que de fato planejo destacar é que a experiência me abriu os olhos; pude enxergar de pertinho esse fenômeno da busca por soluções universais.
Ao interagir com outras pessoas que estavam nessa mesma jornada, percebi como o fenômeno se manifestava.
Aha! Era ele por trás da fórmula "mágica" que resolvia todos os problemas do conteúdo "X" ou a técnica infalível para lidar com determinados padrões de questões. E, apesar das claras diferenças entre matemática e programação, essa mentalidade da adoção e busca dogmática se reflete fortemente na nossa área também.
Ah, então são puro mal?
Não me entenda mal: não estou dizendo que essas "regrinhas", que você provavelmente conhece bem, são completamente vazias de valor. O problema reside no fato de serem tratadas de maneira quase religiosa, como verdades absolutas, imutáveis e inflexíveis, mesmo diante do número abundante de cenários com os quais podemos nos deparar no desenvolvimento de software para o mundo real.
Relação com o pensamento engenheiro
Tal forma de pensar conduz ao uso cego e muitas vezes irrestrito de técnicas, metodologias, etc. Sério mesmo, não importa quão bom seja algo; se aplicado porcamente, ele vai acabar por gerar mais dor de cabeça, ao contrário dos benefícios/ganhos esperados.
Essa corrente de pensamento se mostra ainda mais prejudicial em áreas como a Engenharia de Software, onde o pensamento crítico e analítico são (ou deveriam ser) pilares. As decisões devem ser tomadas embasadas em fatos concretos e em seus efeitos práticos, analisando a balança de ganhos e perdas, ou, como alguns adoram chamar, trade-offs.
O que são e o que fazer com elas?
Na realidade, é necessário colocar as boas práticas na sua devida caixinha, elas são apenas o que seu nome indica: boas práticas.
Elas são frutos da experiência de pessoas que desenvolveram muito software e que, provavelmente, se depararam muitas vezes com os mesmos desafios em diversos projetos nos quais trabalharam e foram acumulando e/ou aplicando essas soluções eficazes ao longo dos anos, seja baseados em experiências próprias ou de terceiros, a questão é: elas se mostraram úteis em diversos contextos.
Como chegaram até aqui?
Ok... Por que são boas? O fato de terem sido usadas reiteradamente em ocasiões semelhantes as validaram, atestaram-as como consistentes, funcionais e viáveis para uma quantidade expressiva de casos.
No entanto, ser um engenheiro de software (ou aspirante a um) passa por entender que exceções existem. Além disso, um de seus deveres é estar consciente delas e ser capaz de reconhecê-las, claro que isso vem depois de uma boa análise para decidir quando a quebra de uma boa prática pode atender melhor à realidade do problema.
Finalização
Antes de finalizar a postagem, gostaria de agradecer sinceramente a todos que se dispuseram a ler meu desabafo/reflexão, expressar que estou totalmente aberto a contribuições/indicações de erros e deixar uma pergunta:
Quais experiências vocês tiveram com boas práticas, regras ou padrões que não encaixariam bem no sistema em desenvolvimento?
Opa, está antecipando o que será meu primeiro vídeo no canal que vou começar: "A Péssima Prática de Seguir Boas Práticas". Provavelmente será o mais longo do canal, e prometerei não fazer mais vídeos tão longos, mas o tema pede para entender certo cheio de exemplos.
Então vou dar um spoiler do que falarei lá que é um contraponto ao exposto aqui.
Muitas das tais boas práticas nunca foram validadas, pelo contrário, parte delas foram invalidadas, mas continuam sendo divulgadas como boas práticas. E vou deixar uma palavra que repito muito: contexto.
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).