Comece a fazer revisões de código ou emparelhar a programação.
Se a equipe não aceitar isso, tente revisões semanais de design. Toda semana, reúna-se por uma hora e fale sobre um pedaço de código. Se as pessoas parecerem defensivas, escolha um código antigo ao qual ninguém mais se apegue emocionalmente, pelo menos no começo.
Como @JesperE: disse, concentre-se no código, não no codificador.
Quando você vê algo que acha que deveria ser diferente, mas outros não vêem da mesma maneira, comece fazendo perguntas que levem às deficiências, em vez de apontá-las. Por exemplo:
Globals : Você acha que vamos querer ter mais de um desses? Você acha que queremos controlar o acesso a isso?
Estado mutável : Você acha que queremos manipular isso de outro thread?
Também acho útil me concentrar nas minhas limitações, o que pode ajudar as pessoas a relaxar. Por exemplo:
funções longas : meu cérebro não é grande o suficiente para armazenar tudo isso de uma vez. Como podemos fazer pedaços menores com os quais eu possa lidar?
nomes ruins : fico confuso com bastante facilidade ao ler código claro; quando os nomes são enganosos, não há esperança para mim.
Por fim, o objetivo não é ensinar sua equipe a codificar melhor. É estabelecer uma cultura de aprendizado em sua equipe. Onde cada pessoa procura ajuda para se tornar um programador melhor.