Lean в Информационных технологиях
Дата: 19.08.2024
В сегодняшних условиях быстро развивающейся цифровой трансформации, растет потребность в принятии качественных, быстрых решений в условиях неопределенности. Цифровая трансформация несет с собой огромный потенциал для развития всех участников: каждого из нас, общества, бизнеса, государства. Она меняет нашу жизнь, образование, здравоохранение, бизнес-процессы, способ взаимодействия.
Для компаний, цифровая трансформация предлагает новые возможности для роста и развития. Благодаря цифровым технологиям, компании могут оптимизировать свои бизнес-процессы, улучшить маркетинговые стратегии и повысить уровень обслуживания клиентов, что требует гибкой структуры и адаптации к меняющимся условиям, для сохранения конкурентоспособности. Одновременно, все чаще можно услышать об имплементации практик Lean в информационных технологиях. Но что имеется ввиду?
Если попросить каждого из тех, кто читает эту статью, ответить на вопрос «Что такое lean?», мы получим большое разнообразие ответов. Они будут основаны на роли, которую занимает человек в компании, на разном понимании целей и стратегии, и конечно, на опыте взаимодействия с «Lean» в целом. Попробуем собрать общее.
Что такое Lean?
В нашей статье, Lean (бережливое мышление, бережливое производство) – это про создание максимальной ценности для клиента, потребителя или пользователя при минимальных затратах, что достигается за счет минимизации ресурсов, времени, энергии, усилий и потерь.
При этом Lean начинается с клиента. Что является ценностью для клиента в вашем продукте или услуге? Другими словами, какую проблему нужно решить клиенту? То, за что готов платить клиент. Часть продукта/услуги, которую оценивает клиент/покупатель и которая отражается в его цене.
Принципы Lean в ИТ
Принципы Lean уходят корнями в производственную систему Toyota, которая известна в мире своими инновационными и эффективными подходами.
Традиционно выделяют следующие принципы в Lean:
- Определение ценности с точки зрения клиента
- Минимизация бесполезных действий
- Оптимизация потока работы и информации
- Гибкость в работе с запросами клиентов и обратную связь
- Стремление к постоянному совершенствованию и обучению
- Уважение к людям
В свою очередь, при адаптации Lean к разработке программного обеспечения, Мэри и Том Поппендик предложили следующие принципы:
- Устранение потерь. Потерями считается всё, что не добавляет ценности для потребителя. В частности: излишняя функциональность; ожидание (паузы) в процессе разработки; нечёткие требования; бюрократизация; медленные внутренние коммуникации.
- Акцент на обучении. Короткие циклы разработки, раннее тестирование, частая обратная связь с заказчиком.
- Максимально отсроченное принятие решений. Решение следует принимать не на основе предположений и прогнозов, а после открытия существенных фактов.
- Предельно быстрая доставка заказчику. Короткие итерации.
- Мотивация команды. Нельзя рассматривать людей исключительно как ресурс. Людям нужно нечто большее, чем просто список заданий.
- Интегрирование. Передать целостную информацию заказчику. Стремиться к целостной архитектуре. Рефакторинг.
- Целостное видение. Стандартизация, установление отношений между разработчиками. Разделение разработчиками принципов бережливости. «Мыслить широко, делать быстро, ошибаться мало; учиться стремительно».
Другими словами, Lean помогает экономить без потери качества и минимизировать не создающие ценность (бесполезные) шаги из алгоритма работы бизнес процессов в компании. Зачем нам работать с потерями?
Возможно вам знакомы некоторые из проблем:
- Множество знаний накопленных в компании, в отдельном подразделении или команде, которые становятся узкими местами в рабочих процессах и создают сложности в поиске информации в нужный момент времени.
- Отсутствие реальных возможностей полноценного планирования, что приводит к культуре «сделать все», выгоранию сотрудников и проблемам с качеством, снижением предсказуемости процесса, которые являются естественным следствием.
- Практики, которые не работают без строгости и дисциплины, делают компанию уязвимой на каждом уровне управления.
- Неэффективные переговоры между подразделениями внутри компаний: финансами, маркетингом, продажами, разработкой. Приводящие к тому, что подразделения видят друг в друге не партнеров, а противников.
Список можно продолжить, и чаще всего проблемы связаны не с процессом или инструментами, а в первую очередь с культурой и отношением людей внутри компании. О сотрудничестве и безопасности.
Предназначение применения принципов Lean в разработке программного обеспечения заключается в том, чтобы помогать решать реальные проблемы клиентов, помогать командам и менеджерам в процессе создания ценности, сокращать потери, риски и ускорять время поставки ценности клиенту, повышать эффективность бизнес процессов. Как их реализовать? Необходимо сотрудничество всех для создания ценности для клиента.
Потери
Потери это то, что есть в нашем процессе, но что мы не замечаем. Так, издержки не являются потерями, это затраты, которые мы несём для того, чтобы продукт мог быть создан и мы об этом знаем.
Потери хорошо известны и достаточно заметны в производстве. Они исследовались на протяжении многих лет. Но по мере того, как мы переходим к разработке программного обеспечения, окружающая среда явно меняется, а потери, к сожалению, всё так же распространены. В то же время, потери труднее «увидеть», поскольку они трансформируются в другие категории, чем те, что встречаются на производстве физических продуктов.
Основываясь на работах Катрины Аппель, Джона Дрогожа, а так же на нашем опыте и видении, мы собрали виды потерь, часто встречающихся при разработке программных продуктов.
Функциональные колодцы
Передача артефактов от одного этапа к другому призвано митигировать риски. Практика же показывает, что набор артефактов в функциональных колодцах избыточен. А неправильное понимание передаваемой информации приводит к большим потерям.
Непосредственное общение является наиболее практичным и эффективным способом обмена информацией как с самой командой, так и внутри команды.
Agile-манифест
Артефакты незаменимы в одном из двух случаев:
- команда понимает, что нужно зафиксировать один или несколько аспектов для формирования общего понимания;
- компании нужно зафиксировать факт того, как работает продукт.
Ожидание
Ожидание данных, ответов, решений, обзорных событий и ресурсов: людей или техники, информации, данных или доступов к ИС. Это одна из самых распространенных потерь при разработке продукта, на которую может приходиться более 30% времени выполнения задачи.
Перепроизводство
Создание функциональностей, которые не будут востребованы клиентами. В зависимости от бизнес-модели, такое может происходить реже или чаще. Но чем более «бесплатной» выглядит разработка для бизнеса, тем больше возможностей и соблазнов делать не то, что будет покупаться клиентами, а то, что нравится заказчику.
Переработка и избыточные задачи
Повторное выполнение одной и той же работы — исправление ошибки, многократное рассмотрение одной и той же информации или многократное согласование. Некоторые итерации с использованием точечных подходов к разработке также приводят к большому количеству переделок и потере времени. Неполучение кросс-функциональных входных данных в нужное время также может привести к редизайну и переработке.
Переключение
Каждый раз, когда человеку приходится переключиться на новую задачу, это требует дополнительных усилий и времени. Создавая иллюзию, что мы ускоряемся, многозадачность может привести к той остановке и дополнительной работе, которая увеличит время выполнения задачи. А соответственно время всего процесса разработки продукта.
Велосипедостроение
Повторное создание или открытие знаний и инструментов, которые уже есть в компании, и которые мы могли бы повторно использовать. Это также включает знания, доступные за пределами организации. Доступный и своевременный обмен знаниями, а так же анализ трендов, могут стать движущей силой компании.
Использованный не по назначению потенциал
Люди, работающие над проектами и задачами, по которым не известна ценность для потребителя. Это одна из худших потерь, так как инвестиция таланта нашего самого ценного актива — наши квалифицированные люди могут быть демотивированы. Никто не хочет работать над продуктом, который клиент никому в итоге не нужен. Помните, что лин направлено на то, чтобы дать людям возможность.
Высокая вариация процесса
Различия в процессах могут быть вызваны тем, что каждый выполняет задачи по-своему, или потому, что отсутствует стандарт и обучение по нему. Обычно это приводит к вариациям данных на входе в процесс, различному времени выполнения типичных шагов в процессе. Такие вариации, в итоге, негативно сказываются на выходных данных процесс, продукте.
Перегрузка системы
Внедрение слишком большого объема работы в систему. Как только системы достигают примерно 80-процентной загрузки, небольшое увеличение объема работы резко увеличивает время выполнения всей работы в данной системе.
Крупные релизы вносят большой вклад в перегрузку системы и увеличивают время цикла.
Выдавать желаемого за действительное
Как впервые определил Аллен Уорд, широко известный как пионер в области разработки бережливых продуктов и процессов, эти потери могут принимать несколько форм. Принятие желаемого за действительное можно увидеть в принятии решений при неподтвержденных знаниях, установлении произвольных сроков, оценке времени для выполнения задач и чрезмерно оптимистичных ожиданиях от обучения или получения новых знаний.
Несинхронизированные одновременные задачи
Один из самых коварных потерь. Кажется правильным работать одновременно, но несинхронизированный параллелизм часто является основной причиной многих других потерь, упомянутых выше.
Может быть, вы видели некоторые из вышеперечисленных потерь в ваших процессах, в ваших действиях?
Поскольку все так заняты работой, которую необходимо выполнять изо дня в день, мы иногда воспринимаем вышеупомянутые потери просто как часть работы. Однако единственный способ высвободить время для ускорения создания новой ценности — начать учиться видеть и устранять эти потери.
Как работать с потерями
О производственной системе Toyota когда-то кто-то сказал, что она о сокращении потерь и с тех пор ее опыт почему-то понимают довольно узко – в направлении именно работы с потерями. Однако, в Toyota полноценное производство со множеством процессов (как и в производстве интеллектуального продукта), которое управляется более гармонично и устойчиво, по сравнению с другими производствами. Там не забывают думать о потребителе, об условиях труда для своих сотрудников, о развитии людей, синхронизации процессов и т.п. А борьба с потерями – это то, что на поверхности.
Компании ежегодно инвестируют в разработку ПО, но часто эти инвестиции не связаны с реальными стратегическими потребностями и становятся источниками огромных потерь, затрат, разочарований и препятствий для повышения производительности.
С каких потерь нужно начинать работать в первую очередь? Стремиться к минимизации инцидентов/багов/брака в области безопасности и качества, не умаляя значение уменьшения потерь в производительности и многое другое, важнее про безопасность людей (переработки, выгорание может быть фатальным для человека) и качество получаемого продукта/услуги.
Возможно, обучение в процессе создания ценности – одна из самых разумных вещей, которые мы можем сделать.
Как работать с потерями – активировать действия, опираясь на принципы описанные выше. Однако, опираясь на опыт, хотелось бы поговорить о следующем:
- Внедрение принципов Lean обязательно столкнется с сопротивлением со стороны менеджмента и команд. На вовлечение в работу над потерями может потребоваться время и усилия команды лидеров изменений.
- В вашем процессе разработки ПО может могут быть и другие виды потерь, и отсутствовать те, что перечислены выше. Необходимо адаптировать системную работу с обнаружением и устранением потерь с вашим контекстом и потребностями бизнеса.
- Изменение мышления людей не происходит так быстро, как обычно ожидается результат. Важно работать с ожиданиями заинтересованных лиц с самого начала и на постоянной основе.
Заключение
Такая система существенно влияет на успешность бизнеса и его конкурентоспособность вне зависимости от того, управляют ею осознанно или нет. Применение Lean является ключом к повышению производительности компаний, разрабатывающих программное обеспечение. Компании, опирающиеся на принципы Lean при разработке программного обеспечения обеспечат свою конкурентоспособность, возможность адаптироваться под потребности клиента и гибкость бизнеса. Через устранение потерь, формирование культуры непрерывного обучени и безжалостное улучшение процессов и структуры выстраивается высокоэффективная производственная система, которая обеспечивает качество и скорость создания программного продукта.