🔥

Тред (Михаил Куренков)


Есть ли у вас на проекте тех-аналитика? Измеряете ли скорость запуска, расход батарейки? Смотрите ли на продолжительность сборки на CI? Приглядываете за скоростью инкрементальной сборки? Анализируете граф зависимостей/связность кода?
🤔 59.6% Метрик нет
🤔 8.5% Запуск / батарейка
🤔 17.0% Скорость сборки
🤔 14.9% Анализируем код

Если ваш проект небольшой, и вас в команде пара-тройка человек, то все технические проблемы можно диагностировать методом зоркого глаза.

Большая часть негативных изменений происходит очень плавно. Сборка становится медленней на треть секунды в день. Приложение запускается с каждым релизом чуть-чуть дольше. Эти изменения в моменте не заметны даже самому зоркому глазу.

Чинить скорость сборки, или долгий запуск, или что-нибудь ещё начинаем только когда становится совсем плохо. Во многом потому что раньше о этом никто не думает. И вообще надо фичи быстрее пилить.

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

Разработчики редко заморачиваются измерением того, что находится в их зоне ответственности. Редко дело заходит дальше логирования скорости сборки на CI и настройкой линиера.

Бывало ли у вас такое, что спустя год после рефакторинг о починки архитектуры все разъезжалось обратно?
🤔 24.4% Да! Регулярно чиним.
🤔 22.0% Да! И это грустно.
🤔 22.0% Нет. Мой проект идеален.
🤔 31.7% Нет. В проекте бардак.

У меня пока нет крутого решения как автоматически присматривать за состоянием проекта, так что-бы он всегда был в идеальном состоянии. Но стоит двигаться чуть дальше легирования скорости сборки.

Сокращение продолжительности на CI - всего лишь экономия ресурсов. Для комфорта разработчика гораздо важнее скорость инкрементальной сборки.

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

Но даже неточная оценка скорости инкрементальной сборки полезней, чем замер скорости сборки на CI.

С другой стороны можно логировать высоту графа зависимостей. Или строить более сложные метрики, анализирующие вашу модульность. А чистом коде Роберта Мартина были приведены пара метрик. Сейчас не уверен что они нам чем то могут помочь. Но это то с чего можно начать.

Михаил КуренковМихаил Куренков