Что такое картирование потока создания ценности?

Картирование потока создания ценности (ПСЦ) — это метод анализа, который применяется в рамках так называемого бережливого производства (lean manufacturing). Он помогает проанализировать рабочие процессы и оптимизировать их, устранив различные виды потерь.

Анализу подвергаются все этапы превращения сырья в готовую продукцию, включая производственные линии, хранение и логистику, чтобы понять, как повысить их эффективность.

Процедура включает в себя картирование процесса от начала до конца и выявление различных потерь, таких как перепроизводство, время ожидания, ненужные перемещения, брак. Затем разрабатывается и реализуется план по максимальному сокращению этих потерь.

Концепция бережливой разработки ПО использует принципы и методы бережливого производства, в том числе картирование ПСЦ, для оптимизации жизненного цикла разработки ПО и улучшения качества конечного продукта.

Философия бережливой разработки дополняет принципы Agile и DevOps, в которых делается акцент на преимуществах итеративных циклов с постоянной обратной связью, а также на необходимости повышения качества для более быстрого создания ценности.

В процессе разработки картирование ПСЦ может быть полезным независимо от того, реализовали ли вы CI/CD-пайплайн или только приступаете к этому.

Если вы опишете все шаги, людей и инструменты, которые участвуют в процессе с момента возникновения идеи до самого релиза, вам будет проще визуализировать жизненный цикл продукта.

Составленная карта поможет упростить взаимодействие между Dev- и Ops-командами, получить единое представление о том, какую ценность создает каждый из этапов процесса, а также устранить сомнения и повысить мотивацию всех участников.

После составления общей схемы процесса можно начинать искать области потерь — действия, которые не создают дополнительной ценности для пользователя (будь то прямо — в виде необходимой функциональности, или косвенно — например, обеспечивая стабильную работу).

Типы потерь, используемые в концепции бережливого производства, были адаптированы к разработке ПО. Получился следующий список:

Лишние функции

Ненужные функции — аналог перепроизводства на промышленных предприятиях. Создание функций, которыми никто не пользуется, — потеря времени и ресурсов. Работа короткими циклами с частыми релизами, следование принципам создания минимально жизнеспособных продуктов, а также непрерывный сбор и анализ обратной связи помогают определить дальнейшее направление работы и не тратить время и силы на разработку бесполезных функций.

Переключение между задачами

Переключение между задачами приводит к потерям времени, поскольку не дает войти в состояние потока. Всякий раз, когда вы прерываете работу над задачей, нужно время, чтобы снова настроиться на продуктивный лад. Полностью автоматизированный пайплайн, в котором не нужно вручную запускать каждый этап тестирования, позволяет избежать переключения между задачами. Кроме того, полезно ограничить количество уведомлений, чтобы отвлекаться только на действительно важные проблемы, такие как сбой в производственной среде, а не проваленный юнит-тест.

Ожидание

Ожидание — одна из самых очевидных ситуаций, когда теряется время: задержки на любом этапе разработки откладывают выход продукта на рынок. Если уменьшить объем передачи рабочих материалов из рук в руки и автоматизировать все, что может быть автоматизировано, — сборку, тестирование, развертывание и получение обратной связи — время ожидания значительно сократится.

Лишние процессы

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

Дефекты

Дефекты приводят к лишней работе и затратам времени, поскольку их приходится устранять. Если же ПО с ошибками доходит до пользователей, ухудшается их впечатление о продукте. Короткие циклы разработки с автоматическим тестированием — проверенный способ обеспечения качества. При такой организации работы удается обнаружить проблемы на ранних этапах и легче понять причины проблем. Когда ошибки обнаруживаются в производственной среде, можно быстро выпустить исправление, чтобы минимизировать проблемы для пользователей.

Работа, выполненная частично

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

Передача наработок

Передача наработок другой команде для выполнения следующего этапа приводит к задержкам (например, другая команда может быть не готова сразу же приступить к работе). Кроме того, вторую команду необходимо ввести в курс дела — либо на словах, либо предоставив документацию. Порой часть информации в процессе передачи теряется, и ее приходится добывать заново. Все это приводит к лишним тратам времени и сил, замедляя работу. Минимизация передачи работы между разными командами и создание универсальных команд, отвечающих за весь жизненный цикл ПО позволяет сократить такие потери.

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

Следуя принципам бережливости, DevOps и Agile, стоит внедрять изменения пошагово, отслеживая их эффект и непрерывно собирая обратную связь, чтобы при необходимости скорректировать свои действия.

И последнее: картирование ПСЦ не должно само стать причиной потерь времени и ресурсов. Конечно, можно долго изучать правильные символы и вводить информацию в специальный инструмент для создания цифровой карты, но для начала вполне достаточно простой доски с маркерами, чтобы предварительно прикинуть, сколько пользы вам принесет картирование ПСЦ.