Я работаю инженером по контракту, и такая ситуация повторяется несколько раз в год — последние несколько десятилетий.
Я считаю весьма полезным сначала запустить приложение и поиграть с ним, прежде чем смотреть какой-либо код:
Пока я это делаю, я создаю ментальную модель того, как я бы это реализовал. Удивительно, но это ориентированное на пользователя первое знакомство с продуктом обычно приводит к тому, что мое понимание приложения оказывается на голову выше, чем у разработчиков, которые работали над ним долгое время. Побочным эффектом такого подхода является то, что я склонен находить довольно много ошибок (часто их довольно много) и думать о многих улучшениях, которые должны быть сделаны.
После этого я смотрю на общую структуру программы, будь то модули, классы, файлы или схема. Не глядя на отдельные строки кода, кроме тех, которые показывают архитектуру программы. Как только мне кажется, что я понимаю более половины структуры, я пытаюсь внести небольшое исправление или улучшение — что-то, что занимает несколько минут, чтобы написать, но может занять несколько часов, чтобы правильно понять. Если это сработает, я где-нибудь внесу чуть большее изменение, желательно в другой участок кода.
Таким образом, я нашел возможным достаточно хорошо понимать от 50 000 до 100 000 строк кода в день.
Ваш вопрос чем-то похож на эту тему
Может загляните в блог одного из соразработчик SO, у которого есть раздел «Новый разработчик» (кстати, это действительно забавно).
Способ, которым я всегда учился, помимо простого чтения кода/модели данных, заключается в том, чтобы начать исправлять некоторые ошибки. Это дает мне доступ к различным частям системы, а наличие «цели» при чтении кода делает его немного более значимым.
Попросите помощи у всех, кого сможете найти, и спросите им спросить любого, кто, по их мнению, может быть полезен.
Есть инструменты, которые загружают исходный код и рисуют картинки. Попробуйте Enterprise Architect от Sparx. Это менее 200 долларов за место и очень эффективно покажет вам расположение объекта.