Uma maneira de fazer com que os desenvolvedores juniores aprendam um paradigma é não permitir que eles toquem na arquitetura. Você cria a arquitetura e soletra as partes do código que elas gravarão. Certifique-se de que eles participam com todos os outros desenvolvedores e ver como tudo se encaixa enquanto eles escrevem o código. A cada semana faça uma revisão de código e dê um tapa nos pulsos para quebrar o padrão e assim por diante ... Essa é uma ótima maneira de aprender, e eles aprendem fazendo isso.
Com o tempo, eles aprenderão o modo de pensar necessário para projetar as coisas em si.
Outra maneira é dar a eles projetos onde a única maneira de resolver o problema é usar um determinado padrão. Quando eles tropeçarem, descobrirão o padrão e / ou verão sua sabedoria e uso.
Eu tentei sentar as pessoas para baixo e explicar a arquitetura para elas, e isso simplesmente passa por cima delas. Dê-lhes um projeto para usá-lo e eles ficarão muito mais fáceis.
IMHO, o melhor livro para criação ainda é o link . No entanto, é um livro para uma pessoa que já está tentando escrever um bom código. Para ensinar, você projeta, deixe-os implementar. Depois, com o tempo, inclua seus bons programadores um pouco mais no processo de design.
Além disso,
"we can't write code fast enough if we do it like that".
é a desculpa mais burra para o trabalho pobre. Por favor, explique ao agressor que é preciso mais tempo para depurar e manter um programa mal escrito do que para escrevê-lo corretamente para começar. Uma pessoa que diz tal coisa, obviamente, nunca teve que ver um pedaço de código através de desenvolvimento para produção para revisão ad infinitum.