
ENOSUCHBLOG
Programação, filosofia, pedaladas.
10 de janeiro de 2025 Tags: programação
Um fenômeno interessante, que denomino de "efeito Makefile", merece ser discutido.
Esse efeito se revela quando ferramentas de complexidade considerável ou que não são familiares são utilizadas de forma repetitiva. Em vez de serem criadas do zero, essas ferramentas são frequentemente copiadas e ajustadas a partir de exemplos anteriores que funcionaram.
Esse padrão é observado em engenheiros de diferentes níveis de habilidade, e o Make é um dos exemplos mais comuns. Quando uma tarefa precisa ser realizada, e uma tarefa semelhante já foi completada anteriormente, o engenheiro opta por copiar um Makefile já existente (que pode ser bastante complexo) e adaptá-lo para o novo contexto.
Embora essa abordagem possa ser eficaz para resolver problemas rapidamente, ela também revela falhas no design da ferramenta. Isso sugere que o sistema é complicado demais para ser utilizado a partir do zero, levando os usuários a se basearem em soluções conhecidas e, com o tempo, a acumularem ajustes.
Ao se deparar com esse fenômeno, é possível notar sua presença em diversos contextos. Além do Makefile, configurações de CI/CD, como GitHub Actions e GitLab CI/CD, frequentemente sofrem deste efeito, onde os usuários copiam suas configurações YAML de setups anteriores e fazem modificações até que funcionem novamente.
Esse padrão também se observa nas configurações de linters e formatadores, onde um conjunto básico de regras é transferido entre projetos, sendo adaptado conforme necessário. Os próprios sistemas de construção tendem a se assemelhar a configurações anteriores sempre que se tornam não triviais.
É relevante refletir sobre as implicações desse fenômeno. Muitas vezes, o impacto pode parecer irrelevante, mas é importante considerar, especialmente ao projetar ferramentas e sistemas. Ferramentas que favorecem esse padrão geralmente apresentam suporte insatisfatório para diagnósticos e depuração, forçando o usuário a executar repetidamente a ferramenta e esperar longos períodos para obter informações limitadas.
Além disso, esse padrão tende a desencorajar o aprendizado abrangente. Apenas alguns especialistas sabem como configurar a ferramenta adequadamente, e outros se limitam a copiá-la, adquirindo conhecimentos superficiais o suficiente para realizar ajustes pontuais. Embora isso possa ser inevitável em alguns casos, não é sempre assim.
Outro aspecto a considerar é que ferramentas que promovem esse fenômeno costumam ser mais difíceis de usar de forma segura. A segurança geralmente requer um entendimento profundo das razões por trás de certos comportamentos. Sistemas que sofrem com o efeito Makefile frequentemente geram confusão entre código e dados, o que pode resultar em vulnerabilidades, como injeção de templates em GitHub Actions.
Em suma, acredito que ferramentas e sistemas bem elaborados devem buscar minimizar esse efeito. Embora não seja fácil, algumas considerações podem ser feitas ao projetar uma nova ferramenta.
Confira os últimos vídeos publicados no canal