no silver bullet
expressãoprogramaçãocultura de operações
A tese de Fred Brooks de que nenhuma técnica isolada trará um ganho de ordem de grandeza na produtividade de software, porque a complexidade é essencial, não acidental.
O ensaio de Brooks, de 1986, dividiu a dificuldade do software em complexidade acidental, que ferramentas removem, e complexidade essencial, a intrincação irredutível do próprio problema, e previu que nenhuma bala de prata de dez vezes surgiria em uma década. Quatro décadas de linguagens, metodologias e agora assistentes de IA foram, cada uma, anunciadas como a exceção. O ensaio sobrevive como a réplica padrão a todo lançamento 'isto muda tudo', e como o desafio permanente que cada um precisa responder.
Fred Brooks argumentou em 1986 que nenhum desenvolvimento isolado da década seguinte produziria melhoria de uma ordem de grandeza na produtividade de software, e o argumento repousa numa distinção que segue sendo a mais útil da área: complexidade essencial contra complexidade acidental.
Complexidade acidental é a dificuldade introduzida pelas nossas ferramentas: gerência de memória, sistemas de compilação, implantação, cerimônia da linguagem. Ela pode ser atacada, e foi, substancialmente. Complexidade essencial é a dificuldade do próprio problema, de entender o que é de fato exigido, das interações num sistema que modela algo genuinamente complicado. Nenhuma ferramenta a remove, porque ela não está na ferramenta.
A previsão envelheceu notavelmente bem, e cada geração a testa de novo. Orientação a objetos, programação visual, ferramentas CASE, métodos ágeis, plataformas em nuvem e agora geração de código foram todas propostas como a exceção. Cada uma entregou melhorias reais à complexidade acidental e nenhuma removeu a necessidade de entender o problema. Se a geração atual é diferente é discussão em aberto, e o enquadramento de Brooks segue sendo o correto para tê-la.