Достаточно часто перед менеджерами разработки, включая тимлидов, стоит задача по оценке качества кодовой базы. Такое может возникать в случае принятия кода от аутсорс-команды (или даже одного аутсорсера) либо при покупке компании целиком.
Сложность здесь заключается в том, что для того, чтобы оценить кодовую базу максимально полно, необходимо просмотреть весь код, а еще и желательно поработать с ним. В случае же оценки обычно нет такого количества времени. Я предлагаю набор вариантов, с помощью которых можно оценить кодовую базу с различной точностью, в зависимости от ресурсов, которые имеются в наличии.
Быстро, но не точно.
- Наличие документации. Если документация существует и она актуальна, то это хороший знак. В частности стоит обратить внимание на наличие следующей информации:
- Разворачивание кода в различных окружениях;
- Описание структуры кода;
- Используемые язык программирования, фреймворки. Версии используемых инструментов;
- Схемы работы программы;
- Наличие тестов различного уровня. Если тесты есть и можно посмотреть процент покрытия, то это жирный плюс. Стоит обратить внимание на следующие тесты:
- Unit-тесты;
- API-тесты;
- Интеграционные тесты;
- Нагрузочные тесты;
- Фаззинг-тесты;
- Используемые технологии. Используемый в коде стек может быть "не родным" для компании, которая принимает код. Это означает, что компетенций в этом стеке может не хвататить для эффективной работы с кодом, плюс надо задуматься о найме специалистов либо об обучении текущих, что выливается в финансовые затраты.
- Версии используемых технологий. Если используются последние версии (в т.ч. LTS - Long Term Support), это плюс. Использование же старых версий выльется в необходимость обновления и потенциальные проблемы с ИБ (особенно, если приемщику кода необходимо проходить аудиты ИБ);
- Метрики кода. Например, цикломатическая сложность, размеры функции, связность-сцепление кода и так далее. Такую информацию можно получить с помощью инструментов типа SonarQube.
Медленно, но точно
- Разворачивание кода. Можно проверить, насколько просто разворачивается локальное окружение. Для этого можно привлечь штатных сотрудников либо нанять аутсорсов со знанием нужного стека. Такая проверка покажет в реальности, сколько времени (и, как следствие, денег) необходимо потратить на старт работы с кодом. Если с локальным окружением все хорошо и нужна более детальная информация, можно развернуть код на тестовом окружении;
- Внесение пробных изменений. Относительно дорогая операция, но покажет достаточно много, так как реализует самый распространенный сценарий работы с кодом. Здесь также можно привлечь штатных сотрудников либо аутсорсеров со знанием нужного стека.
Я представил лишь несколько методов оценки: быстрый (проверка документации, тестов, технологий) и медленный (разворачивание кода, пробные изменения). Выбор зависит от ресурсов и целей. Важно помнить, что оценка - лишь начало процесса, требующего анализа и планирования. Правильная оценка снижает риски и обеспечивает успешную интеграцию или поддержку кода.