Здесь много хороших ответов. Некоторые вещи, которые я бы добавил:
Когда вам приходится объяснять код кому-то еще, часто в ходе объяснения разработчик может внезапно понять, что у него есть ошибка. Я видел, как это происходит снова и снова, когда разработчик останавливается на месте и говорит: «О, подождите, это неправильно», прежде чем рецензент понял это достаточно хорошо, чтобы увидеть ошибку.
Знание того, что ваш код будет проверен кем-то другим, дает вам больше стимулов использовать стандарты кодирования (облегчая обслуживание) или использовать менее «ковбойские» методы, которые никто, кроме вас (а иногда и даже вы сами), никогда не поймет. Вы не хотите смущаться, когда вы показываете свой код кому-то другому, поэтому вы лучше справляетесь с этим. Из-за фактора смущения он оставляет меньше кода с комментариями: «Я не знаю, почему это работает, но не связывайтесь с ним». в кодовой базе.
Разработчики, которые нуждаются в более широком надзоре или обучении, легко идентифицируются. Так и откровенно некомпетентны. Чем раньше вы сможете найти и решить проблемы с производительностью, тем лучше будет команда в целом и тем выше будет качество приложения. Хорошо узнать эту информацию, прежде чем взять нового парня, который нуждается в обучении, и назначить его для самой сложной, самой важной части вашего приложения.
Иногда это просто вопрос исправления неправильного восприятия, которое спасет от повторения той же ошибки в куче других мест. Например, мы недавно просматривали некоторые SQL для сложных отчетов и обнаружили, что у некоторых наших новых разработчиков было одинаковое недопонимание относительно того, где найти конкретную часть информации в базе данных (по общему признанию место, которое они выбрали, казалось логичным, что является проблемой проектирования базы данных, которую мы также необходимо исправить), что будет иметь решающее значение для правильного написания всех отчетов. Обнаружив проблему и исправив ее в первых отчетах, которые они написали, она сохранила ту же ошибку, что и в остальных отчетах. И кое-что старшие (во времени, работающие здесь, а не в возрасте) разработчики настолько привыкли к тому, что не думали, что это нужно объяснять.
Младшие могут извлечь уроки из более сложного кода, написанного старшими (которые, например, лучше понимают перехват ошибок и крайние случаи), а старшие могут узнать из новых методов, используемых младшими, с которыми они еще не сталкивались.
Иногда люди, работающие над разными, но связанными частями приложения, понимают, что они движутся в двух разных и взаимоисключающих направлениях. Упс, проще исправить
Не так легко проникнуть в жестко закодированные значения, которые со временем изменятся, просто чтобы заставить вещь работать сейчас. Это предотвращает множество будущих ошибок, таких как вещи, которые меняются в начале каждого финансового года.
Иногда я зацикливался на том, как что-то сделать, и изучал новую технику, которая была именно тем, чего я хотел от просмотра кода чужих вещей.
Если вы знакомы с тем, как думают другие члены вашей команды (какой анализ кода поможет вам в этом разобраться), вам будет легче решать проблемы позже, потому что вы начнете с понимания того, как Джо подошел бы к такому виду. проблема.