Как я учусь на чужом коде
В комментариях задали вопрос Расскажите, пожалуйста, как вы учитесь/учились на чужом коде. Например, вы увидели у коллеги интересный прием или подход, который хотели бы использовать в будущем, что вы в таком случае делаете? Как его не забыть, не потерять?
Короткий ответ — разбираюсь в коде, пока не придёт ощущение, что я его понял.
Длинный ответ ниже 👇
Когда я работал в Безопасном Поиске Яндекса, мы активно использовали местную реализацию стандартной библиотеки C (яндексоидам: речь о папке util в Аркадии). Там было (и наверняка есть) очень много интересных вещей, из которых можно было почерпнуть массу ценных приёмов программирования на C.
Как-то раз мне пришла спонтанная идея раз в месяц писать на всю компанию, что нового и полезного появилось в этой библиотеке. Для этого я стал отсматривать все коммиты туда (благо, их было лишь 5-10 в неделю), разбираться в них и собирать саммари за месяц. За счёт того, что я — раз за разом сталкивался с одними и теми же приёмами — через текст рассказывал о них на всю компанию,
они очень хорошо оседали у меня в памяти 😉 Я тогда снискал себе славу большого эксперта по утилю̀ (так библиотека называется в Яндексе), и очень многие стали ходить ко мне за советом.
Так что чтобы самому хорошо разобраться в чужом коде и запомнить его, объясните его другим.
Это опыт Яндекса. В СберТехе сейчас я действую по-другому. Какие-то по-настоящему крутые вещи, с которыми я сталкиваюсь, я запоминаю сразу, потому что они произвели на меня большое впечатление 🤯
Но чаще всего мне нужно много итераций, чтобы как следует разобраться в каком-то большом участке кода. Я уже неоднократно отмечал, что код на С очень громоздкий, поэтому с первого раза мне тяжело впихнуть его себе в голову. Я обычно начинаю с того, что рисую диаграмму вызова функций и про каждую из них делаю заметку, описывая важные особенности (например, что функция пишет свой результат в глобальную переменную).
Снова и снова возращаясь к коду, пересматривая свои диаграммы и перечитывая заметки, я в какой-то момент ловлю ощущение, что, наконец-то, разобрался.
Так что в этом случае запоминанию способствует большое количество повторений.
А что вам помогает запоминать полезные приёмы?