В настоящее время на слуху термин «бережливое производство» (Lean).
Все мы знаем результаты использования этой идеи в Toyota, которая позволила производить небольшие партии компонентов точно в срок (Just-In-Time, JIT).
В книге «Секреты Microsoft» (1995) авторы (Кусумано и Ричард Селби) описали подходы к контролю качества, аналогичные Lean, используемые в Toyota. Выпуск небольшими партиями идеально подходит для разработки программного обеспечения.
Однако идея Lean пока не получила широкого распространения среди разработчиков программного обеспечения; можно предположить, что обычно команды разработчиков довольно большие и нагрузка невелика.
В нашем случае все было наоборот: небольшая команда из 5 разработчиков разного уровня, сокращенные сроки и многоэтапная задача по внедрению нового программного продукта в крупной организации.
После завершения основного блока разработки, в ходе тестовой эксплуатации, а затем и опытной эксплуатации, мы столкнулись с рядом проблем.
Перегруженность разработчиков, большое количество повторных доработок уже реализованных задач, превышение продолжительности проекта, сложность прогнозирования сроков этапов разработки.
Сказался и разный уровень опыта разработчиков: одни выполняли поставленные задачи быстро, другие медленно, а у более опытных сотрудников периодически случались простои в разработке.
На влияние повлиял размер и инфраструктура заказчика — корпорации, содержащей большое количество крупных удаленных подразделений со своими особенностями бизнес-процессов.
Заказчик использует множество учетных систем и сервисов, с которыми необходимо было обеспечить «бесшовную» интеграцию.
Все процессы согласования и принятия управленческих решений осуществлялись в рамках внедренной системы.
Мы решили стабилизировать существующую ситуацию.
Внедрять полноценный Lean было уже поздно, да и опыта такого не было.
Мы решили адаптировать элементы Agile-Lean в текущий процесс управления проектами, и вот что из этого получилось.
Отправная точка
Изначально команда использовала несколько упрощенную методологию Scrum. Ниже приведено его описание.Набор артефактов:
- Бэклог проекта — это журнал требований, реализованных в рамках проекта, инцидентов, обнаруженных в ходе работы.
Обычно требования представляются в виде пользовательской истории.
Excel использовался как инструмент планирования верхнего уровня.
Там для удобства, чтобы все было в одном месте, диаграмма Ганта и диаграмма горения вынесены на отдельную страницу.
- Журнал спринта — это журнал требований и инцидентов, реализованных во время спринта.
- Скрам-доска.
В качестве инструмента использовалась доска Trello с расширением Plus For Trello для контроля трудоемкости.
- Менеджер проекта — сотрудник, который планирует процесс реализации требований и координирует действия всех участников до завершения проекта.
- Скрам-мастер обычно является руководителем группы разработки, управляет процессом разработки и отвечает за конечный результат работы разработчиков.
- Команда разработчиков состоит из опытных разработчиков и новичков, которые совершенствуют свои компетенции в процессе участия в проекте.
- Команда консультантов – это команда сотрудников, погруженных в бизнес-процессы заказчика.
Они готовят требования, взаимодействуют с конечными пользователями по вопросам требований и бизнес-процессов, консультируют конечных пользователей и тестируют разработанные функциональные возможности.
- Ежедневная встреча команды.
- Ретроспектива в конце спринта.
- Ежеквартальные ретроспективы.
- Продолжительность: 1 месяц.
- Ежедневные обновления продуктивной системы по мере завершения работы над блоками задач.
Во время карантина этот подход не удался.
Удаленная работа наложила отпечаток на эффективность работы команды, и мы столкнулись с трудностями, которые необходимо было решить.
«Хьюстон, у нас проблемы».
Заметили ли вы явные проблемы на втором месяце этапа ОП? (опытная эксплуатация), когда новые требования к дефектам стали перекрывать время, затраченное на плановые дефекты и пожелания.
Фактически мы стояли на месте.
Вероятность успеха, если все сделать вовремя, стремилась к 0.
Чтобы исправить ситуацию, было решено провести экстренную ретроспективу и собрать все существующие проблемы.
Были выявлены следующие точки улучшения:
- Сильная перегрузка разработчиков.
Снижается мотивация и возрастает напряжение в коллективе.
- Недостаточный качество финального кода , необходимо улучшить контроль качества.
- Многие задачи возвращаются на доработку; В процессе тестирования выявляются требования, не зафиксированные в описании задачи.
Описание требований нуждается в доработке.
- Разные направления работы выполняются разными группами разработчиков, взаимодействия по реализуемому функционалу недостаточно.
Дивизию надо оставить.
- Много времени уходит на разработку и доработку, консультанты бездействуют .
- Недостаточная компетентность разработчиков в администрировании и настройке ОС, тестовых стендах и стендах разработки.
Системные инженеры не всегда могут быстро переключаться между другими проектами.
Необходимо повышать компетенции разработчиков.
Но я готов рассмотреть вариант с четким и предсказуемым планом.
Именно в этот момент возникла идея использовать подход JIT для улучшения сложившейся ситуации.
Какие преимущества Agile-Lean мы постараемся использовать в нашем проекте?
Судя по описанию бережливого производства , мы можем выделить не только сильные, но и слабые стороны «бережливого развития».Сильные стороны:
- Получите результаты в ограниченное время.
- Устраните ненужные действия, которые могут снизить затраты.
- Расширение прав и возможностей команды разработчиков, чтобы помочь им принимать решения.
- Гибкость проекта, возможность подстроить его под требования заказчика.
- Повышенные требования к вовлеченности команды в процесс.
- Строгая документация, что несколько противоречит принципам Agile, когда продукт важнее документации.
- Необходимость детального планирования перед каждым спринтом.
- Необходимо выделить сотрудников, которые будут контролировать процесс, но не будут участвовать в производстве, что ослабит команду.
- Длительность процесса разработки может увеличиться, к этому нужно быть готовым.
Давайте адаптируем 7 принципов Lean
В соответствии с Бережливая методология разработки программного обеспечения , существует 7 основных принципов:- Устранение потерь.
- Акцент на обучении.
- Очень сильно запоздалое принятие решения.
- Очень сильно быстрая доставка клиенту.
- Мотивация команды.
Людям нужно нечто большее, чем просто список задач.
- Интеграция.
Стремитесь к целостной архитектуре.
Рефакторинг.
- Целостное видение.
Распространение принципов бережливого производства разработчиками.
«Думайте широко, действуйте быстро, делайте меньше ошибок; научиться быстро.
"
1. Уберите ненужные вещи
Под ненужностью мы подразумеваем следующее:- Все, что не представляет ценности для конечных пользователей.
Сюда входят неясные и несрочные требования, а также редко возникающие дефекты.
Мы откладываем их или отказываемся от них вообще после согласования с заказчиком.
- Ненужный код, дублирование кода.
- Неясные цели и требования.
Если такие задачи есть, то мы отправляем их на обработку и исключаем из Backlog. После детальной работы задачу можно поместить обратно в Backlog.
- Программные дефекты.
Любые дефекты появляются, когда код не проходит достаточное тестирование качества.
- Разработчик переключается между задачами.
Задача не должна быть слишком маленькой или слишком большой.
Крупные задачи приводят к низкому качеству проверок, мелкие увеличивают количество переключений, что в конечном итоге влияет на производительность.
- Детальная разработка требований и согласование описания требований с лидом разработки, дополнительная расшифровка требований тимлидом на понятный разработчикам язык.
- Мы ввели в Trello отдельный столбец «Технический долг», в который помещаются задачи с приоритетом, для устранения дублирующего кода, для доработки потенциально дефектных участков, обнаруженных в процессе разработки, и задач с неоптимальным кодом.
- Расширение взаимодействия между разработчиками, консультантами и руководителем команды.
Регулярные встречи 1:1, еженедельные встречи для мини-тренингов и небольших вебинаров, еженедельная упрощенная ретроспектива для обсуждения и решения текущих трудностей на месте.
- Формирование задач из набора требований в рамках одного реализуемого процесса.
Расчет: разработчик занят одной задачей не менее 8 часов.
2. Создавайте и делитесь знаниями
Сам процесс разработки генерирует новые знания, которые необходимо собирать и распространять.На каждую задачу было решено выделить дополнительное время проектирования, чтобы у разработчика было время подробно зафиксировать внесенные изменения.
Эта информация распространяется по команде разработчиков, консультанты используют ее для того, чтобы помимо основного требования протестировать функциональность, которая была затронута в ходе разработки.
3. Улучшение качества кода
Любые дефекты или несоответствие полученного функционала требованиям появляются, когда код не проходит достаточные проверки качества.Для повышения качества были приняты следующие предложения:
- Парное программирование.
Прямое взаимодействие тимлида и разработчиков, совместный анализ требований, проектирование, решение сложных задач.
- Степень готовности (Определение готовности, DoD).
Задача считается выполненной только тогда, когда разработчик обсудил реализацию с тимлидом и продемонстрировал разработанный функционал консультанту, закрепленному за этой задачей.
- Максимальное количество задач в работе (Work In Progress, WIP) для каждого разработчика.
Всего во время работы и тестирования у разработчика не может быть более 3-х задач.
Если разработчик отправил на тестирование все 3 задачи, то он обязан довести эти задачи до публикации в производственной системе, для этого он активно взаимодействует с консультантами, отвечает на возникающие вопросы, помогает в процессе тестирования.
4. Сократите спринты
Принципы гибкой разработки в первую очередь ориентированы на быструю реализацию требований.Ускорить разработку становится проще, если у вас есть стабильный рабочий процесс и конкретные сроки разработки и публикации.
Поэтому мы решили ввести ряд ограничений на спринт:
- Спринт длится 1 рабочую неделю.
- Спринт планируется по трудоемкости, которую может охватить команда разработчиков (на основе собранной статистики за предыдущие спринты).
Дополнительно выделяется время на устранение критических дефектов.
- Все реализованные улучшения тестируются на специальной копии производственной системы с производственными данными (PreProd), и только после успешного тестирования публикуются в производственной среде (Prod).
- Публикация на производственном стенде осуществляется только один раз в последний день спринта.
- После каждого спринта проводится сокращенная ретроспектива продолжительностью 30 минут для сбора обратной связи от команды.
5. Расширьте возможности команды
Этот принцип основан на том, что все члены команды проекта должны уважать друг друга.Когда что-то идет не так или идет не по плану, вам необходимо сосредоточиться на выявлении пробелов в рабочем процессе, которые могут привести к конфликтам и проблемам.
Мнение каждого участника процесса важно и должно учитываться другими участниками процесса.
Когда проблемная ситуация выявлена у одного участника, эта ситуация не должна быть только его проблемой.
Эту ситуацию следует считать общей проблемой и решать совместно.
Для реализации этого принципа проводятся встречи ответственных лиц проекта один на один с каждым членом команды, выявляются конфликтные ситуации, а затем выносятся на следующую ретроспективу как общую точку улучшения.
6. Не торопитесь с принятием решений
Если вы следуете принципам бережливого производства, вам необходимо понимать, что принятие решений с опозданием – это нормальная ситуация.По сути, у команды появляется больше времени для сбора и анализа данных по текущей проблеме.
Решение, принятое под влиянием эмоций, может привести к большому количеству проблем.
7. Регулярная оптимизация процессов
Регулярные ретроспективы в конце каждого спринта и сбор отзывов от всех членов команды проекта позволяют нам наметить шаги по улучшению.Чтобы улучшить процесс разработки, необходимо выделить роль, которая будет этим заниматься.
Для реализации этого принципа все задачи разработки были сняты с тимлида команды разработки и переданы команде, объём задач на спринт был сокращен, потому что команда разработки фактически была ослаблена.
Руководитель команды теперь выступает в роли наставника:
- Организует периодическое обучение и анализ сложных ситуаций.
- Инициирует передачу опыта между разработчиками.
- Помогает консультантам в формировании требований, а разработчикам в реализации этих требований.
- Занимаюсь развитием разработчиков и расширением их компетенций.
- Занимается подбором и разработкой инструментов, повышающих эффективность процесса разработки.
Основная проблема бережливого производства — сдвиг сроков
Принципы бережливого производства позволяют минимизировать многие негативные факторы, влияющие на процесс разработки, повысить мотивацию команды и качество реализуемых требований.Но необходимо учитывать, что Lean ориентирован на постоянное совершенствование в течение длительного периода времени; эффект проявится не сразу.
Нельзя забывать, что проект имеет определенные сроки, превышение которых может привести как к штрафным санкциям, так и к расторжению договора.
Это необходимо учитывать, если вы планируете внедрить Lean в текущий проект. Самый правильный вариант — помнить о перспективе внедрения «бережливой разработки» еще на этапе планирования проекта и выделять дополнительное время на построение процесса.
В нашем случае помогло то, что заказчик был готов идти навстречу, ему был важен конечный результат.
Полученные результаты
Процесс построения «бережливой разработки» занял около месяца, внесенные улучшения позволили решить существующие проблемы.Мы получили положительный отзыв от заказчика.
Сроки разработки вернули к заявленному плану за счет исключения ряда несущественных требований.
Загруженность разработчиков сократилась до нормативной, и появилось время на реализацию задач «технического долга».
Методология Lean Agile представляет собой ориентированную на клиента, адаптивную и гибкую систему и не предлагает жестких правил, которым необходимо следовать.
Вам всегда придется адаптировать эту методологию к вашим существующим процессам, требованиям проекта и характеристикам клиентов.
Но в любом случае необходимо воспитывать среди своих сотрудников профессионала.
Он будет сосредоточен на совершенствовании процесса разработки и мотивирован на улучшение своих навыков и навыков команды разработчиков.
Бережливое развитие основано на сотрудничестве.
Очень важно выстроить доверительное общение внутри коллектива, чтобы все участники понимали, что всегда могут получить помощь, их требования будут услышаны и приняты к обсуждению.
Для команды, работающей удаленно, необходимо выстроить взаимодействие:
- Обеспечить единую общую среду для общения и обмена знаниями.
- Организуйте совместные видеоконференции, желательно с камерой, чтобы увидеть эмоции участников.
- Не пренебрегайте неформальным общением.
Заказчику необходимо понимать процесс вашей разработки и публикации, а также понимать сроки реализации требований.
Клиенту важно и качество, и скорость разработки, поэтому необходимо найти с ним общий язык и совместно спланировать предстоящий спринт. В результате внедрения Lean были получены следующие количественные изменения:
- Скорость разработки стала предсказуемой и составила примерно 4 больших задачи (в среднем до 6 часов на задачу) на одного сотрудника в неделю; ранее мощность команды в среднем составляла 2-3 выполненных задачи в неделю на одного сотрудника.
Да, задачи большие и это не совсем Agile, но в нашей ситуации это помогло.
- Количество публикаций сократилось примерно вдвое.
На самом деле это существенная экономия времени, поскольку процесс публикации многоэтапный и предполагает участие большого количества сотрудников.
- Количество задач, возвращаемых на доработку, сократилось вдвое.
- Каждую неделю закрывались 3 крупные задачи из «техдолга».
- Количество дефектов, зафиксированных конечными пользователями, сократилось в три раза.
Спасибо за внимание, коллеги! Хотелось бы увидеть в комментариях ваш опыт использования Agile-Lean (или их адаптации) на ваших проектах.
Теги: #проекты #разработка #большие данные #руководитель команды #agile #agile результаты #разработка #планирование #agile development #ретроспектива #agilean #agilean
-
Интернет-Голосование По Html
19 Oct, 24 -
Китайские Часы-Телефон
19 Oct, 24