Как с помощью репозитория кода уменьшить затраты на онбординг в проект

Klara Abdukova
Mad Devs — блог об IT
4 min readJun 20, 2022
Как с помощью репозитория кода уменьшить затраты на онбординг в проект

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

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

В большинстве случаев вы можете даже не быть уверены, что новые члены вашей команды смогут справиться со всем объемом новой информации самостоятельно. Значит, нужен кто-то более опытный, чтобы помочь им, провести через лабиринт новой информации. Этот «кто-то» — один из ваших более опытных разработчиков, и он также потратит свое время на процедуры адаптации, руководство и обучение своих новых коллег. А значит больше расходов.

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

Понятная документация ReadMe

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

Позвольте мне пояснить, что означает понятная документация ReadMe.

Прежде всего, понятный ReadMe-документ должен быть простым для понимания (для начинающего разработчика) и простым в написании и сопровождении (для опытного специалиста, того, кто его пишет). Документ ReadMe может стать отличным путеводителем по проекту, если он:

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

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

Вопросы о продукте

  • Как развернуть и запустить продукт локально? Разработчик может запускать тесты локально, чтобы убедиться в их успешном прохождении
  • Как это программное обеспечение может быть использовано?
  • Как его настроить?

Вопросы об организации кода

  • Как организован код и как найти нужный?
  • Как пишется код (процесс, шаблоны)?

Вопросы о процессах в команде

  • Как я могу отправить PR?
  • Как я могу развернуть код?

По сути, четко написанная документация ReadMe позволяет новому разработчику понять, о чем проект, запустить его локально, протестировать и развернуть.

Обширное покрытие кода тестами

Здесь особенно не о чем говорить. Тесты, охватывающие более 50% кода, позволяют новому разработчику понять бизнес-логику проекта. Если тесты понятны, правильно написаны, поддерживаются и обновляются, и если разработчик может их запустить, это значительно снизит затраты на адаптацию.

Диаграмма архитектуры инфраструктуры программного продукта

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

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

CI/CD конвейер (непрерывная интеграция / непрерывная доставка)

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

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

CD выполняет подготовку и развертывание инфраструктуры.

Любой сбой на любом этапе — повод для отправки уведомления ответственному разработчику. Если все проходит гладко, вся команда получает уведомление об успешном развертывании программного обеспечения для пользователя.

Как можно использовать конвейер CI/CD для снижения затрат на адаптацию?

Он помогает новому разработчику понять из чего проект состоит, какие этапы разработки проходит и как разворачивается для конечного пользователя.

Ведение задач в таск-трекере и среда разработки IDE

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

  • Как была описана задача и какая цель поставлена;
  • Кто работал над ней;
  • Какие действия были совершены и кем;
  • Кто тестировал задачу и какие тесты запускались;
  • Какие исправления были реализованы, если были, и тому подобное.

Наряду с организацией работы команды среда разработки IDE (Integrated Development Environment) позволяет исключить необходимость ручной настройки и интеграции множества утилит. Каждая утилита, которая обычно используется командой, уже интегрирована в рабочую среду команды. Это также позволяет новым разработчикам как можно скорее начать использовать утилиты и инструменты команды и разрабатывать новые функции.

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

--

--