Хабрахабр

[Перевод] Как разобраться в «иностранном» коде и влиться в новую команду?

Как только разработчик попадает в компанию и получает задачу, чаще всего оказывается, что ему нужно присоединиться к общему проекту какой-то команды, а не писать свой код с нуля.

Но как начать быстро понимать чужой проект, при том что он вряд ли небольшой, а документации часто либо вообще нет, либо она недостаточна и неточна?
Любой код имеет собственную логику, основан на определенных принципах, в нем встречаются паттерны и технологии, характерные для команды, к которой присоединился программист.

Напоминаем: для всех читателей «Хабра» — скидка 10 000 рублей при записи на любой курс Skillbox по промокоду «Хабр».

Skillbox рекомендует: Онлайн-курс «Профессия Frontend-разработчик».

На самом деле лучшая документация — это сам код и те, кто этот код создавал (при условии, что они до сих пор где-то рядом, а не ушли из компании). Как можно снизить временные затраты до минимума и быстро приступить к работе, внося и свою лепту?

Я неоднократно сталкивался с такой ситуацией за последние 15 лет своей работы программистом, и вот мои размышления по этому поводу.

Цели и задачи проекта

Первая вещь, которую вы должны сделать, — потратить немного времени на то, чтобы понять, какую задачу (задачи) выполняет приложение, код для которого вы создаете. Это глобальная задача; решив ее, вы справитесь и со всем остальным.

Общее понимание позволит вам быстрее разобраться в мелочах. Нельзя работать над проектом, не представляя себе, зачем он вообще нужен. Кирпичик за кирпичиком — так и строится дом. Кроме того, ваша собственная работа будет выполняться более слаженно с остальным коллективом.

Архитектура

После того как вы узнали основную задачу, посвятите себя разбору выполнения кода и его логики.

В самом начале постарайтесь найти техническую документацию (или же поспрашивать о ней коллег), с тем чтобы видеть основную логику. Архитектура некоторых проектов довольно сложна, в особенности если базовые технологии этих проектов вам не очень хорошо знакомы.

Держа в голове структуру проекта, вы быстрее сможете начать работу, причем так, чтобы не мешать функционированию всех остальных частей, которыми занимаются другие члены команды.

В проекте могут встречаться фрагменты, которые нарушают общую логику, но, зная идею и архитектуру, вы сможете исправить проблему, переставить или изменить «кирпичики» так, чтобы они идеально вписывались в общее здание.

Паттерны (шаблоны)

Существует большое количество паттернов, используемых разработчиками при написании кода. Это структурные шаблоны, «поведенческие», технологические и другие. Все они помогают типизировать способы решения часто встречающихся проблем при проектировании программ.

В итоге вы сможете создавать связный код, который будет соответствовать общей логике и паттернам, что в конечном итоге приведет к гораздо меньшему количеству комментариев к коду, лучшему его пониманию и оперативному устранению ошибок в случае необходимости. Понимание того, какие шаблоны используются в вашем текущем проекте, поможет уже на уровне классов понять, как функции должны быть встроены в код.

Поработав немного над проектом, вы сможете с первого взгляда понимать, какие участки кода вписываются в общую структуру, а что требует рефакторинга.

Руководящие принципы

В большинстве команд есть определенные правила, вернее, набор правил, согласно которым все действуют. Речь идет не только про общие принципы работы, но и про использование классов и уровней приложения. Если представители команды руководствуются одними и теми же руководящими принципами, то разрабатываемый код легче понимать и читать.

В первую очередь они касаются того языка программирования, который является основным при разработке. Скорее всего, у команды, к которой вы присоединитесь, тоже есть руководящие принципы, которые вам необходимо изучить.

Есть несколько методов получения необходимого, кроме тех, что уже озвучивались выше: Вы можете спросить, где вообще взять всю информацию о проекте, его архитектуре, шаблонах и руководящих принципах.

  • Ищите любую информацию, даже ту, что можно считать неактуальной; постройте собственную базу знаний общих терминов, аббревиатур и концепций, которые использует ваша команда.
  • Как только эта база готова, вы можете обсуждать все интересующие вас вопросы с руководителем проекта, поскольку уже говорите на одном языке.
  • Кроме того, стоит поговорить с архитекторами приложения и тимлидами об общей архитектуре вашего проекта. Затем попробуйте узнать больше об этой архитектуре и методах оптимизации кода, связанных с ней. Если вы видите что-то, что, по вашему мнению, нарушает общую логику приложения, обязательно обсудите это с тимлидом.
  • Выясните у коллег по команде какие шаблоны и правила используются в ходе работы над кодом — как при написании, так и при дальнейшем обслуживании. После того как узнаете основные моменты, сравните, что лучше работает, и действуйте соответствующим образом в дальнейшем.
  • Попробуйте почистить участок кода от потенциальных и реальных проблем — это поможет вам получить более глубокое представление о проекте и его коде. Что ваша команда использует при наведении порядка в коде?

Вообще говоря, рефакторинг — лучшая возможность вовлечь вашу команду в обсуждение того, какие руководящие принципы стоит пересмотреть, а какие — использовать в дальнейшем.

Рабочие встречи могут стать надежным каналом получения дополнительной информации; на них же стоит рассказывать о своих наблюдениях/достижениях, о том, что может оказаться полезным для всех. Делитесь с командой собственными наработками, активно принимайте участие в рабочих встречах, обсуждайте текущие проблемы, архитектуру приложения и его элементов, шаблоны и другие важные моменты.

В итоге вы сможете не только быстро начать работу, но и влиться в команду, став незаменимым ее участником в течение короткого времени.

Но это случается почти всегда — бывают команды, где все идеально, но их мало.
Конечно, вам будут встречаться люди, с которыми тяжело общаться; проблемы будут и с кодом.

Skillbox рекомендует:

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть