Напротив, прервать процесс в технологическом производстве легко, поскольку последствий практически никто не видит, хотя отрицательное влияние на продуктивность может оказаться намного сильнее, чем в материальном производстве. Например, инженер, назначенный сразу на несколько проектов, должен переключаться между задачами, а это каждый раз влечет дополнительные затраты на формирование контекста деятельности, на восстановление в памяти правил и целей конкретной задачи.
Исследования показали: время завершения даже простых действий, например по расстановке геометрических фигур, значительно снижается при многозадачном режиме. И, конечно, поскольку взаимодействие с технологическим потоком ценности гораздо более сложно в когнитивном плане, чем сортировка геометрических фигур, последствия деятельности в многозадачном режиме сильнее сказываются на времени выполнения.
Деятельность в многозадачном режиме можно ограничить, использовав для управления доску канбан, например, путем кодификации незавершенной работы (НзП — незавершенное производство) и установки максимального размера для каждой колонки или каждого рабочего места. Это ограничит количество карточек, одновременно находящихся в одной колонке.
Скажем, можно установить лимит НзП на тестирование в три карточки. И если в тестовой колонке уже есть три карточки, то нельзя добавить еще одну, пока одна из имеющихся не будет завершена или пока карточка не будет удалена из колонки «выполнение» и помещена обратно в очередь (то есть вернется в самую левую колонку). Никакую деятельность нельзя начать выполнять, пока на столе не появится карточка с задачей. Именно это гарантирует, что можно видеть все.
Доминика Деграндис, один из ведущих экспертов по использованию канбан в потоке создания ценности DevOps, заметила: «Управление размером очереди НзП — мощный инструмент, поскольку это один из немногих показателей времени выполнения заказа, а ведь в большинстве случаев мы не можем сказать, сколько времени займет та или иная операция, пока она не будет сделана».
Ограничение НзП также облегчает обнаружение проблем, препятствующих завершению[25]. Например, установив такое ограничение, мы обнаруживаем, что в данный момент нам нечего делать, поскольку мы ждем, что финальную точку поставит кто-то другой. Хотя на первый взгляд кажется заманчивым начать делать нечто новое (действуя по принципу «лучше хоть что-то, чем безделье»), гораздо полезнее понять, что именно приводит к задержкам, и помочь решить эту проблему. Дурная многозадачность зачастую появляется, когда инженеров назначают сразу на несколько проектов, в результате чего возникают проблемы с определением приоритетов.
Другими словами, как язвительно заметил Дэвид Андерсен, автор книги Kanban: Successful Evolutionary Change for Your Technology Business, «заканчивайте начинать, начинайте заканчивать».
Уменьшить размер заданийДругой ключевой компонент для создания гладкого и быстрого потока — выполнение задач небольшими порциями. До революции, произведенной идеей бережливого производства, обычной практикой считалось изготовление больших партий, особенно в случаях, когда переключение с одного вида продукции на другой требовало много времени или было дорогостоящим. Например, для изготовления крупных деталей кузовов автомобилей требуется установка на штамповочные машины больших и тяжелых штампов, и этот процесс может занять несколько дней. Когда переключение на другую продукцию настолько дорого стоит, часто стараются изготовить как можно больше деталей за раз, чтобы сократить число переналадок.
Однако большие размеры партий приводят к тому, что стремительно растет размер НзП и повышается нестабильность всех элементов производственной цепочки. В результате время выполнения заказов сильно увеличивается, а качество заметно ухудшается — если в детали обнаружен дефект, то в металлолом отправляется вся партия.
Один из ключевых уроков бережливого производства в том, что для сокращения времени выполнения заказа и повышения качества необходимо постоянно уменьшать размеры партий. Теоретический нижний предел размера — поштучное изготовление, когда каждая операция производится над одной единицей продукции[26].
Огромную разницу между большим и малым размерами партии можно увидеть на примере симуляции рассылки газеты, описанной в книге Джеймса Вумека и Дэниела Джонса «Бережливое производство. Как избавиться от потерь и добиться процветания вашей компании»[27].
Предположим, что в этом примере мы отправляем по почте десять буклетов и на каждый требуется четыре действия: сложить бумагу, вложить ее в конверт, заклеить конверт, поставить на конверте штамп.
Стратегия больших партий (то есть массовое производство) заключается в том, чтобы по очереди выполнять каждую из этих операций с десятью буклетами. Другими словами, сначала складывают десять листов бумаги, затем каждый из них помещают в конверт, заклеивают все десять конвертов и, наконец, проштамповывают их.
С другой стороны, при мелкосерийной стратегии (то есть поштучном потоке) все шаги, необходимые для отправки каждого буклета, выполняются последовательно, а затем действия повторяются с новым буклетом. Другими словами, сначала мы складываем листы одного экземпляра, вкладываем их в конверт, заклеиваем его и ставим штамп — только после этого можно переходить к следующему буклету.
Разница между использованием большого и малого размеров партии значительна (рис. 7). Предположим, каждая из четырех операций занимает десять секунд для каждого из десяти конвертов. При большом размере партии первый заклеенный и проштампованный конверт будет готов только через 310 секунд.
Рис. 7. Симуляция «игры в письма» (сложить, вложить, заклеить, проштамповать) (источник: Стефан Люйтен, запись «Поток с единичным размером партии: почему массовое производство — не самый эффективный способ что-то сделать» в блоге Medium.com от 8 августа 2014 г., Medium.com/@stefanluyten/single-piece-flow-5d2c2bec845b#.9°7sn74ns)
Еще хуже вот что: если на этапе заклеивания конверта окажется, что при складывании допущена ошибка, то она обнаружится только через 200 секунд после начала, и все десять буклетов надо будет заново сложить и опять поместить в конверты.
В отличие от этого при мелкосерийном производстве первый готовый конверт будет сделан через сорок секунд, в восемь раз быстрее по сравнению со стратегией больших партий. И если на первом шаге была допущена ошибка, то она распространится только на один буклет. Малый размер партии ведет к меньшему НзП, сокращению срока выполнения заказа, более быстрому обнаружению ошибок и минимизации количества переделок.
Плохие результаты, связанные с большим объемом партии, применимы к потоку создания технологической ценности в той же мере, что и к производственному. Представим, что существует годовой график выпуска ПО. Согласно ему весь годовой объем кода, написанного разработчиками, выпускается в производственную среду.
Так же как и при производстве материальных ценностей, большой размер партии может внезапно создать высокий уровень НзП, массовые нарушения деятельности на рабочих местах нижнего уровня и обусловить низкое качество результатов. Это подтверждает общий опыт: чем больше изменений в производственных процессах, тем труднее выявляются и устраняются производственные ошибки и тем дольше происходит восстановление производства.
В своем блоге Startup Lessons Learned Эрик Райс утверждает: «Размер партии — это количество продукции, передающееся как единое целое с одного этапа на другой в ходе процесса разработки (или DevOps). В случае программного обеспечения самый простой вариант видимого пакета — код. Каждый раз, когда инженер загружает написанный код в систему контроля версий, создается партия определенного объема. Существует множество