Beaucoup de bonnes réponses ici. Certaines choses que j'ajouterais:
Lorsque vous devez expliquer du code à quelqu'un d'autre, souvent au cours de l'explication, le développeur peut soudainement se rendre compte qu'il a un bogue. Je l'ai vu se produire encore et encore que le développeur s'arrête net dans ses pistes et dit "oh attendez, c'est faux" avant que le critique n'ait assez bien compris la chose pour voir le bug.
Le fait de savoir que votre code sera inspecté par quelqu'un d'autre vous incite davantage à utiliser des normes de codage (facilitant la maintenance) ou à utiliser moins de méthodes "cowboy" que personne sauf vous (et parfois même pas vous-même) ne comprendra jamais. Vous ne voulez pas être gêné lorsque vous montrez votre code à quelqu'un d'autre, vous faites donc un meilleur travail en premier lieu. En raison du facteur d'embarras, il laisse moins de code commenté avec: "Je ne sais pas pourquoi cela fonctionne mais ne le dérange pas." dans la base de code.
Les développeurs qui ont besoin d'une supervision ou d'une formation plus approfondie sont facilement identifiés. Il en va de même pour les incompétents. Plus tôt vous pourrez trouver et résoudre les problèmes de performances, mieux l'équipe dans son ensemble et meilleure sera la qualité de l'application. Il est bon de découvrir ces informations avant de prendre le nouveau gars qui a besoin de formation et de l'affecter à la partie la plus difficile et la plus critique de votre demande.
Parfois, il s'agit simplement de corriger une perception erronée qui évitera de faire la même erreur dans un tas d'autres endroits. Par exemple, nous avons récemment examiné certains codes SQL pour des rapports complexes et avons constaté que plusieurs de nos nouveaux développeurs avaient le même malentendu quant à l'endroit où trouver une information spécifique dans la base de données (il est vrai que l'endroit qu'ils ont choisi semblait logique, ce qui est un problème de conception de base de données que nous doivent également être corrigés) qui seraient essentiels pour rédiger correctement tous les rapports. En trouvant le problème et en le corrigeant dans les premiers rapports qu'ils ont écrits, il a sauvé la même erreur de se produire dans le reste des rapports. Et quelque chose que les développeurs plus âgés (en travaillant ici et non en vieillissant) étaient si habitués qu'ils ne pensaient pas qu'il fallait expliquer était sorti.
Les juniors peuvent apprendre du code plus sophistiqué écrit par les seniors (qui ont tendance à mieux comprendre le piégeage d'erreurs et les cas marginaux par exemple) et les seniors peuvent apprendre des nouvelles techniques utilisées par les juniors auxquelles ils n'ont pas encore été exposés.
Parfois, les personnes travaillant sur des parties différentes mais liées de l'application se rendent compte qu'elles vont dans deux directions différentes et mutuellement exclusives. Oups, plus facile à réparer maintenant.
Ce n'est pas si facile de se faufiler dans des valeurs codées en dur qui changeront avec le temps juste pour que la chose fonctionne maintenant. Cela évite de nombreux bugs futurs tels que des choses qui changent au début de chaque exercice.
J'ai parfois été coincé sur la façon de faire quelque chose et j'ai appris une nouvelle technique qui était exactement ce que je voulais du code en examinant les choses de quelqu'un d'autre.
Si vous savez comment les autres membres de votre équipe pensent (quel examen de code vous aidera à comprendre), il sera plus facile de résoudre les problèmes plus tard, car vous commencerez par comprendre comment Joe aurait abordé ce type de problème.