Comience a hacer revisiones de código o programar pares.
Si el equipo no quiere esos, intente revisiones de diseño semanales. Cada semana, reúnanse durante una hora y hablen sobre una pieza de código. Si las personas parecen estar a la defensiva, elija un código antiguo al que ya nadie esté apegado emocionalmente, al menos al principio.
Como @JesperE: dijo, concéntrese en el código, no en el codificador.
Cuando ve algo que cree que debería ser diferente, pero otros no lo ven de la misma manera, entonces comience haciendo preguntas que conduzcan a las deficiencias, en lugar de señalarlas. Por ejemplo:
Globales : ¿Crees que alguna vez querremos tener más de uno de estos? ¿Crees que queremos controlar el acceso a esto?
Estado mutable : ¿Crees que queremos manipular esto desde otro hilo?
También me parece útil concentrarme en mi limitaciones, que pueden ayudar a las personas a relajarse. Por ejemplo:
funciones largas : mi cerebro no es lo suficientemente grande como para contener todo esto a la vez. ¿Cómo podemos hacer piezas más pequeñas que pueda manejar?
malos nombres : me confundo fácilmente cuando leo un código claro; cuando los nombres son engañosos, no hay esperanza para mí.
En última instancia, el objetivo no es que le enseñes a tu equipo cómo codificar mejor. Es establecer una cultura de aprendizaje en su equipo. Donde cada persona busca ayuda de los demás para convertirse en un mejor programador.