Есть ли у вас на проекте тех-аналитика?
Измеряете ли скорость запуска, расход батарейки?
Смотрите ли на продолжительность сборки на CI?
Приглядываете за скоростью инкрементальной сборки?
Анализируете граф зависимостей/связность кода?
🤔
59.6%
Метрик нет🤔
8.5%
Запуск / батарейка🤔
17.0%
Скорость сборки🤔
14.9%
Анализируем кодЕсли ваш проект небольшой, и вас в команде пара-тройка человек, то все технические проблемы можно диагностировать методом зоркого глаза.
Большая часть негативных изменений происходит очень плавно. Сборка становится медленней на треть секунды в день. Приложение запускается с каждым релизом чуть-чуть дольше.
Эти изменения в моменте не заметны даже самому зоркому глазу.
Чинить скорость сборки, или долгий запуск, или что-нибудь ещё начинаем только когда становится совсем плохо.
Во многом потому что раньше о этом никто не думает. И вообще надо фичи быстрее пилить.
В мире продуктовых менеджеров нормально измерять результат своих действий. Легировать действия пользователя, что бы убедится что новая фича решает задачу и не ломает показатели других фичей.
Разработчики редко заморачиваются измерением того, что находится в их зоне ответственности. Редко дело заходит дальше логирования скорости сборки на CI и настройкой линиера.
Бывало ли у вас такое, что спустя год после рефакторинг о починки архитектуры все разъезжалось обратно?
🤔
24.4%
Да! Регулярно чиним.🤔
22.0%
Да! И это грустно.🤔
22.0%
Нет. Мой проект идеален.🤔
31.7%
Нет. В проекте бардак.У меня пока нет крутого решения как автоматически присматривать за состоянием проекта, так что-бы он всегда был в идеальном состоянии.
Но стоит двигаться чуть дальше легирования скорости сборки.
Сокращение продолжительности на CI - всего лишь экономия ресурсов.
Для комфорта разработчика гораздо важнее скорость инкрементальной сборки.
А ее уже не так просто померить. Потому что она зависит от всего. И от производительности разных разработческих компьютеров. И от запущенности других программ на тех самых разработческих компах. И от зарядки ноута.
Но даже неточная оценка скорости инкрементальной сборки полезней, чем замер скорости сборки на CI.
С другой стороны можно логировать высоту графа зависимостей. Или строить более сложные метрики, анализирующие вашу модульность.
А чистом коде Роберта Мартина были приведены пара метрик. Сейчас не уверен что они нам чем то могут помочь. Но это то с чего можно начать.
Михаил Куренков