Что я узнал, читая чужой код по вечерам

Примерно год назад я взял за привычку раз в неделю по вечерам читать чужой код без всякой рабочей задачи — просто открывать случайный популярный open-source репозиторий и смотреть, как устроены решения, до которых сам бы не додумался. Привычка оказалась неожиданно полезной.
Почему не хватало кода с работы
На основной работе я, конечно, читаю чужой код постоянно — в рамках ревью пул-реквестов. Но это чтение всегда целевое: нужно проверить конкретное изменение, найти проблему, сравнить с существующим стилем. Это полезно, но узко — я вижу только дельту, а не архитектуру целиком.
Чтение стороннего кода без задачи — это другое упражнение. Оно ближе к чтению книги ради удовольствия, а не ради конспекта к экзамену.
Что удивило больше всего
Первое — насколько по-разному опытные разработчики решают одну и ту же задачу. Я был уверен, что для конкретной проблемы (скажем, ограничение скорости запросов) есть один «правильный» способ. Прочитав реализации в пяти разных проектах, я увидел пять разных, но одинаково обоснованных подходов — каждый со своим набором компромиссов.
Второе — хороший код не обязательно выглядит эффектно. Некоторые из самых надёжных проектов, которые я изучал, написаны нарочито скучно: понятные имена, минимум абстракций, никакой магии с рефлексией там, где можно обойтись явным кодом. Это совпадает с тем, что я вижу и на работе: код, который переживает годы поддержки, редко бывает «умным».
Третье — комментарии в хорошем коде объясняют «почему», а не «что». Строчка // retry три раза, потому что этот конкретный API иногда роняет соединение без видимой причины говорит
куда больше, чем // повторяем запрос.
Как я это применяю
После нескольких месяцев такого чтения я стал внимательнее относиться к собственным пул-реквестам — стараюсь оставлять код, который сам захотел бы прочитать вечером без задачи. Это неплохой внутренний тест: если бы этот файл попался мне в чужом репозитории, было бы интересно и понятно его читать?
Рекомендую эту привычку любому разработчику, который застрял в рутине однотипных задач. Необязательно читать что-то грандиозное — достаточно взять библиотеку, которой вы пользуетесь каждый день, и один раз посмотреть, как она устроена внутри.