Разработка по Lean. Приятно познакомиться
Если вы не жили без связи последние лет 5-10, то о таких терминах как lean, agile и scrum, определенно, слышали. Их сейчас так много повсюду, что кажется, даже кофе следует делать по гибким методологиям.
Hirin.co уже делал краткий обзор особенностей разработки по Scrum. Теперь будем рады сделать вводную в Lean или бережливое производство в IT.
Что такое Lean?
Интерес к гибким методологиям не случаен. Ключевое преимущество бизнесов сегодня - умение быстро выпустить продукт. Соответственно, чтобы выжить, компании вынуждены улучшать эффективность, тщательнее распределять ресурсы, меньше отвлекаться и больше давать. В общем, делать то, для чего придумали Lean.
Начнем с определения. Lean - это философия производства продуктов быстрее и с меньшими затратами. Нашим англоязычным коллегам повезло: они могут использовать термин “waste”, близкий к оригинальному “mooda”. Поскольку этот самый waste бывает как полезным, так и бесполезным, в данной статье мы используем выражения “излишества” или “затраты” (имея в виду затраты времени и ресурсов).
Lean подход улучшает традиционную разработку продукта за счет того, что устраняет беспорядок в коммуникациях и создает в организации культуру постоянных улучшений. А это, в свою очередь, заряжает людей и приводит к большей эффективности.
Многие компании до сих пор выстраивают свою стратегию вокруг производственных мощностей, т.е. следят, чтобы все были заняты. Что ж, это значит, что организация не готова встречаться с экстренной необходимостью (итак все ресурсы заняты) и показывает худшие результаты в долгосрочной перспективе. Ну и мы все знаем, что быть занятым и быть эффективным - разные вещи.
Особенность Lean в том, что он меняет процесс. Меняются приоритеты важности. Тут потребуется здравый смысл и даже некоторая смелость, чтобы остановить задачи, которые уже в процессе, и начать новые, направленные на создание ценности.
Происхождение и внедрение Lean
Lean и Agile в разработке программного обеспечения возникли как ответ на плановую структуру “водопада” (waterfall). Правда, Lean пришел к нам из промышленного мира, а именно из Toyota Production System, развернутой в пятидесятых. Середина XX века - время, когда Япония отстраивалась после второй мировой войны. Чтобы выжить, компании Toyota пришлось поменять подход на такой, который сфокусировался на создании ценности и исключении излишеств. Потом его назвали “бережливым производством”. Концепция стала известной благодаря американским журналистам и исследователям, которые пытались понять, почему японский автомобильный рынок превзошел американский (хотя в довоенные времена японский автомобиль был синонимом ненадежности и дороговизны).
В IT-мир Lean пришел благодаря Мэри и Тому Поппендик (Mary and Tom Poppendieck), которые в 2003 году выпустили книгу “Lean Software Development, an Agile Toolkit”. Там они сформулировали ценности и практики Lean и зафиксировали 7 основных принципов:
- Избегайте лишнего. В основе Lean - ценность. Излишества - это всё, что не создает ценность. При этом, излишества могут быть нужными, если они не добавляют ценность, а помогают строить процесс. К ним относятся формальности, через которые должна пройти команда. А вот ненужные излишества следует исключать сразу. К ним относятся:
- Частично сделанная работа (неиспользуемые код, дизайн, спецификации);
- Дополнительный функционал (который не несет решающей ценности клиенту);
- Переучивание;
- Перекидывание задач;
- Переключение между задачами;
- Отсрочки (в том числе, в принятии решения);
- Дефекты (некачественно написанный функционал, ошибки в документации).
Это лишь некоторые из потерь в области IT производства.
- Встраивайте качество. Quality assurance это не столько про то, чтобы составить багрепорт или починить сломанное, но больше о предупреждении потерь. TDD, continuous integration, рефакторинг - эти и другие техники используются Lean-командами, чтобы давать клиентам качественный продукт.
- Создавайте знания. Разработка ПО просто-таки построена на системе повышения квалификации. Разработчики в системе Lean учатся постоянно. Итеративный подход к работе позволяет им воплощать изученное в коде и регулярно улучшать наработки. Для распространения знаний в Lean используются парное программирование, код-ревью, wiki, документирование, сессии обмена знаниями, кросс-командные метрики и так далее.
- Решайте медленно. Звучит контринтуитивно. Обычно деловой подход предполагает быстрое принятие решений. Но этот принцип Lean предлагает нам не прокрастинацию. Он как бы продолжает предыдущий пункт - чем дольше мы учимся, тем больше у нас знаний для лучшего решения.
- Доставляйте быстро. Строить большие сложные планы заранее и создавать монолитные системы с множеством ненужных вещей - это не про современное ПО. Подобные подходы не совместимы с переменами и потому губительны для постоянно изменяющегося бизнеса. Lean предлагает сменить их на модель MVP (minimum viable product). Это значит: строить быстро, включать небольшой функционал, выводить продукт на рынок как можно раньше и следить за реакцией. Такой подход предполагает, что мы остановим все дела, которые не дают ценность, а решения будут приниматься на основании обратной связи от пользователей из реального мира. Быстрая доставка - ключевое преимущество, но скорость не должна достигаться за счет качества.
- Уважайте людей. И тех, кто относится к вашим клиентам, и свою команду разработки. Уважение к пользователям проявляется как удобные интерфейсы и быстрая реакция на отзывы. Внутри команды важно заряжать людей, а не контролировать их. Также следует создавать благоприятное для работы окружение (или “гемба”).
- Оптимизируйте всю цепочку ценности. Важно перестраивать весь процесс, а не только частные случаи. Работа с частными случаями ведет к случайностям (чаще - неприятным) во время эксплуатации.
Почему lean применим для IT разработки
Принципы Lean обеспечивают ряд преимуществ. Например, это такие важные вещи как:
- Видимость – нельзя управлять тем, что не измерено и нельзя измерить то, что не видно. Визуализация играет ключевую роль в Lean, поскольку она делает видимой не только систему, но и ее компоненты.
- Коммуникация – ежедневные встречи, маленькие команды, личная ответственность за процесс и минимальные задержки в принятии решений делают коммуникацию эффективнее. Продуктивность от этого только растет.
- Фокус – если сосредоточиться на ключевых приоритетах, то можно избежать многозадачности и дополнительных дел (а это все - форма излишеств). Если делать кучу всего одновременно, то производство станет затягиваться, а проблемы - копиться. Фокусировка рационализирует и упрощает разработку.
- Быстрый отклик - лучше работать над небольшими объектами, которые могут выйти в релиз независимо друг от друга и принести ценность клиенту.Это позволяет получить быстрый отклик, а с ним - и понимание того, что пошло не так и что с этим всем теперь делать. Обратная связь также спасает от перепроизводства (лишнего функционала) и от потерь, связанных с ним.
- Командная работа – когда люди по-настоящему включены в работу, они чувствуют себя ответственными и ведут себя соответственно. Сотрудники больше дают, стараются постоянно улучшать то, с чем работают, учатся и вместе растят коллектив, продукт и компанию.
Что такое анти-lean
И хотя Lean уже стал расхожим словечком, внедряют его по-разному. Чаще - даже в формате анти-lean, из-за чего результат получается далеким от оригинала. Так бывает из-за следующих ошибок:
- Lean воспринимают как инструмент. Да, инструментов тут хватает для разных задач. Взять те же PDCA, A3’s, канбан или Шесть Сигм. Но сам Lean это философия и стратегия, которую следует внедрять по всей организации. Только такой подход приведет к успеху.
- Не хватает мышления в стиле “кайдзен”. С японского “кайдзен” переводится как “постоянное улучшение”. Это неизменная часть Lean. Это понятие подразумевает маленькие ежедневные шаги, которые со временем приведут к крупным улучшениям. Такой подход предполагает, что все сотрудники будут вовлечены. Интересно, что ключевые преимущества кайдзен становятся и основными рисками для Lean. Во-первых, потому что сложно чувствовать счастье и мотивацию от маленьких, порой почти не видимых результатов. Люди обычно хотят всё и сразу. И все же штука в том, что умение делать маленькие шажочки, удовлетворяться промежуточными результатами и черпать мотивацию из будущих успехов. Они оплатятся многократно. И, конечно, кайдзен должен быть частью культуры в компании, а не просто инициативой пары человек.
- Зацикленность на сокращении. Избавляться от лишнего (в том числе, в финансовом и кадровом плане) - одна из главных задач Lean. Но было бы большой ошибкой превращать это в самоцель. Lean это философия построенная на ценности и эффективности, а не на бездумном сокращении всего и вся. Экономия это вишенка на торте, а не сам торт.
- Ожидают готовые решения для бизнеса. Есть такой термин в отношении компаний, которые внедряют бережливое производство - “начать путешествие по Lean”. И это логично. Во-первых, Lean это путь, а не конечная станция. Это живая система, а не кристаллизовавшееся решение. Все принципы этой философии требуют открытого мышления. Ведь люди попросту не могут принимать верные решения, учиться и быстро производить, если утонули в бюрократической рутине и бездумно следуют инструкции. Вторая важная часть это “начать”. Она напоминает нам о постоянном поиске способа работы. Lean никогда не предлагал незыблемых правил. Как показывает практика, только адаптация к вашему уникальному бизнес-контексту, постоянный поиск оптимального хода процессов и итеративные улучшения делают путешествие успешным.
Lean сложен и прост одновременно. Его суть можно свести к простым правилам: удалять излишки, не выделять ресурсы пока это не имеет смысла, не строить целое приложение если не известно - есть ли интерес от целевой аудитории, делать меньший функционал, получать обратную связь и только потом строить дальше. Если еще проще: не замахивайтесь далеко пока не провалидировали интерес, а валидируйте как можно чаще. Просто? Кажется, что да. Вся сложность в том, что нет готового рецепта во внедрении. Так что приготовьтесь, отправляйтесь в путь и стройте подходящий для вашего бизнеса Lean.