Хороший вопрос. У меня не было вашего опыта, но в подобных случаях мне нравится думать: "Как съесть кита?". Ответ (предсказуемо) - "по кусочку за раз". Разумные люди не будут ожидать, что вы сразу же все поймете, но они захотят увидеть прогресс. Возможно, в большом проекте есть небольшие участки, не слишком сложные, без большого количества зависимостей. Поработайте над пониманием одного из них, и вы на один "кусочек" (и/или "байт") приблизитесь к знанию всего проекта.
Будучи знакомым со всей существующей документацией, я бы попытался получить общую картину. Буквально.
Я бы использовал GrandPerspective на Mac или WinDirStat на Windows. Это даст вам некоторое представление о структуре файлов проекта (иногда это дает некоторые подсказки о структуре кода). Имея это, вы можете расспросить своих коллег о некоторых кластерах, о том, что они делают, как они связаны друг с другом.
Это важно, чтобы проект постоянно компилировался, если вы собираетесь вносить какие-либо изменения. Наличие тестов, выполняемых во время сборки, всегда хорошо, так что попросите об этом. Еще лучше, если есть какой-то сервер непрерывной интеграции. Если он есть, посмотрите на его конфигурацию - выясните, как выполняется сборка. Если CI-сервера нет, но вы уже знаете, как собирать проект, создайте такой сервер на своей локальной машине и покажите его своим товарищам - они должны влюбиться в него.
Это полезно, особенно для Java-проектов. Этот инструмент отлично справляется со своей задачей. Это даст вам больше деталей о структуре кода, а иногда и об архитектуре системы. Этот опыт может быть иногда трудным, вы можете узнать из этого инструмента, что код - это в основном большой клубок грязи ;)
Если вам повезет, то могут быть тесты JUnit или CPPUnit. Всегда полезно попытаться понять, что делают эти тесты. Это может стать хорошей отправной точкой для дальнейшего изучения кода.
«Я прошел курс скорочтения и прочитал« Войну и мир »за двадцать минут. Это касается России». (Вуди Аллен)
Я согласен с тем, что другие говорили до меня. Вам понадобятся некоторые инструменты, которые дадут вам обзор кода. Я лично использовал inFusion ( http://www.intooitus.com/inFusion ), потому что он дает также другие интересные данные помимо структуры.
Я согласен с первым комментарием, но я также думаю, что вам нужно научиться и каким-то образом увидеть общую картину. Вы должны хотя бы отследить основной поток из кода.
Метод, который сработал для меня лучше всего, - это взять копию из контроля исходного кода, с намерением выбросить эту версию...
Затем попробуйте рефакторить код. Еще лучше, если вы можете рефакторить код, над которым, как вы знаете, будете работать позже.
Это эффективно потому, что:
Вложите деньги в покупку этой книги:
http://www.amazon.co.uk/Refactoring-Improving-Design-Existing-Technology/dp/0201485672
Но эти ссылки должны помочь вам начать:
Признаки того, что ваш код нуждается в рефакторинге и какой рефакторинг использовать (Из книги Refactoring - Martin Fowler) http://industriallogic.com/papers/smellstorefactorings.pdf
Таксономия запахов кода: http://www.soberit.hut.fi/mmantyla/BadCodeSmellsTaxonomy.htm
Удачи!!!
Мои коллеги были замечательными людьми и отвечу на многие вопросы I. Мои работодатель нанял меня, зная, что я начальный уровень.
Тебе не о чем беспокоиться, твой работодатель знает, на что ты способен, и твои коллеги, кажется, хотят помочь тебе - если честно, большинство разработчиков любят объяснять вещи другим ...
Из чего Я видел, что на то, чтобы полностью овладеть языком, требуется более 6 лет, так что не ожидайте, что станете гуру в течение года ... и даже эти так называемые гуру в конечном итоге изучают что-то новое о своем языке каждый день.
Изучение новой системы (большой) всегда требует времени ... системы обычно строились не за 2 недели, а за много лет, поэтому пока не ожидайте, что вы поймете ее полностью. В конце концов, вы узнаете, что делает каждая деталь, по частям.
Я знаю, что вы чувствуете, потому что однажды я так себя чувствовал ...