Uma coisa que vejo que as pessoas buscam são as brilhantes soluções universais. Aquela solução que vai resolver tudo. Mas a real é que:
Não existem soluções universais.
Em um momento do milênio passado, eu acreditava que Java seria uma linguagem quase universal. Mas, começaram a aparecer .Net, Groove, Scala, Python, Node.js, Closure, PHP, Angular, ect, ganhando força em determinados contextos. Realmente, não era a solução universal. Algumas pessoas podem ter crescido e visto muita evolução. Outras puderam se especializar apenas em uma coisa ou no que se tornou popular hoje em dia, mas nenhuma delas resolve tudo.
Por exemplo, essa semana surgiu uma questão sobre o design de acesso à rede interna na AWS e no GCP. Inicialmente a idéia era aplicar a mesma solução AWS no GCP. Como diria o menino prodígio: “Santa falta de lógica, Batman!” No caso, o design e a organização das duas plataformas é diferente, não é possível usar a mesma solução para os dois contextos.
Enfim, para não cair na falácia das soluções universais, basta aceitar que não há soluções universais e tentar evitar esse desejo ingênuo e insano. Considere mais de uma opção de solução, teste e evolua rapidamente, tendo em mente que:
Existem apenas soluções contextuais.
Avalie qual padrão de design ou ferramenta se aplica melhor em cada contexto.