Меня зовут Илья Прахт.
Я опытный менеджер в IT, CTO, тренер и консультант.
Пишу про менеджмент, системно и со смыслом. Разбираю ваши кейсы.
Для получения бесплатной консультации заполни форму https://forms.gle/8GJ3bgeMNjeTMpMV8
Личный аккаунт @ilya_prakht
Post #221
1.43K
РЕФАКТОРИНГ VS ПРОЦЕССЫ – ЧТО БУДЕТ ПЕРВЫМ
Начинаю публиковать ответы по мотивам бесплатных консультаций. Напоминаю, что делаю это исключительно с вашего согласия. Форма для записи на консультацию вот.
Первым будет вопрос от Дмитрия Алина @raiserspb про приоритеты – с чего следует начинать: со сложного рефакторинга продукта или с построения процессов.
Итак, вопрос:
Есть команда программистов, я тимлид. Команда работает с определенной скоростью, слажена, но не настроены процессы типа код-ревью, ретроспектива и тд. Код настолько мохнатый легаси, что в несколько раз замедляет работу. Проект гигантский и приносит тонны денег. Можно взяться за процессы, а можно спланировать рефакторинг, построить архитектуру и постепенно начать вводить процессы после первых этапов рефакторинга. За что хвататься и в каком порядке?
Ответ:
На мой взгляд, ключевым фактором в решении будет безопасность и управляемость. Рискну предположить, что если взяться сразу за рефакторинг, то многое может посыпаться, а вы про это узнаете, мягко говоря, не сразу. А поскольку, проект приносит тонну денег, то это огромные риски для бизнеса и для вас, получить потом по шеям.
Поэтому, я бы, в первую очередь, фокусировался на обеспечении безопасности и прозрачности проведения подобного рефакторинга. Подготовить устойчивую среду для такого глобального преобразования. Здесь и юнит-тесты/автотесты, и код-ревью, возможно управление поставками и репозиторием, какие то метрики работоспособности продукта и их мониторинг, разные уровни окружений и т п. Имея все это, рефакторинг можно делать безопасно, без оглядки на возможные проблемы обратной совместимости и работоспособности вообще.
В задаче рефакторинга это особенно важно, поскольку он не приносит явного value для бизнеса в моменте, т е чистые инвестиции. Если к инвестициям добавить еще и операционные потери от ухудшения качества продукта, то бизнес такого уже не простит.
Ну а подготовив почву, можно планировать какие-то итерации и делать пошаговый рефакторинг. Будет возможность и проверить, и откатить быстро, если вдруг что то пойдет не так.
Для примера могу привести общие правила и фреймворки change management: сначала подготовка и “разморозка”, определение показателей для контроля и подтверждения результата, потом само изменение, а потом “заморозка”. Вот без разморозки бросаться в омут рефакторинга очень рискованно.
P.S. По словам Дмитрия, ответить на вопрос получилось 🙂
Google Docs Бесплатная консультация "Седого директора" Привет!
Меня зовут Илья Прахт, я опытный менеджер в IT, CTO, тренер, консультант и ментор.
Предлагаю совершенно бесплатную помощь в решении твоей проблемы. Можем пообщаться текстом или созвониться на 15 минут. Если дашь свое согласие, я поделюсь разбором… Начинаю публиковать ответы по мотивам бесплатных консультаций. Напоминаю, что делаю это исключительно с вашего согласия. Форма для записи на консультацию вот.
Первым будет вопрос от Дмитрия Алина @raiserspb про приоритеты – с чего следует начинать: со сложного рефакторинга продукта или с построения процессов.
Итак, вопрос:
Есть команда программистов, я тимлид. Команда работает с определенной скоростью, слажена, но не настроены процессы типа код-ревью, ретроспектива и тд. Код настолько мохнатый легаси, что в несколько раз замедляет работу. Проект гигантский и приносит тонны денег. Можно взяться за процессы, а можно спланировать рефакторинг, построить архитектуру и постепенно начать вводить процессы после первых этапов рефакторинга. За что хвататься и в каком порядке?
Ответ:
На мой взгляд, ключевым фактором в решении будет безопасность и управляемость. Рискну предположить, что если взяться сразу за рефакторинг, то многое может посыпаться, а вы про это узнаете, мягко говоря, не сразу. А поскольку, проект приносит тонну денег, то это огромные риски для бизнеса и для вас, получить потом по шеям.
Поэтому, я бы, в первую очередь, фокусировался на обеспечении безопасности и прозрачности проведения подобного рефакторинга. Подготовить устойчивую среду для такого глобального преобразования. Здесь и юнит-тесты/автотесты, и код-ревью, возможно управление поставками и репозиторием, какие то метрики работоспособности продукта и их мониторинг, разные уровни окружений и т п. Имея все это, рефакторинг можно делать безопасно, без оглядки на возможные проблемы обратной совместимости и работоспособности вообще.
В задаче рефакторинга это особенно важно, поскольку он не приносит явного value для бизнеса в моменте, т е чистые инвестиции. Если к инвестициям добавить еще и операционные потери от ухудшения качества продукта, то бизнес такого уже не простит.
Ну а подготовив почву, можно планировать какие-то итерации и делать пошаговый рефакторинг. Будет возможность и проверить, и откатить быстро, если вдруг что то пойдет не так.
Для примера могу привести общие правила и фреймворки change management: сначала подготовка и “разморозка”, определение показателей для контроля и подтверждения результата, потом само изменение, а потом “заморозка”. Вот без разморозки бросаться в омут рефакторинга очень рискованно.
P.S. По словам Дмитрия, ответить на вопрос получилось 🙂
- 👍 14
- 🔥 4
- ❤ 2
