Автор статьи: Дмитрий Курдюмов
Участвовал в Аджайл-трансформациях в крупнейших компаниях в России (Альфа банк, МТС, Х5 retail group), с международным опытом в стартапе за рубежом.
Важность предсказуемой доставки программного обеспечения
Предсказуемая доставка программного обеспечения — это одна из самых больших задач, с которыми сталкиваются команды разработчиков.
Неспособность предсказуемо доставлять программные продукты негативно сказывается на всех отделах компании, что в конечном итоге приводит к снижению удовлетворенности и удержания клиентов: маркетинговые команды не могут планировать эффективные кампании, команды продаж испытывают трудности с уверенностью в продаже элементов дорожной карты, а команды клиентского сервиса оказываются в сложной ситуации, когда они не могут гарантировать сроки поставки программного обеспечения. Это нарушает работу бизнеса и подрывает доверие между инженерным отделом и другими подразделениями.
Недостаток предсказуемости вредит и самим командам разработчиков. Разработчики, работающие в непредсказуемой среде, чаще подвержены выгоранию, их опыт работы ухудшается, а качество кода снижается из-за необходимости соответствовать нереалистичным срокам.
Предсказуемая доставка программного обеспечения = Стабильность + Скорость - Риски
Для достижения предсказуемой доставки программного обеспечения руководители инженерных команд должны сосредоточиться на трех ключевых факторах: стабильности, скорости и рисках. Балансировка этих элементов является основой надежного и эффективного цикла выпуска программного обеспечения.
Стабильность
Стабильность играет решающую роль и означает наличие стабильного времени выполнения задач, управляемого размера pull request (PR) и низкого уровня переделок. Команды с высокой стабильностью могут более эффективно планировать свою работу и надежно выполнять свои обязательства по доставке.
Ключевые показатели стабильности включают:
- Стабильное время выполнения задач: Стабильные команды поддерживают постоянное время выполнения задач, что является критически важным для предсказуемости. Этот показатель можно отслеживать с помощью метрики Cycle time разработки по месяцам
Регулярные предсказуемые релизы. Метрика Release frequency позволяет отслеживать регулярность и тренд частоты релизов
Управляемые размеры PR: Поддержание небольших и постоянных размеров PR гарантирует частые интеграции и уменьшает риски конфликтов.
Низкий уровень переделок: Команды, минимизирующие количество переделок, могут сосредоточиться на создании новой ценности, а не на исправлении проблем, которые должны были быть устранены ранее. Отслеживая количество переделок после выпуска в прод заставляет встраивать качество в процесс, чтобы минимизировать количество переделок.
Стабильное Velocity. Когда команда работает стабильно - длина спринта остается неизменной, а количество story points от спринта к спринту не имеет сильных колебаний.
Скорость
Скорость измеряет, насколько быстро вы можете реализовывать запросы бизнеса и зарабатывать на них деньги.
Ключевые факторы измеряющие скорость:
Lead time - время выполнения
Время выполнения от идеи до клиента. Данная статистика сбора времени выполнения по каждому элементу может позволить вычислять перцентиль по которому прогнозировать завершение новых задач. Смотреть на динамику метрики и планировать регулярные улучшения после ретроспектив и анализа метрик
Метрики DORA
Метрики DORA обеспечивают комплексное представление о том, насколько эффективно команда может доставлять программное обеспечение с высокой скоростью, сохраняя при этом стабильность и качество. Улучшение этих показателей помогает командам поддерживать высокий темп разработки и более предсказуемо доставлять программные продукты.
Вот некоторые из них:
Время жизни MR
Время жизни Merge Request (MR) — это период от момента создания MR до его слияния в основную ветку или закрытия. Этот показатель важен, потому что он отражает, сколько времени команда тратит на рассмотрение, тестирование и интеграцию изменений. Чем быстрее MR проходит через эти этапы, тем быстрее изменения попадают в продакшн, что напрямую влияет на скорость доставки программного обеспечения. Сокращение времени жизни MR может существенно повысить общую эффективность и предсказуемость разработки.
Lead time for changes
Lead time for changes — это время, которое проходит от момента внесения изменений в код (создание коммита) до момента, когда эти изменения успешно развернуты в продакшн и становятся доступными пользователям. Эта метрика важна, потому что она показывает, насколько быстро команда может доставить новый функционал или исправления ошибок.
Чем короче lead time for changes, тем быстрее команда может реагировать на запросы пользователей, исправлять баги и внедрять новые функции. Сокращение этого времени помогает ускорить процесс разработки и улучшить предсказуемость доставки программного обеспечения.
Частота развертываний (Deployment Frequency): Эта метрика измеряет, как часто команда выпускает обновления в продакшн. Высокая частота развертываний свидетельствует о том, что команда может быстро и регулярно внедрять изменения, что увеличивает скорость доставки новых функций и исправлений. Чем чаще развертывания, тем быстрее организация может реагировать на изменения требований или устранение багов, что позитивно сказывается на скорости.
Время восстановления после инцидентов (Time to Restore Service): Эта метрика измеряет, сколько времени нужно команде, чтобы восстановить систему после инцидента. Быстрое восстановление минимизирует время простоя и потери для бизнеса, позволяя команде быстрее вернуться к работе над новыми задачами. Быстрое устранение проблем также способствует поддержанию высокого темпа разработки, так как снижает задержки, вызванные внеплановыми работами
Все эти метрики являются ключевыми для повышения скорости доставки программного обеспечения, не жертвуя при этом качеством.
Оптимизация этих метрик позволяет не только ускорить процесс разработки, но и поддерживать стабильность, что в конечном итоге ведет к более предсказуемой и успешной доставке программного обеспечения.
Управление рисками
Риск является основным переменным в уравнении предсказуемости и одним из главных факторов, препятствующих командам доставлять продукт вовремя, независимо от их стабильности или скорости. Выявление потенциальных препятствий на ранней стадии и внедрение стратегий для их снижения имеет решающее значение для уменьшения рисков, связанных с временными рамками доставки программного обеспечения.
Риски доставки программного обеспечения:
Незапланированная работа: Незапланированные задачи, такие как исправление ошибок или срочные изменения, могут сбить с курса любую команду разработчиков. Такой вид работы обычно требует немедленного внимания, отвлекая ресурсы от запланированных задач и нарушая рабочий процесс команды. Ключ к успеху заключается в нахождении здорового баланса между правильным планированием итераций и оставлением буфера для выполнения дополнительных задач.
Технический долг: Технический долг — это дополнительная работа, необходимая для устранения проблем, возникающих из-за принятия сокращенных решений или компромиссов при попытке быстрее доставить программное обеспечение. Неконтролируемый технический долг со временем может привести к тому, что кодовая база станет хрупкой, трудной в поддержке и подверженной ошибкам. Это может замедлить процессы доставки и увеличить вероятность критических сбоев.
Увеличение объема работ (Scope Creep): Увеличение объема работ происходит, когда дополнительные функции или изменения добавляются в проект после его начала. Если не проводить полный анализ сроков доставки и ограничений по ресурсам, увеличение объема работ может привести к задержкам в проекте и выгоранию команды. Необходимо иметь четкие процессы для оценки и утверждения изменений, чтобы гарантировать, что любые изменения соответствуют изначальным целям проекта и его срокам.
Следить за показателями уровня Тех долга через метрики также важно, так и отслеживать объем незапланированной работы
Как прийти к предсказуемой поставке
Во многих компаниях уже понимают важность предсказуемой доставки программного обеспечения и внедряют инструменты, которые позволяют собирать и анализировать ключевые метрики для улучшения процессов разработки. Один из таких инструментов — Aimger. Он помогает командам получить четкое представление о своих показателях, оперативно реагировать на риски и, самое главное, значительно повысить предсказуемость и качество выпускаемых продуктов. В Aimger вы найдете дашборды и необходимые метрики которые повысят прозрачность вашей работы и позволят улучшать процесс.
Чтобы узнать об Aimger подробнее, подписывайтесь на Телеграм канал, где также найдете много других полезных статей об улучшении процессов.
Также в заключение приглашаем всех желающих на открытые уроки, которые пройдут в рамках курса "Product Manager IT‑проектов":
3 сентября в 19:00 — «Что точно используют при запуске продукта, чтобы не прогореть». Записаться
12 сентября в 19:00 — «Как стать продакт-менеджером, уже работая в ИТ? План действий». Записаться
17 сентября в 19:00 — «Эффективное использование данных: Как стать дата-дривен продакт-менеджером». Записаться