Commencez à faire des révisions de code ou à programmer des paires.
Si l'équipe ne les accepte pas, essayez des revues de conception hebdomadaires. Chaque semaine, rencontrez-vous pendant une heure et discutez d'un morceau de code. Si les gens semblent défensifs, choisissez l'ancien code auquel personne n'est émotionnellement attaché, du moins au début.
Comme @JesperE: l'a dit, concentrez-vous sur le code, pas sur le codeur.
Lorsque vous voyez quelque chose que vous pensez être différent, mais que les autres ne le voient pas de la même manière, commencez par poser des questions qui conduisent aux carences, au lieu de les signaler. Par exemple:
Globals : Pensez-vous que nous voudrons jamais en avoir plus d'un? Pensez-vous que nous voudrons contrôler l'accès à cela?
État mutable : pensez-vous que nous voudrons manipuler cela à partir d'un autre thread?
Je trouve également utile de me concentrer sur mes limites, ce qui peut aider les gens à se détendre. Par exemple:
fonctions longues : mon cerveau n'est pas assez gros pour contenir tout cela à la fois. Comment pouvons-nous fabriquer des pièces plus petites que je peux manipuler?
mauvais noms : je me trompe assez facilement en lisant du code clair; quand les noms sont trompeurs, il n'y a aucun espoir pour moi.
En fin de compte, l'objectif n'est pas que vous enseigniez à votre équipe comment mieux coder. Il s'agit d'établir une culture d'apprentissage dans votre équipe. Où chaque personne se tourne vers les autres pour l'aider à devenir un meilleur programmeur.